Atlassian has announced the timeline for Connect's phased end-of-support.
From Sep 17, 2025, only Forge apps can be submitted to the Atlassian Marketplace. All new extensibility features will be delivered only on Forge.
Have an existing Connect app? Find out how to incrementally adopt Forge from Connect.
The Development Tool module allows an app to:
When a user uninstalls an app, all the data that the app sent to Jira is deleted. If the app is reinstalled, this data won't be added back unless the app resends historical information to Jira.
1 2{ "modules": { "jiraDevelopmentTool": { "url": "https://bitbucket.org", "application": { "value": "Bitbucket" }, "logoUrl": "https://www.atlassian.com/dam/jcr:bd56917e-e361-4f03-b672-9f5ef5b06e80/Bitbucket-blue.svg", "capabilities": [ "commit" ], "name": { "value": "Bitbucket" }, "key": "bitbucket-integration" } } }
Type | i18n Property |
Required | Yes |
Description | The application behind this development tool Represents a string that can be resolved via a localization properties file. You can use the same |
1 2{ "value": "My text" }
value |
| ||||||||
i18n |
|
Type | |
Required | Yes |
Description | What development information the tool offers |
Type | string |
Max length | 100 |
Required | Yes |
Pattern | ^[a-zA-Z0-9-]+$ |
Description | A key to identify this module. This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be globally unique. Keys must only contain alphanumeric characters and dashes. The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on key and module key. |
For example, an add-on which looks like:
1 2{ "key": "my-addon", "modules": { "configurePage": { "key": "configure-me", } } }
Will have a configuration page module with a URL of /plugins/servlet/ac/my-addon/configure-me
.
Type | string |
Format | uri |
Description | The logo for the development tool, will be displayed in an area 16 by 16 pixels |
Type | i18n Property |
Required | Yes |
Description |
A human readable name. Represents a string that can be resolved via a localization properties file. You can use the same |
1 2{ "value": "My text" }
value |
| ||||||||
i18n |
|
Type | string |
Format | uri |
Required | Yes |
Description | A URL to the development tool |
Type | Development Actions |
Description | Optional actions that can be performed by Jira users, e.g., create branch, etc. Development actions that can be performed by Jira users. Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider. |
Type | object |
Description | Action for fetching development repository for a given repository ID. If a repository with the given ID does not exist, the response should be a HTTP 404. |
The templateUrl
property of this action will receive a POST
request when this action is invoked. The repository ID to be fetched will be included in the body.
1 2{ "id": "XXXX" }
1 2{ // Identifier of the repository which will be used to hydrate repository details. // The ID does not need to conform to any specific format. id: "f730ce9c-3442-4f8a-93a4-a44f3b35c46b/target/111-222-333" // Human readable name of the repository name: "my-repo-name" // Url allowing Jira to link directly to the provider's repository url: "https://my.devinfo.provider.com/f730ce9c-3442-4f8a-93a4-a44f3b35c46b/container/f730ce9c-3442-4f8a-93a4-a44f3b35c46b" // Optional, url providing the avatar for the repository. avatarUrl: "https://res.cloudinary.com/snyk/image/upload/v1584038122/groups/Atlassian_Logo.png" // The date and time this repository was last scanned/updated lastUpdatedDate: "2022-01-19T23:27:25+00:00" }
Defines the URL template that is used when an action is invoked.
For the create branch action, the following context parameters are supported: {issue.key}
, {issue.summary}
.
Type | object |
Description | Defines the URL template that is used when an action is invoked. For the create branch action, the following context parameters are supported: |
Type | object |
Description | Action for creating a new repository. |
The templateUrl
property of this action will receive a POST
request with request body when this action is invoked.
The request body will be a JSON payload consisting of:
workspaceId
: The ID of the workspace in which to create the repository. This will be an ID which was supplied via the searchRepositories
action within this same module.name
: The name of the repository to create.If the input provided is invalid, then the response should be a HTTP 400.
1 2"https://my.devinfo.provider.com/repos/create" Body: { "workspaceId": "12345", "name": "my-repo-name" }
1 2{ // Identifier of the repository which will be used to hydrate repository details "id": "f730ce9c-3442-4f8a-93a4-a44f3b35c46b/target/111-222-333", // Human readable name of the repository "name": "my-repo-name", // Url allowing Jira to link directly to the provider's repository "url": "https://my.devinfo.provider.com/f730ce9c-3442-4f8a-93a4-a44f3b35c46b/repo/f730ce9c-3442-4f8a-93a4-a44f3b35c46b", // Optional, url providing the avatar for the repository. "avatarUrl": "https://res.cloudinary.com/snyk/image/upload/v1584038122/groups/Atlassian_Logo.png", // The date and time this repository was last scanned/updated "lastUpdatedDate": "2022-01-19T23:27:25+00:00" }
Type | object |
Description | The disassociate action is called when a container is disassociated from the Jira project which it was previously associated with. This action is called to notify the provider to stop syncing this container with Jira. |
The templateUrl
property of this action will receive a POST
request when this action is invoked. The repository ID will be included in the request body.
1 2{ "id": "XXXX" }
Defines the URL template that is used when an action is invoked.For the create branch action, the following context parameters are supported: {issue.key}
, {issue.summary}
.
Type | object |
Description | Action for showing any partial or full matches using a search on the connected development workspace name. |
The templateUrl
property of this action will receive a GET
request with searchQuery
when this action is invoked.
The searchQuery
param will be the users input. This query parameter is optional. This should be searched for against the workspace names, i.e. results for searchQuery="my-workspace-n" should include "my-workspace-name".
1 2https://my.devinfo.provider.com/repos/search?searchQuery=my-workspace-name
1 2{ "workspaces": [ { // Identifier of the workspace which will be used to hydrate workspace details. The ID does not need to conform to any specific format. "id": "f730ce9c-3442-4f8a-93a4-a44f3b35c46b/target/111-222-333", // Human readable name of the workspace "name": "my-workspace-name", // Optional, url allowing Jira to link directly to the provider's workspace "url": "https://my.devinfo.provider.com/f730ce9c-3442-4f8a-93a4-a44f3b35c46b/repo/f730ce9c-3442-4f8a-93a4-a44f3b35c46b", // Optional, url providing the avatar for the workspace. "avatarUrl": "https://res.cloudinary.com/snyk/image/upload/v1584038122/groups/Atlassian_Logo.png" } ] }
Defines the URL template that is used when an action is invoked.
For the create branch action, the following context parameters are supported: {issue.key}
, {issue.summary}
.
Type | object |
Description | Action for showing any partial or full matches using a search on the repository name. Note that the workspace which each repository is contained within must be returned as a property of each repository. |
The templateUrl
property of this action will receive a GET
request with optional query params searchQuery
,page
and limit
when this action is invoked.
searchQuery
: Optional, the users input. This should be searched for against the repository names, i.e. results for searchQuery="my-repo-n" should include "my-repo-name".page
: Optional, the current page for returning paginated results (default to 1)limit
: Optional, the number of items per page (default to 100)1 2"https://my.devinfo.provider.com/repos/search?searchQuery=my-repo-name&page=3&limit=50"
1 2{ "containers": [ { // Identifier of the repository which will be used to hydrate repository details "id": "f730ce9c-3442-4f8a-93a4-a44f3b35c46b/target/111-222-333", // Human readable name of the repository "name": "my-repo-name", // Url allowing Jira to link directly to the provider's repository "url": "https://my.devinfo.provider.com/f730ce9c-3442-4f8a-93a4-a44f3b35c46b/repo/f730ce9c-3442-4f8a-93a4-a44f3b35c46b", // Optional, url providing the avatar for the repository. "avatarUrl": "https://res.cloudinary.com/snyk/image/upload/v1584038122/groups/Atlassian_Logo.png", // The date and time this repository was last scanned/updated "lastUpdatedDate": "2022-01-19T23:27:25+00:00", // The details of the workspace which this repository is in. "workspace": { // Identifier of the workspace "id": "f730ce9c-3442-4f8a-93a4-a44f3b35c46b/target/111-222-333", // Human readable name of the workspace "name": "my-workspace-name" } } ] }
Defines the URL template that is used when an action is invoked.
For the create branch action, the following context parameters are supported: {issue.key}
, {issue.summary}
.
Rate this page: