What’s up with Jira & Confluence Cloud extensibility? A review and sneak peek into the future…
Hi developer community,
I am Kasia Derenda, the Product Manager for Jira Cloud Ecosystem here at Atlassian. I recently joined the Ecosystem team from Jira Server and Data Center. This post relates to one published by @akassab on investments we’re making to improve app data migration paths.
The richness of the behind-the-firewall ecosystem for Jira and Confluence is great, but it also resulted in customizations being a major hurdle for our customers who want to move their Atlassian products to cloud. My team’s key focus is to help those customers find comparable and delightful extensibility for Jira and Confluence in cloud. And this can only be done together with you.
Our priority is to have all popular server Marketplace apps available for the customers who plan their migration to cloud. In other words, to make sure that all server apps with a large user base have an equivalent for Jira and Confluence Cloud in particular. If we look at it long term, we want extensibility to become the pull factor, not a hurdle for customers migrating from server to cloud.
The server app user base is our metric for identifying how popular of a use case the app is addressing. That’s how we prioritize the next APIs to work on. We are also looking at how critical specific apps are for customers. This information will be available soon from the App Assessment feature in our Jira and Confluence Migration Assistant apps.
Have a look at some of the recently shipped APIs and extension points and read about our near term plans. We encourage you to watch the linked issues for APIs you are curious about, to receive a notification when the issue is resolved. We also use these issues to facilitate two way communication with our developer community to better understand use cases for specific APIs and prioritization. Hopefully this will inform your planning and stir some discussion on what are the most critical blockers for our customers who plan their server to cloud migration.
Jira
First, the list below includes only the new APIs. Apart from building new APIs, we have also whitelisted for app usage at least a few dozen already existing APIs. We are listing these in the expand at the end of this section.
In last few months we’ve been focused on building APIs for Jira project configuration. This long missing capability will allow apps to work with all the core building blocks of classic Jira projects.
We’re excited at the prospect of unblocking popular apps offering Jira project creation, management, and configuration which together represent a few million users. We’re also thrilled about all our Marketplace Partners and developers being able to enrich their apps with new capabilities, or get one step closer to feature parity with their server versions.
APIs shipped recently
The first batch of project configuration APIs consists of getting information about the following project settings. (Links below will take you to the relevant documentation)
- API to GET all Issue Type Schemes
- API to GET Issue Type Schemes for projects
- API to GET Issue Type Scheme items
- API to GET Issue Type Screen Schemes
- API to GET Issue Type Screen Schemes for projects
- API to GET Issue Type Screen Scheme items
- API to GET all Screen Schemes
- API to GET all Field Configurations
- API to GET Field Configuration Items
- API to GET Field Configuration Schemes for projects
- API to GET Field Configuration Issue Type items
- API to GET all Workflow Schemes
- API to GET Issue Security Level Members
We’ve also started work on APIs for editing project configuration. Here are a few project schemes you can now associate with a project. You can also get a project level email address via REST API.
- API to associate Issue Type Scheme with a Project
- API to associate Issue Type Screen Scheme with a Project
- API to associate Field Configuration Scheme with a Project
- API to GET Project Level Email Address
These APIs have been requested by some of you in our Jira Ecosystem public project. For reference, here is the group of issues resolved from the ACJIRA project.
On top of the above classic projects REST APIs, we’ve shipped issue fields extensibility for next-gen projects in Jira Cloud. Issue fields from apps can now be shown or hidden in a next-gen project by toggling on or toggling off the app in project settings.
Recently whitelisted APIs for Jira
Get all permission schemes - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-get
Create permission scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-post
Get permission scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-get
Update permission scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-put
Delete permission scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-delete
Get permission scheme grants - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-permission-get
Create permission grant - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-permission-post
Get permission scheme grant - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-permission-permissionId-get
Delete permission scheme grant - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissionscheme-schemeId-permission-permissionId-delete
Get all permissions - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-permissions-get
Update screen tab - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-screens-screenId-tabs-tabId-put
Delete screen tab - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-screens-screenId-tabs-tabId-delete
Remove screen tab field - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-screens-screenId-tabs-tabId-fields-id-delete
Create workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-post
Get workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-get
Update workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-put
Delete workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-delete
Get default workflow - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-default-get
Update default workflow - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-default-put
Delete default workflow - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-default-delete
Get workflow for issue type in workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-issuetype-issueType-get
Set workflow for issue type in workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-issuetype-issueType-put
Delete workflow for issue type in workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-issuetype-issueType-delete
Get issue types for workflows in workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-workflow-get
Set issue types for workflow in workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-workflow-put
Delete issue types for workflow in workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-workflow-delete
Create draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-createdraft-post
Get draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-get
Update draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-put
Delete draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-delete
Get draft default workflow - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-default-get
Update draft default workflow - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-default-put
Delete draft default workflow - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-default-delete
Get workflow for issue type in draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-default-delete
Set workflow for issue type in draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-issuetype-issueType-put
Delete workflow for issue type in draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-issuetype-issueType-delete
Get issue types for workflows in draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-workflow-get
Set issue types for workflows in draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-workflow-put
Delete issue types for workflows in draft workflow scheme - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflowscheme-id-draft-workflow-delete
Update workflow transition property - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflow-transitions-transitionId-properties-put
Create workflow transition property - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflow-transitions-transitionId-properties-post
Delete workflow transition property - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-workflow-transitions-transitionId-properties-delete
Set project avatar - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-project-projectIdOrKey-avatar-put
Delete project avatar - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-project-projectIdOrKey-avatar-id-delete
Load project avatar - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-project-projectIdOrKey-avatar2-post
Get all project avatar - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-project-projectIdOrKey-avatars-get
Get all dashboards - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-dashboard-get
Get dashboard - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-dashboard-id-get
Search for dashboards - https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-dashboard-search-get
What’s coming next?
We are working towards the complete project configuration experience via API. Here are our immediate plans for the coming weeks:
- API to assign Workflow Scheme to Projects: ACJIRA-173: REST API for setting workflow scheme for project
- CRUD APIs for Issue Type Schemes: ACJIRA-1911: Rest API to associate issue type with a projects issue-type scheme.
- CRUD APIs for Screen Schemes and Issue Type Screen Schemes
- CRUD APIs for Custom Field Options ACJIRA-1626: Public REST API to manage custom field options
You can watch the issues linked next to each API to get a notification when the issue is resolved.
Jira Cloud Ecosystem team also plans to work on the changelog so that you can check what’s new anytime on DAC.
Confluence
Our north star for Confluence is to enable a vibrant and rich ecosystem of apps that not just meet but surpass the breadth and depth of what we have to offer on server today. Over the last 6 months, the focus of our team has continued to be on expanding the extensibility of our cloud apps. We successfully rolled out several new APIs and extension points (full list is below with documentation linked). In addition, we have made significant improvements to our documentation, which we hope will more effectively guide our developers.
APIs shipped recently
- Group API’s: Allow site admins to perform CRUD operations for groups and its members
- Add/remove space permission: Enables space admins to add/remove space permissions.
- Copy Single Page: Allows to copy a single Confluence page to a new parent.
- Labels API: Get label information.
- Inline task search API: Returns inline tasks based on the search query.
- Gets the selected text on the page JS API: This JS API allows developers to get the selected text on the page. This API could be useful for context menu WebItem modules.
These APIs have been requested by some of you in our Confluence Cloud public project. For reference, here are links to the issues resolved from the project.
Documentation improvements include
- Restructured and renamed tutorials for clarity (Tutorials and guides)
- Rebuilt Macro tutorial from scratch, added new Macro body tutorial, new Webhooks tutorial
- Edited and moved Macros overview content
- Restructured and rewrote Security pages (Security overview and all pages in the SECURITY section)
- Rewrote Modules guide, added new page: About Confluence modules
- Rewrote Integrating with Confluence Cloud, added new page About Connect, to explain app components and lifecycle
- Reorganized Example apps content
- Fixed a bunch of bugs
- Reorganized REST API for navigability
- Fixed broken REST docs, examples, and parameters
What’s coming next?
In the next few months, we’ll be looking to provide the ability to control attachment permissions outside of page permissions. In addition, our aim is to also make progress on two longstanding asks of Marketplace Partners. First is the ability to offer, in some fashion, the rich formatting and data manipulation that apps are able to provide today in server via the use of nested macros. Second will be a closer look at our Theming API and how we can improve it. We would love any feedback you might have around use-cases for either one of these areas! Please send them along via direct message on the Developer Community to @JasonPhan
Forge
While our key focus is on shipping new APIs for Connect, we also plan to have all of these APIs available in Forge. Currently in private beta, Forge is our new app development platform which makes it easier to customize our products with secure, reliable apps built on Atlassian-hosted FaaS. If you haven’t already, you can read more in the Forging ahead with Atlassian Connect post.
The Jira and Confluence ecosystem teams have built multiple extension points for Forge (see the changelog).
Currently available Jira Forge extension points
- Workflow validator: The jira:workflowValidator module creates a workflow validator that can be configured on workflow transitions in classic projects.
- Issue panel: The jira:issuePanel module adds an issue panel to Jira, which is content that is shown above the Activity panel on a Jira issue.
- Issue action: The jira:issueAction module adds a menu item to the more actions (…) menu on the issue view. When the menu item is clicked, the module’s function renders a modal dialog.
- Issue glance: The jira:issueGlance module adds an issue glance to Jira, which is content that is shown/hidden in an issue by clicking a button. The button for the issue glance is placed alongside fields such as Assignee and Labels . Clicking the button opens the content provided by the Forge app, so that it fills the right sidebar.
- Custom field: The jira:customField module creates a new custom field in Jira, which makes it easier for users to add information to issues, specific to their teams’ needs.
For the near future we planned issue activity, issue quick add, and full page extension points for Jira.
To illustrate some of the work done, here’s the new issue view with Forge extension points marked.
Currently available Confluence Forge extension points
Confluence team added the following Forge extension points recently.
- Content action: The confluence:contentAction module adds a menu item to the more actions (…) menu for pages and blogs.
- Context menu: The confluence:contextMenu module displays an entry in the context menu when a user selects some text on a page or blog.
- Content byline item: The confluence:contentBylineItem module adds an entry to the content byline section, which is the part of the content under the title that includes metadata about contributors and more.
- Global settings: The confluence:globalSettings module adds a link to the left navigation menu in Confluence global settings.
- Space settings: The confluence:spaceSettings module adds a tab inside the integration settings of a Confluence space.
What are we looking to solve next with Forge?
Both Jira and Confluence plan to release the full page extension points to make room for app configuration screen, to build full page apps and to provide static information to app users. We are also looking for feedback on what should the next Forge extension point be, especially for apps which could use the synchronous capabilities of Forge. Please send your feedback along to me @kderenda via direct message on the Community.
If you plan to build a new app or integration for Atlassian Cloud products, we currently still recommend building with Connect. If, however, you would like to help us build the future of the Atlassian ecosystem, join the Forge Private Beta to find out more and try out the new environment.
We want to hear from you!
Last quarter alone we saw 117 new cloud apps released to the Atlassian Marketplace. If our recent extensibility work helped with the release of the cloud version of your app(s), please share your story in thread or send me (@kderenda) a private message in the Developer Community.
We’re also eager to know what other blockers you are encountering that are inhibiting you from building more apps in cloud. You can check out the projects below to see if those issues are already on our radar, or raise a new request.
For help with a recently shipped API or extension point, we encourage you to comment on the linked issues.
For new issues, you can go to the following projects to raise a bug or feature request with the following teams:
- @LukaszBerezowski Jira extension points in Atlassian Connect: Atlassian Connect in Jira Cloud - Issues - Ecosystem Jira
- @JasonPhan Confluence extension points in Atlassian Connect: https://jira.atlassian.com/projects/CONFCLOUD/summary using “Ecosystem” component
- @JoelKalmanowicz Forge extension point requests: https://ecosystem.atlassian.net/projects/FRGE