RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Summary of Project:
Driven by unpredictable behavior, difficulty in optimization, and incompatibility with granular OAuth 2.0 scopes, a set of endpoints from the Confluence REST API V1 are being deprecated. These issues impact developers and users of apps that rely on the API for data fetching and manipulation in Confluence Cloud. The new Confluence REST API V2 aims to solve these problems by offering endpoint specialization, cursor-based pagination, and improved compatibility with granular OAuth 2.0 scopes.
The deprecated endpoints can be referenced here and here. Public access for the endpoints will be removed on Jan 1, 2024, except for the Content Property endpoints & the “Update inline task given global ID” endpoint, for which public access will be removed on Feb 1, 2024. This means any apps still using these V1 APIs will no longer have access and will need to move to the newer V2 endpoints.
Timeline for the RFC:
- Publish: Aug 7 2023
- Discuss: ~Aug 21 2023
- Resolve: ~Sep 4 2023
Problem
The problem we are addressing is the limitations and performance issues with the previous Confluence REST API V1, for which a subset of endpoints are being deprecated. These issues impact developers who build and use apps that rely on the API to fetch and manipulate data in Confluence Cloud. The impact of this problem includes unpredictable behavior, difficulty in optimization, and incompatibility with granular OAuth 2.0 scopes.
It is essential to begin migration as the deprecation period for the REST API V1 has started, and public access to these endpoints will be removed on Jan 1, 2024 and Feb 1, 2024 (see above). By solving this problem, we can improve the performance, predictability, and ease of use of the API, ultimately enhancing the experience for developers and users alike.
The V1 API faced challenges such as.
- The lack of endpoint specialization in V1 makes it difficult to predict behavior and optimize performance. Moreover, it doesn’t fully support the granular OAuth 2.0 scopes that we’re striving to implement.
- The use of expansions and the expand query parameter in V1 complicates the process of fetching specific data types from a single endpoint. This, in turn, leads to increased request latency and challenges in optimization.
- V1’s offset-based pagination has shown some drawbacks, such as missing data when adding or deleting items during pagination and worse latency for high-offset requests.
The affected endpoints are:
- Get content
- Get content by ID
- Create content
- Update content
- Delete content
- Get content for space
- Get content for space by type
- Get content children
- Get content children by type
- Get content comments
- Get content history
- Get content versions
- Get content version
- Get attachments
- Get labels for content
- Get spaces
- Get space
- All inline task endpoints
- All space properties endpoints
- All content properties endpoints
Proposed Solution
Our current proposed solution is the Confluence REST API V2, which offers several improvements over the deprecated REST API V1. These improvements include:
- Endpoint specialization: Separate endpoints for each data type, such as pages, blog posts, comments, attachments, custom content, labels, spaces, and much more.
- This allows for better predictability and compatibility with granular OAuth 2.0 scopes.
- Cursor pagination: Instead of the offset-based pagination present in REST API V1, REST API V2 uses cursor-based pagination, providing better latency, and preventing missing data issues.
- Improved performance and ease of use for app developers and users.
When we originally posted our deprecation announcements, the community pointed out many gaps. We reviewed over 70 responses on our original announcement, and over 50 additional topics related to gaps. We made sure that we have addressed all the critical gaps identified therein. Many of these additions were noted in this changelog and in this changelog.
The only set of endpoints which has not yet released (but is nearing release) is:
- Get content properties for (for all entities of specified type)
App owners and developers using Confluence Cloud APIs should plan to migrate to the REST API V2 endpoints before the above dates. If you have any concerns or difficulties migrating, or if you encounter capability gaps or unexpected behavior, please let us know by responding to the community post. We will create and link corresponding CONFCLOUD tickets to capture and track the progress of migration blockers.
Asks
We kindly ask for your valuable feedback on any gaps between REST API V1 and V2, as well as any potential blockers that you might face during the migration process. Your insights will help us improve the REST API V2 and ensure a smooth transition for all developers and users.
Thank you in advance for your collaboration and support in shaping the future of the Confluence REST API!