• Announcement banner
  • App data policies (EAP)
  • Application roles
  • Audit records
  • Avatars
  • Classification levels
  • Dashboards
  • Filters
  • Filter sharing
  • Group and user picker
  • Groups
  • Issues
  • UI modifications (apps)
  • Issue attachments
  • Issue comments
  • Issue comment properties
  • Issue fields
  • Issue field configurations
  • Issue custom field contexts
  • Issue custom field options
  • Issue custom field options (apps)
  • Issue custom field values (apps)
  • Issue custom field configuration (apps)
  • Issue navigator settings
  • Issue notification schemes
  • Issue priorities
  • Issue properties
  • Issue resolutions
  • Issue security level
  • Issue security schemes
  • Issue types
  • Issue type schemes
  • Issue type screen schemes
  • Issue type properties
  • Issue votes
  • Issue watchers
  • Issue worklogs
  • Issue worklog properties
  • Jira expressions
  • Jira settings
  • JQL
  • JQL functions (apps)
  • Labels
  • License metrics
  • Myself
  • Permissions
  • Permission schemes
  • Projects
  • Project avatars
  • Project categories
  • Project classification levels
  • Project components
  • Project email
  • Project features
  • Project key and name validation
  • Project permission schemes
  • Project properties
  • Project roles
  • Project role actors
  • Project types
  • Project versions
  • Screens
  • Screen tabs
  • Screen tab fields
  • Screen schemes
  • Server info
  • Status
  • Tasks
  • Time tracking
  • Users
  • User properties
  • Webhooks
  • Workflows
  • Workflow transition rules
  • Workflow schemes
  • Workflow scheme project associations
  • Workflow scheme drafts
  • Workflow statuses
  • Workflow status categories
  • Workflow transition properties
  • App properties
  • Dynamic modules
  • App migration
  • Service Registry
Cloud
Jira Cloud platform / Reference / REST API v2

Issue properties

Postman Collection
OpenAPI

This resource represents issue properties, which provides for storing custom data against an issue. Use it to get, set, and delete issue properties as well as obtain details of all properties on an issue. Operations to bulk update and delete issue properties are also provided. Issue properties are a type of entity property.

POST

Bulk set issues properties by list

Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified along with up to 10,000 issues on which to set or update that list of entity properties.

The value of the request body must be a valid, non-empty JSON. The maximum length of single issue property value is 32768 characters. This operation can be accessed anonymously.

This operation is:

  • transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are updated.
  • asynchronous. Follow the location link in the response to determine the status of the task and use Get task to obtain subsequent updates.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredWRITE

ClassicRECOMMENDED:write:jira-work
Granular:write:issue.property:jira

Request

Request bodyapplication/json

Issue properties to be set or updated with values.

entitiesIds

array<integer>

properties

object

Responses

Returned if the operation is successful.

POST/rest/api/2/issue/properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; var bodyData = `{ "entitiesIds": [ 2154 ], "properties": {} }`; const response = await api.asUser().requestJira(route`/rest/api/2/issue/properties`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: bodyData }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.text());
POST

Bulk set issue properties by issue

Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up to 100 issues included in the request.

The value of the request body must be a valid, non-empty JSON.

This operation is:

  • asynchronous. Follow the location link in the response to determine the status of the task and use Get task to obtain subsequent updates.
  • non-transactional. Updating some entities may fail. Such information will available in the task result.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredWRITE

ClassicRECOMMENDED:write:jira-work
Granular:write:issue.property:jira

Request

Request bodyapplication/json

Details of the issue properties to be set or updated. Note that if an issue is not found, it is ignored.

issues

array<IssueEntityPropertiesForMultiUpdate>

Responses

Returned if the operation is successful.

POST/rest/api/2/issue/properties/multi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; var bodyData = `{ "issues": [ { "issueID": 1000, "properties": { "myProperty": { "owner": "admin", "weight": 100 } } }, { "issueID": 1001, "properties": { "myOtherProperty": { "cost": 150, "transportation": "car" } } } ] }`; const response = await api.asUser().requestJira(route`/rest/api/2/issue/properties/multi`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: bodyData }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.text());
PUT

Bulk set issue property

Sets a property value on multiple issues.

The value set can be a constant or determined by a Jira expression. Expressions must be computable with constant complexity when applied to a set of issues. Expressions must also comply with the restrictions that apply to all Jira expressions.

The issues to be updated can be specified by a filter.

The filter identifies issues eligible for update using these criteria:

  • entityIds Only issues from this list are eligible.

  • currentValue Only issues with the property set to this value are eligible.

  • hasProperty:

    • If true, only issues with the property are eligible.
    • If false, only issues without the property are eligible.

If more than one criteria is specified, they are joined with the logical AND: only issues that satisfy all criteria are eligible.

If an invalid combination of criteria is provided, an error is returned. For example, specifying a currentValue and hasProperty as false would not match any issues (because without the property the property cannot have a value).

The filter is optional. Without the filter all the issues visible to the user and where the user has the EDIT_ISSUES permission for the issue are considered eligible.

This operation is:

  • transactional, either all eligible issues are updated or, when errors occur, none are updated.
  • asynchronous. Follow the location link in the response to determine the status of the task and use Get task to obtain subsequent updates.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredWRITE

ClassicRECOMMENDED:write:jira-work
Granular:read:jira-expressions:jira, write:issue.property:jira

Request

Path parameters

propertyKey

string

Required

Request bodyapplication/json

expression

string

filter

IssueFilterForBulkPropertySet

value

any

Responses

Returned if the request is successful.

PUT/rest/api/2/issue/properties/{propertyKey}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; var bodyData = `{ "filter": { "currentValue": { "owner": "admin", "weight": 50 }, "entityIds": [ 10100, 100010 ], "hasProperty": true }, "value": { "owner": "admin", "weight": 100 } }`; const response = await api.asUser().requestJira(route`/rest/api/2/issue/properties/{propertyKey}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: bodyData }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.text());
DEL

Bulk delete issue property

Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria.

The criteria the filter used to identify eligible issues are:

  • entityIds Only issues from this list are eligible.
  • currentValue Only issues with the property set to this value are eligible.

If both criteria is specified, they are joined with the logical AND: only issues that satisfy both criteria are considered eligible.

If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT_ISSUES permission for the issue are considered eligible.

This operation is:

  • transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are deleted.
  • asynchronous. Follow the location link in the response to determine the status of the task and use Get task to obtain subsequent updates.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredDELETE

ClassicRECOMMENDED:write:jira-work
Granular:delete:issue.property:jira

Request

Path parameters

propertyKey

string

Required

Request bodyapplication/json

currentValue

any

entityIds

array<integer>

Responses

Returned if the request is successful.

DEL/rest/api/2/issue/properties/{propertyKey}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; var bodyData = `{ "currentValue": "deprecated value", "entityIds": [ 10100, 100010 ] }`; const response = await api.asUser().requestJira(route`/rest/api/2/issue/properties/{propertyKey}`, { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, body: bodyData }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.text());
GET

Get issue property keys

Returns the URLs and keys of an issue's properties.

This operation can be accessed anonymously.

Permissions required: Property details are only returned where the user has:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredREAD

ClassicRECOMMENDED:read:jira-work
Granular:read:issue.property:jira

Request

Path parameters

issueIdOrKey

string

Required

Responses

Returned if the request is successful.

application/json

PropertyKeys

List of property keys.

GET/rest/api/2/issue/{issueIdOrKey}/properties
1 2 3 4 5 6 7 8 9 10 11 12 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; const response = await api.asUser().requestJira(route`/rest/api/2/issue/{issueIdOrKey}/properties`, { headers: { 'Accept': 'application/json' } }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.json());
200Response
1 2 3 4 5 6 7 8 { "keys": [ { "key": "issue.support", "self": "https://your-domain.atlassian.net/rest/api/2/issue/EX-2/properties/issue.support" } ] }
GET

Get issue property

Returns the key and value of an issue's property.

This operation can be accessed anonymously.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredREAD

ClassicRECOMMENDED:read:jira-work
Granular:read:issue.property:jira

Request

Path parameters

issueIdOrKey

string

Required
propertyKey

string

Required

Responses

Returned if the request is successful.

application/json

EntityProperty

An entity property, for more information see Entity properties.

GET/rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey}
1 2 3 4 5 6 7 8 9 10 11 12 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; const response = await api.asUser().requestJira(route`/rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey}`, { headers: { 'Accept': 'application/json' } }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.json());
200Response
1 2 3 4 5 6 7 { "key": "issue.support", "value": { "system.conversation.id": "b1bf38be-5e94-4b40-a3b8-9278735ee1e6", "system.support.time": "1m" } }
PUT

Set issue property

Sets the value of an issue's property. Use this resource to store custom data against an issue.

The value of the request body must be a valid, non-empty JSON blob. The maximum length is 32768 characters.

This operation can be accessed anonymously.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredWRITE

ClassicRECOMMENDED:write:jira-work
Granular:write:issue.property:jira

Request

Path parameters

issueIdOrKey

string

Required
propertyKey

string

Required

Request bodyapplication/json

The value of the property. The value has to be a valid, non-empty JSON value. The maximum length of the property value is 32768 bytes.

any

Responses

Returned if the issue property is updated.

application/json

any

PUT/rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; var bodyData = `{}`; const response = await api.asUser().requestJira(route`/rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey}`, { method: 'PUT', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: bodyData }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.json());
DEL

Delete issue property

Deletes an issue's property.

This operation can be accessed anonymously.

Permissions required:

Data Security Policy: Not exempt from app access rules
Scopes

Connect app scope requiredDELETE

ClassicRECOMMENDED:write:jira-work
Granular:delete:issue.property:jira

Request

Path parameters

issueIdOrKey

string

Required
propertyKey

string

Required

Responses

Returned if the request is successful.

DEL/rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey}
1 2 3 4 5 6 7 8 9 10 // This sample uses Atlassian Forge // https://developer.atlassian.com/platform/forge/ import api, { route } from "@forge/api"; const response = await api.asUser().requestJira(route`/rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey}`, { method: 'DELETE' }); console.log(`Response: ${response.status} ${response.statusText}`); console.log(await response.text());

Rate this page: