Last updated Nov 20, 2024

Changelog

This page includes release notes and updates for Jira Cloud app developers. Use this page to keep track of upcoming changes, deprecation notices, new features, and feature updates from Jira Cloud Platform.

Forge changelog

For updates about changes to the Forge platform, see the Forge changelog in the Forge documentation.

Go to our developer community to ask questions. You may also be interested in the What's New blog for Atlassian Cloud where details of major changes that affect all users of the Jira Cloud products are announced.

20 November 2024

Announcement New Jira Forge product event for project versions

We’re happy to introduce a new Jira Forge product event:

  • Project version deleted - avi:jira:deleted:version

Follow the link above to read the event’s documentation.

Added UI modifications now support the original estimate field on Issue view

UI modifications, the Forge module that allows apps to modify fields, now supports the original estimate field on the Issue view.

For more information, see the list of supported fields for Issue view.

18 November 2024

Removed Released: Loading styles from Connect CDN instead of inline

We’ve stopped injecting stylesheets for Connect apps via inline styles, in favour of loading from the Connect CDN. This affects the Theming API and dynamic content macros that supported the legacy Confluence editor.

We originally announced this 6 months ago, in line with our standard deprecation policy. It is now live for https://developer.atlassian.com/cloud/confluence/developer-canary-program tenants, and will roll out to all customers widely throughout this week.

If your app doesn’t use the above Connect features, or doesn’t use a Content Security Policy (CSP) for style-src, no action is required. Otherwise, please read the details here or see https://developer.atlassian.com/platform/marketplace/security-requirements/#connect-apps on how to modify your CSP to support these changes.

More details

Action required

To support these changes in your app, if you're using a Content Security Policy that sets the style-src policy, you must add the Connect CDN (https://connect-cdn.atl-paas.net) to your policy to allow these stylesheets to be injected. It's safe to remove unsafe-inline from your policy if you've been using it up until now.

Additional context

The stylesheets mentioned here were included automatically via the Connect JS script, not manually by the app vendor. There are two circumstances under which Connect injected stylesheets into your app:

  1. The first is only for apps which opted in to the Theming API.

    1. The theme stylesheets previously loaded via an inline stylesheet, which forced vendors to adopt the insecure unsafe-inline policy, and is the main motivation for this change.

  2. The second location is only for dynamic content macros.

    1. We injected a stylesheet with CSS classes representing colors from the legacy Confluence editor.

    2. This happened without opt-in, to be backwards-compatible with macros created in the legacy editor.

    3. This injection was done via CSSOM, not inline styles, and therefore isn’t impacted by style-src CSP rules currently. However, it is also now being served from the CDN.

To summarise, all styles are now being loaded from the CDN, and the inline/CSSOM methods have been removed.

Early Access Atlassian’s new navigation now available in beta

The navigation changes to Jira, JSM, JPD, and Atlassian Home have now moved from EAP to Beta. For partners, this is an extension of the previously announced EAP. This extended EAP will enable partners to test the new navigation and assess how apps will adapt to the proposed changes. Unlike the previous EAP, the design direction is now near final, so we recommend partners start adopting the new navigation.

As part of the extended EAP, we’ve set up a dedicated group on CDAC where you can discuss these changes. To join the beta launch, register through the EAP form.

More details

Please visit the community post https://community.atlassian.com/t5/Navigation-Refresh-articles/What-s-changing-in-Apps-with-Atlassian-s-Beta-launch-of-New/ba-p/2871925 where you will find detailed information about the changes, recommendations, and a comprehensive FAQ section tailored for our partners.

15 November 2024

Removed History changelogs for Epic Link and Parent Link field values are removed

Progressive Rollout: This change will be applied to all sites over the coming weeks.

Following the previous deprecation notice, changelogs for Epic Link and Parent Link field values are no longer available from Jira Cloud REST API. We recommend using the IssueParentAssociation changelog items instead.

For webhooks in Jira, we recommend consuming the IssueParentAssociation items, as mentioned in this community announcement (see Change 6).

14 November 2024

Announcement Support for string, object, and number custom fields on the new Transition view

Jira Forge now supports string, object, and number custom fields on the new Transition view. Note that you have to enable the view on your instance to be able to use it.

For more information about the Transition view, go to our documentation.

10 November 2024

Deprecation Notice Third-party package mirrors will no longer be available

We are removing mirrors of third-party packages such as maven-central from packages.atlassian.com

More details

We're updating how we provide packages for customers and partners to develop with our platforms. Starting February 1, 2025, we will discontinue providing third-party packages on packages.atlassian.com. Instead, customers and partners must fetch these packages directly from the original upstream repositories.

For details on how this change affects you and for guidance on migration, please refer to the documentation available at http://developer.atlassian.com .

5 November 2024

Announcement Extending forms in Jira business projects to software projects

We are extending the forms available in Jira business projects today, to Jira software projects. This will give customers a new way to intake work from stakeholders. Only Jira and project admins (or users with project admin permissions) will be able to create, edit, and delete forms. Forms will be available for all licence editions and will be accessible from a projects navigation. They can also be toggled on/off in project settings. Forms are scoped to a single project and issue type within that project.

In addition to this project, we will be adding a number of other enhancements to forms in the coming months.

These include:

  • L1+ (epic level and above) issue type support

  • Required fields

  • Field descriptions

  • Conditional logic

There are no specific APIs or UI extension points currently available in Connect or Forge for forms today.

4 November 2024

Announcement Dashboard items migration from Connect to Forge

You can now migrate existing Connect dashboard items to the Forge dashboard gadget module.

This change allows your app to render existing Connect dashboard items as Forge dashboard gadgets when you adopt a Forge gadget with a key matching the Connect dashboard item.

See Migrate Jira modules from Connect to Forge for more information, including how to preserve the Connect dashboard item’s data when migrating it to a Forge module.

31 October 2024

Deprecation Notice Deprecation of JQL search and Evaluate expression endpoints

What is changing?

We’re deprecating the following Jira Platform REST endpoints:

  • GET /rest/api/3/search - Search for issues using JQL (GET)

  • POST /rest/api/3/search - Search for issues using JQL (POST)

  • POST /rest/api/3/search/id - Search issue IDs using JQL

  • POST /rest/api/3/expression/eval - Evaluate Jira expression

There is a deprecation period of 6 months, and these endpoints will be removed after May 1, 2025.

Why are we making this change?

Over the years, Jira has grown its customer base, and people are using Jira on a larger scale and in more complex ways. JQL is one of the core capabilities of Jira, and we’ve noticed that the JQL APIs, which used to work very well, are now being challenged by the scale and complexity of how people are using the APIs. JQL needs to evolve to remain reliable, performant, and scalable to serve bigger, more complex use cases.

The mentioned endpoints expose parameters that aren't compatible with the new JQL service. Therefore, we’re replacing them with compatible ones.

For a list of replacement endpoints, and other information, see More details below.

More details

What are the replacement endpoints?

Here is a list of recommended replacements.

Deprecated Endpoint

New Endpoint

  • GET /rest/api/3/searchhttps://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-get

https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-get

  • POST /rest/api/3/searchhttps://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-post

https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post

  • POST /rest/api/3/search/idhttps://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-id-post

No direct replacement, similar behaviour can be achieved with

https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post

https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jira-expressions#api-rest-api-3-expression-evaluate-post

What are the differences between the old and new endpoints?

We have tried to make the new endpoints as compatible as possible with the previous ones, however there are some breaking changes:

  • By default, the endpoint will only return Issue IDs. Unless requested, all other issue fields will be omitted in the Issue objects. You can request them by using the fields property.

  • The endpoint doesn’t provide immediate search after write consistency. Search results may not incorporate recent changes made by users. If this behaviour is important for your case, please refer to the migration path at the end of this page. The delay for updates to be visible in search is dependent on various factors. The majority of modifications are typically visible within seconds. However, operations that impact numerous issues, such as lexorank rebalancing or bulk editing, may require more time to complete.

  • The validationMode parameter is removed and validation will work as none.

  • We’ll replace random page access with a continuation token API. This means you won’t be able to get multiple pages at the same time with parallel threads. startAt parameter will be replaced with nextPageToken.

  • We will only return a maximum of 20 comments and 40 changelog items. If you require more, please refer to the migration guide at the end of this page.

  • The endpoint won’t accept unbounded JQL query and will return 400 if an unbounded JQL query is provided.

Additionally, we’re introducing two new endpoints to complete the solution:

Guidance for migration

How can I fetch data from lots of issues at once?

This operation may be achieved by using two Jira endpoints:

  1. Get issue IDs via /rest/api/3/search/jql

1 2 3 4 5 6 curl --location 'https://example-jira.atlassian.net/rest/api/latest/search/jql' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "jql":"project in (FOO, BAR)" }'

Response:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 { "issues": [ { "id": "10068" }, { "id": "10067" }, { "id": "10066" } ], "nextPageToken": "CAEaAggD" }
  1. Get issues’ fields with Bulk Fetch API to /rest/api/{2|3|latest}/issue/bulkfetch

1 2 3 4 5 6 7 8 curl --location 'https://example-jira.atlassian.net/rest/api/latest/issue/bulkfetch' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "issueIdsOrKeys": ["FOO-1","10067", "BAR-1"], "fields": ["priority", "status", "summary"] }'

How can I get issues' fields for known Issue IDs?

You can use the Bulk Fetch Issue endpoint:

POST to /rest/api/{2|3|latest}/issue/bulkfetch

Example request:

1 2 3 4 5 6 7 curl --location 'https://example-jira.atlassian.net/rest/api/latest/issue/bulkfetch' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "issueIdsOrKeys": ["FOO-1","10067", "BAR-1"], "fields": ["priority", "status", "summary"] }'

How do I find out how many issues match my JQL?

You can use approximate count endpoint:

POST /rest/api/3/search/approximate-count

1 2 3 4 5 6 curl --location 'https://example-jira.atlassian.net/rest/api/latest/search/approximate-count' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "jql":"project in (FOO, BAR)" }'

Response

1 2 3 { "count": 3 }

How can I validate a query?

You can use the JQL Parse endpoint:

POST /rest/api/3/jql/parse

1 2 3 4 5 6 curl --location 'https://example-jira.atlassian.net/rest/api/latest/jql/parse' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "queries":["project in (FOO, BAR)"] }'

Response

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 { "queries": [ { "query": "project in (FOO, BAR)", "structure": { "where": { "field": { "name": "project", "encodedName": "project" }, "operator": "in", "operand": { "values": [ { "value": "FOO", "encodedValue": "FOO" }, { "value": "BAR", "encodedValue": "BAR" } ], "encodedOperand": "(FOO, BAR)" } } } } ] }

How can I get immediate search after write consistency?

We recommend following Search And Reconcile pattern described here.

How can I paginate over a large set of results?

POST /rest/api/3/search/jql

Use next page token returned on each request to get further results

1 2 3 4 5 6 7 curl --location 'https://example-jira.atlassian.net/rest/api/latest/search/jql' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "jql":"project in (FOO, BAR)", "maxResults": 1 }'

Response:

1 2 3 4 5 6 7 8 9 10 11 { "issues": [ { "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields", "id": "10068", "self": "https://example-jira.atlassian.net/rest/api/latest/issue/10068", "key": "FOO-1" } ], "nextPageToken": "CAEaAggB" }

Request

1 2 3 4 5 6 7 8 curl --location 'https://example-jira.atlassian.net/rest/api/latest/search/jql' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "jql":"project in (FOO, BAR)", "maxResults": 1, "nextPageToken": "CAEaAggB" }'

Response

1 2 3 4 5 6 7 8 9 10 11 { "issues": [ { "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields", "id": "10067", "self": "https://example-jira.atlassian.net/rest/api/latest/issue/10067", "key": "BAR-2" } ], "nextPageToken": "CAEaAggC" }

How can I fetch more than 20 comments for an issue?

Use Get comments endpoint

GET /rest/api/3/issue/{issueIdOrKey}/comment

1 2 3 4 curl --location 'https://example-jira.atlassian.net/rest/api/latest/issue/BAR-1/comment' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data ''

Response

1 2 3 4 5 6 7 8 { "startAt": 0, "maxResults": 100, "total": 3, "comments": [ ... ] }

How can I fetch more than 40 changelog items for an issue?

Use Get changelogs endpoint

GET /rest/api/3/issue/{issueIdOrKey}/changelog

