You can manage your Jira shares via web API by generating API Key. To do this, perform the following steps:

  1. Go to the External Share for Jira admin panel and click on the API Keys tab. This will send you to a screen with all previously generated keys.

    Click on Create new API key. API key creation popup will appear.

  2. Setup your API key and copy or download it. The template has the following fields:

Using the Web API with API key

With key generated, you can now make a call to Web API. First of all, set Authorization and Content-Type headers in your REST client.

Authorization: 'Bearer { KEY_VALUE }'
Content-Type: 'application/json'

With the headers set, you can perform the following operations: GET, LIST, CREATE, and DELETE.

GET OPERATION

This operation allows you to retrieve a single share, or its activity, based on share uuid. This operation does not accept any additional options and returns JSON with Share data/Share activity data.

Example Call:

GET https://jira.external-share.com/webapi/share/{ SHARE_UUID }
GET https://jira.external-share.com/webapi/share/{ SHARE_UUID }/activity
GET /rest/servicedeskapi/request/{issueIdOrKey}/approval

LIST OPERATION

This operation allows you to retrieve a sorted list of shares based on the options passed. You need to have an access to shared issues to be able to list shares. You can pass the following options as request parameters:

NOTE: If you are an administrator, you may ommit passing userId and/or projectId - this will result in returning all shares from all projects you have admin rights. However, if you are not an administrator, the call will not be accepted and FORBIDDEN http status will be returned.

Example Call:

GET https://jira.external-share.com/webapi/share?sort=uuid&sortOrder=desc&projectId=10000

CREATE OPERATION

This operation allows you to create a new share, whether it is a share of an Issue, Board or JQL and returns its JSON representation. The operation requires passing request body with mandatory fields:

You may also pass additional fields:

Parameter Name

Description

Default

password

Sets password for share.

null

expiration

Expiration timestamp in epoch miliseconds.

null

showComments

All existing comments will be visible on the shared link.

true

allowAddComment

Anyone with access to the link can add comments.

false

showInternalComments

Anyone with access to the link can view internal comments.

false

allowAddInternalComment

Anyone with access to the link can addinternal comments.

false

showAttachments

All existing attachments will be visible on the shared link.

true

allowAddAttachment

Anyone with access to the link can add attachments.

false

allowAddPublicAttachment

Anyone with access to the link can create a public comment with an attachment.

false

showSubtasks

Information about subtasks will be visible on the link.

true

showLinkedIssues

Information about linked issues will be visible on the link.

true

shareSubtasksContent

Information about subtasks will be visible on the link as per share settings.

false

shareLinkedIssuesContent

Information about linked issues will be visible on the link as per share settings.

false

allowWorkflowTransition

Anyone with access to the link can change its status.

false

showWorklog

Anyone with access to the link can see the worklog.

false

showChangelog

Anyone with access to the link can see history items from the changelog.

false

customFields

An array of objects with Custom Field ids that will be available on the link. Example: [{"id":"10020"}, {"id":"10021"}] Refer to the Jira API documentation to retrieve Custom Fields ids: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields/

null

selectedUsersConfig

Pass this object to define list of users that can access the share. You can pass the following fields in this configuration:

  1. allowed - set to true if you want to allow access only to selected users.

  2. allowedNotification - if true, users will be notified via e-mail when added to the list

  3. list - list of e-mails that may access the share. Refer to example below to see how to correctly pass the e-mails.

"selectedUsersConfig": {
		"allowed": true,
		"allowedNotification": false, 
		"list": [{"email": "expl@expl2.com"}, {"email": "expl@expl.com"}]
	}

null

expirationExpression

object with unit and amountfields. #Expiration Expression

null

jql

generated: "project = {projectKey} order by created DESC"

generated

board

"board": {
    "id": "{boardId}"
}

null

Example Call:

POST https://jira.external-share.com/webapi/share
{
	"issueId": "10001",
	"type": "ISSUE",
	"expiration": 1649700933954,
	"customFields": [{"id":"10020"}, {"id":"10021"}],
	"selectedUsersConfig": {
		"allowed": true,
		"allowedNotification": false, 
		"list": [{"email": "expl@expl2.com"}, {"email": "expl@expl.com"}]
	}
}

UPDATE OPERATION

This operation allows you to update an existing UUID link.

Example Call:

PUT https://jira.external-share.com/webapi/share/{YOUR-ISSUE-UUID}

DELETE OPERATION

This operation allows you to delete a single share based on its share uuid. It does not accept any additional options. Upon successful execution, it returns no content (HTTP 204). If an error occurs, a JSON with the error message will be provided.

Example Call:

DELETE https://jira.external-share.com/webapi/share/{ SHARE_UUID }

An example rule: Automatically create an External Share link for every new issue.