What’s up with Jira & Confluence Cloud extensibility? A review and sneak peek into the future…

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)

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.

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:

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

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

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:

30 Likes

I’d like to see some options to extend the user profile / profile page.

3 Likes

+1

And also generally User Properties for Confluence. I mean they already exist in Jira, right? :sweat_smile:

2 Likes

@james.dellow and @sven.schatter thanks for the feedback. User profile extensibility is on our radar but without the timeline yet. It’s good to hear that this would unblock your work on Cloud apps, additional validation increases priority. Is there a specific server app you’d like to bring to cloud if we extended the user profile?

2 Likes

In our case it would be Task Reminder for Confluence but we’re currently still blocked by waiting for Email REST API access. For Task Reminder, not having user properties means that there will only be global reminder settings, unlike on Server where every user can configure their reminders themselves. Depending on who you ask this means that around half of the feature set of Task Reminder will be missing on Cloud.

2 Likes

Thanks @sven.schatter I did not have Task Reminder for Confluence on the list of apps that would benefit from user profile extension. Adding now. As for the email API access, I’ll ask the DEVHELP team and let you know in a private message.

1 Like

This refers to a JQL which uses currentUser() function and produces an empty list for (probably) most people - can you fix that?

Hi

Is is a fantasy thought to want to “load custom javascript” on the Jira Cloud ?
I have a plugin that works on Server (600 installations), but can never work on Cloud, because of the JavasScript limitations.

BR, Jonas

You can load custom JavaScript in cloud within an iFrame. What are you trying to do? Which app are we taking about?

Is there a timeline for listing forge apps on MP with PVA to make them commercially available?

For our app, similar issues finder, we need to get notified for every change on summary when user is creating a new issue. For one of our other app we need to able to filter which versions are shown depending on selected component. We can do this kind of things on the server but it is not possible for cloud. I know your DOM is not a part of your API but it is available if you want it. We need a similar power for cloud.

@kderenda thanks a lot for this update, it’s great to see all those plans, and exciting improvements.

I have a question about Atlassian Connect Javascript API. I did not see much of movements in ACJS since 2019(please check this filter on EAN). Is it reasonable to expect more work being done in this area during upcoming months? What’s the end game for ACJS?

2 Likes

Hi @rmassaioli.

There is tons of examples. E.g. mingle with the UI, like present stuff on custom location, augment the service desk portals with UI stuff (my server plugin does this, and I have had many requests for cloud support). BR

Also, what is the problem loading custom javascript?

Security wise, when accepting a Cloud add-on, you are as a Jira Cloud customer accepting the risk that the developer may extract data from your Jira. So, essentially, security is not worse or better, if enabling custom javascript.

Hey @UlrichKuhnhardtIzym1 :slight_smile: I know this isn’t the answer you’re looking for, but we don’t have any public timelines for Forge Marketplace availability at the moment. As soon as that changes, we’ll be sure to share that information here on the Community.

2 Likes

Hi @kderenda, thanks for the update - much appreciated!

Any chance you will work on the issue view popup API for the apps? [ACJIRA-495] - Ecosystem Jira

This is a critical enabler for all apps that have their own pages with some issue representation.

2 Likes

@christoffer good catch, here’s the correct JQL for recently resolved Confluence documentation bugs. I’ve also made an edit in the post. It should work at your end but if not, let me know.

2 Likes

@Grzegorz.Tanczyk thanks. Regarding Atlassian Connect Javascript API we plan some work in this area in the long term but there are no short term plans as of now. As we grow confidence in the long term planning, we will be posting more information on that. If this is about a specific server app use case that you’d like to bring to cloud I’d like to know more details.

2 Likes

@sereda thanks for bringing this to my attention. It does not have any fixed timeline, but I will follow up on this internally. I aim to post an update on the issue by the end of next week.

2 Likes

I think there are two opportunities - to extend the profile information itself and to provide access to information from apps that are specific to a user. Specific UI elements would be:

  • Add tabs along side Worked on, View all
  • Add custom profile fields to About
  • Add custom panels beneath About

I do think we would need to be careful about the UX, but the user profile is an under-utilised capability in Cloud (although better than it was in the past).

3 Likes