1 2 3 curl --location 'https://example-jira.atlassian.net/rest/api/latest/issue/BAR-1/changelog' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \`

Response:

1 2 3 4 5 6 7 8 9 10 { "self": "https://example-jira.atlassian.net/rest/api/2/issue/BAR-1/changelog?maxResults=100&startAt=0", "maxResults": 100, "startAt": 0, "total": 3, "isLast": true, "values": [ ... ] }

How can I evaluate my Jira expression?

You can use the new evaluate expression endpoint POST /rest/api/3/expression/evaluate

Example request for the first page

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 curl --request POST \ --url 'https://example-jira.atlassian.net/rest/api/3/expression/evaluate' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "context": { "issues": { "jql": { "maxResults": 5, "query": "summary ~ \"task\"", } } }, "expression": "issues.map(i => i.summary)" }'

Response:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 { "value": [ "task 7", "task 6", "task 5", "task 4", "task 3" ], "meta": { "issues": { "jql": { "nextPageToken": "CAEaAggF" } } } }

Example request for subsequent pages

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 curl --request POST \ --url 'https://example-jira.atlassian.net/rest/api/3/expression/evaluate' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data '{ "context": { "issues": { "jql": { "maxResults": 5, "query": "summary ~ \"task\"", "nextPageToken":"CAEaAggF" } } }, "expression": "issues.map(i => i.summary)" }'

Response:

1 2 3 4 5 6 7 8 9 10 11 12 { "value": [ "task 2", "task 1", "test task" ], "meta": { "issues": { "jql": {} } } }

How can I run an unbounded JQL query?

We don't recommend running unbounded JQL queries – they are slow for users and costly for every system involved. As our customers grow in number and size over time, with millions of Jira issues, this trend will continue.

We strongly recommend you bound your JQL queries to give customers the best performance and reliability. Consider bounding your queries like this:

1 updated > -1m

More information is available here

What is the duration after a change (i.e., write) where search consistency is assured?

The eventual consistency delay is dependent on various factors. 99% of modifications are typically visible within seconds. However, non organic updates or operations that impact numerous issues, such as lexorank rebalancing or bulk editing, may require more time to complete.

How do I reach consistency when periodically polling with search?

Depending on your needs, we recommend the following:

  • Polling with overlapping periods of 5 minutes if you do not rely on non-organic updates.

  • Polling with overlapping periods of 25 minutes if you do depend on non-organic updates, or if you are depending on results of operations that impact numerous issues.

To increase the level of assurance, we recommend combining the above tactics with the consumption of Webhook events.

29 October 2024

Added UI modifications now support the original estimate field on Issue transition

UI modifications, the Forge module that allows apps to modify fields, now supports the original estimate field on the Issue transition view.

For more information, see the list of supported fields for Issue transition.

24 October 2024

Announcement  Transition to Grouped View for Notification Experiences

Our products have been in the process of transitioning to the Grouped View for rendering notifications instead of the previously used List View.

The notification logic for the view type is internal and there are no existing APIs available to app developers to control or interact with that. Therefore no actions are needed and apps don’t require any update as we complete the roll-out of the Grouped View and phase out the List View one.

EDIT, 24 Oct 2024: Clarified that there is no impact on apps due to this change and changed the changelog type to Announcement.

22 October 2024

Deprecation Notice Changes to Issue properties API

The fields baseline_start (also known as Target start) and baseline_end (also known as Target end) will no longer be available via the Issue properties API.

Moving forward, the Edit Issue API will be the only supported method for updating these properties.

Note: You can still access the existing values using the Issue properties API. However, any updates to these values will not appear in the UI, and they may not reflect the most current information.

This change will take effect on or after November 22, 2024.

More details

What You Need to Do

To adapt to this change, please start using the Edit Issue REST API for updating the baseline_start and baseline_end fields.

If you're unsure how to implement these updates, here's a quick guide:

  • Use the Get Edit Issue Metadata API to get the list of the fields

  • From the response, get the custom field ids where the schema.custom is com.atlassian.jpo:jpo-custom-field-baseline-start or com.atlassian.jpo:jpo-custom-field-baseline-end

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 { "fields": { "customfield_10022": { "required": false, "schema": { "type": "date", "custom": "com.atlassian.jpo:jpo-custom-field-baseline-start", "customId": 10022 }, "name": "Target start", "key": "customfield_10022", "operations": [ "set" ] }, "customfield_10023": { "required": false, "schema": { "type": "date", "custom": "com.atlassian.jpo:jpo-custom-field-baseline-end", "customId": 10023 }, "name": "Target end", "key": "customfield_10023", "operations": [ "set" ] }, } }
1 2 3 4 5 6 { "fields": { "customfield_10022": "2024-09-21", "customfield_10023": "2024-11-21" } }

Announcement Withdrawing issue creation permissions for the ACJIRA project

The Atlassian Connect in Jira Cloud project in the Atlassian Ecosystem Jira tracks issues with Atlassian Connect in Jira and its REST API. To improve response times, we’re no longer accepting new issues in this Jira project as of this announcement. Instead, we encourage our partners to file issues with Developer and Marketplace support.

Announcement Withdrawing issue creation permissions for the ACEJS and ACSPRING projects

The Atlassian Connect Spring Boot and Atlassian Connect Express (Node.js) projects in the Atlassian Ecosystem Jira track issues with the two frameworks. To improve response times, we’re no longer accepting new issues in these Jira projects as of this announcement. Instead, we encourage our partners to file issues with Developer and Marketplace support.

Rate this page: