Open Context Protocol is live! 🚀 Read the launch post
createCustomField

createCustomField

Create custom field

Details

  • Method: POST
  • Path: /rest/api/3/field
  • Operation ID: createCustomField

Parameters

{
  "description": {
    "description": "The description of the custom field, which is displayed in Jira.",
    "required": false,
    "location": "body",
    "type": "string"
  },
  "name": {
    "description": "The name of the custom field, which is displayed in Jira. This is not the unique identifier.",
    "required": true,
    "location": "body",
    "type": "string"
  },
  "searcherKey": {
    "description": "The searcher defines the way the field is searched in Jira. For example, *com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher*.  \nThe search UI (basic search and JQL search) will display different operations and values for the field, based on the field searcher. You must specify a searcher that is valid for the field type, as listed below (abbreviated values shown):\n\n *  `cascadingselect`: `cascadingselectsearcher`\n *  `datepicker`: `daterange`\n *  `datetime`: `datetimerange`\n *  `float`: `exactnumber` or `numberrange`\n *  `grouppicker`: `grouppickersearcher`\n *  `importid`: `exactnumber` or `numberrange`\n *  `labels`: `labelsearcher`\n *  `multicheckboxes`: `multiselectsearcher`\n *  `multigrouppicker`: `multiselectsearcher`\n *  `multiselect`: `multiselectsearcher`\n *  `multiuserpicker`: `userpickergroupsearcher`\n *  `multiversion`: `versionsearcher`\n *  `project`: `projectsearcher`\n *  `radiobuttons`: `multiselectsearcher`\n *  `readonlyfield`: `textsearcher`\n *  `select`: `multiselectsearcher`\n *  `textarea`: `textsearcher`\n *  `textfield`: `textsearcher`\n *  `url`: `exacttextsearcher`\n *  `userpicker`: `userpickergroupsearcher`\n *  `version`: `versionsearcher`\n\nIf no searcher is provided, the field isn't searchable. However, [Forge custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-) have a searcher set automatically, so are always searchable.",
    "required": false,
    "location": "body",
    "type": "string",
    "enum": [
      "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:daterange",
      "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange",
      "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber",
      "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:numberrange",
      "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher",
      "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher"
    ]
  },
  "type": {
    "description": "The type of the custom field. These built-in custom field types are available:\n\n *  `cascadingselect`: Enables values to be selected from two levels of select lists (value: `com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect`)\n *  `datepicker`: Stores a date using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:datepicker`)\n *  `datetime`: Stores a date with a time component (value: `com.atlassian.jira.plugin.system.customfieldtypes:datetime`)\n *  `float`: Stores and validates a numeric (floating point) input (value: `com.atlassian.jira.plugin.system.customfieldtypes:float`)\n *  `grouppicker`: Stores a user group using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker`)\n *  `importid`: A read-only field that stores the ID the issue had in the system it was imported from (value: `com.atlassian.jira.plugin.system.customfieldtypes:importid`)\n *  `labels`: Stores labels (value: `com.atlassian.jira.plugin.system.customfieldtypes:labels`)\n *  `multicheckboxes`: Stores multiple values using checkboxes (value: ``)\n *  `multigrouppicker`: Stores multiple user groups using a picker control (value: ``)\n *  `multiselect`: Stores multiple values using a select list (value: `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes`)\n *  `multiuserpicker`: Stores multiple users using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker`)\n *  `multiversion`: Stores multiple versions from the versions available in a project using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:multiversion`)\n *  `project`: Stores a project from a list of projects that the user is permitted to view (value: `com.atlassian.jira.plugin.system.customfieldtypes:project`)\n *  `radiobuttons`: Stores a value using radio buttons (value: `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons`)\n *  `readonlyfield`: Stores a read-only text value, which can only be populated via the API (value: `com.atlassian.jira.plugin.system.customfieldtypes:readonlyfield`)\n *  `select`: Stores a value from a configurable list of options (value: `com.atlassian.jira.plugin.system.customfieldtypes:select`)\n *  `textarea`: Stores a long text string using a multiline text area (value: `com.atlassian.jira.plugin.system.customfieldtypes:textarea`)\n *  `textfield`: Stores a text string using a single-line text box (value: `com.atlassian.jira.plugin.system.customfieldtypes:textfield`)\n *  `url`: Stores a URL (value: `com.atlassian.jira.plugin.system.customfieldtypes:url`)\n *  `userpicker`: Stores a user using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:userpicker`)\n *  `version`: Stores a version using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:version`)\n\nTo create a field based on a [Forge custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-), use the ID of the Forge custom field type as the value. For example, `ari:cloud:ecosystem::extension/e62f20a2-4b61-4dbe-bfb9-9a88b5e3ac84/548c5df1-24aa-4f7c-bbbb-3038d947cb05/static/my-cf-type-key`.",
    "required": true,
    "location": "body",
    "type": "string"
  }
}

Response Schema

{
  "additionalProperties": false,
  "description": "Details about a field.",
  "properties": {
    "clauseNames": {
      "description": "The names that can be used to reference the field in an advanced search. For more information, see [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ).",
      "items": {
        "type": "string"
      },
      "type": "array",
      "uniqueItems": true
    },
    "custom": {
      "description": "Whether the field is a custom field.",
      "type": "boolean"
    },
    "id": {
      "description": "The ID of the field.",
      "type": "string"
    },
    "key": {
      "description": "The key of the field.",
      "type": "string"
    },
    "name": {
      "description": "The name of the field.",
      "type": "string"
    },
    "navigable": {
      "description": "Whether the field can be used as a column on the issue navigator.",
      "type": "boolean"
    },
    "orderable": {
      "description": "Whether the content of the field can be used to order lists.",
      "type": "boolean"
    },
    "schema": {
      "allOf": [
        {
          "$ref": "#/components/schemas/JsonTypeBean"
        }
      ],
      "description": "The data schema for the field."
    },
    "scope": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Scope"
        }
      ],
      "description": "The scope of the field."
    },
    "searchable": {
      "description": "Whether the content of the field can be searched.",
      "type": "boolean"
    }
  },
  "type": "object",
  "xml": {
    "name": "field"
  }
}

Usage

from ocp_agent import OCPAgent

agent = OCPAgent()
await agent.register_api('jira')

# Call this tool
result = await agent.call_tool('createCustomField', {
    # Add required parameters here
})