We expose some parts of Approval Path functionality by API.

Authorization

You have to generate an API key in our app.

It is available in the Approval Path global view:

  1. Click “Apps” on the top menu,

  2. Click Approval Path,

  3. Go to the API Keys tab,

  4. Click “Create a new API Key”.

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

Change Performer Origin select offers three distinct options:

  1. User - to ensure smooth operations, it is essential to select a valid user as the new performer. This can be done by utilizing the option that allows the selection of a specific user.

  2. Page creator - you to set user who created the page as the new change performer. In cases where the field does not have a valid user, you have the option to assign a default page creator to ensure continuity.

  3. Page modifier - you can set user who last modified the page as the new change performer. In instances where the field lacks a valid user, you retain the option to select a default page modifier, ensuring a smooth transition in the performer's origin.

  4. User from API call - API call body parameter allows for the passing of a user id. User ids can be limited to users from a designated group. In cases where the submitted user id is empty or does not contain a valid user, a default user can be selected. However, if the submitted user does not belong to the specified group, an error will be returned.

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 mc96LyRi9nUQySSjKXEf8xfqUZzjS2CYhRK8bWSRRfQi
Content-Type: 'application/json'

Definition

ref-id- In the case of Approval Path for Jira, this is space id.

List of space definitions

GET /approval-definitions/{ref-id}

List of global definitions

GET /approval-definitions

{
  "result": [
    {
      "id": "45",
      "name": "with rejection steps",
      "description": "",
      "collectionId": null,
      "steps": [
        {
          "type": "USER",
          "parallelGroupNumber": 1,
          "userId": "557058:6e542a10-54a5-44e3-97b4-397df9caf04d",
          "action": "CONSENT",
          "displayName": "Kamil Zarychta",
          "lastUpdated": null,
          "issueWatchersNotification": "ENABLED"
        },
        {
          "type": "EMAIL",
          "parallelGroupNumber": 1,
          "email": "kamilzarychta@gmail.com",
          "action": "NOTIFICATION",
          "issueWatchersNotification": "ENABLED"
        },
        {
          "type": "HTTP",
          "parallelGroupNumber": 1,
          "name": "webhook",
          "httpMethod": "POST",
          "urlTemplate": "https://webhook.site/d42d1f3d-74a8-433e-b5a3-961d46505fe4?test=test",
          "headersTemplate": "Content-Type: application/json\nAccept: application/json",
          "bodyTemplate": "{\"pages\":[\"${ref.id}\"]}",
          "action": "NOTIFICATION",
          "issueWatchersNotification": "DISABLED"
        }
      ],
      "rejectionSteps": [
        {
          "type": "HTTP",
          "parallelGroupNumber": null,
          "name": "asd",
          "httpMethod": "POST",
          "urlTemplate": "https://2e98-91-220-222-198.ngrok-free.app/connect/jira/webhook-with-message",
          "headersTemplate": "",
          "bodyTemplate": "                ",
          "action": "NOTIFICATION",
          "issueWatchersNotification": "DISABLED"
        }
      ],
      "availableForJSMCustomers": false
    },
    {
      "id": "98",
      "name": "only confluence users",
      "description": "",
      "collectionId": null,
      "steps": [
        {
          "type": "GROUP",
          "parallelGroupNumber": null,
          "groupId": "06a60c65-1cb8-4ea8-997a-3dc3dafc6ceb",
          "action": "APPROVAL",
          "requiredVotes": 1,
          "requiredRejectVotes": 1,
          "displayName": "confluence-users",
          "approvalCreatorExcluded": true,
          "skipFromApprovalWhenEmpty": false,
          "issueWatchersNotification": "ENABLED"
        }
      ],
      "rejectionSteps": [],
      "availableForJSMCustomers": false
    }
  ],
  "totalCount": 2
}

Approval

ref-id- In the case of Approval Path for Confluence, this is page id.

List approvals

GET /approvals/{ref-id}

Return example:

{
  "result": [
    {
      "id": "38",
      "definitionId": "35",
      "name": "Approval Name",
      "summary": "Ticket Summary",
      "collectionId": "10002",
      "refId": "10004",
      "steps": [
        {
          "type": "USER",
          "status": "SUCCESS",
          "userId": "557058:aea7ac02-75c1-4f47-9beb-dd89777d4949",
          "displayName": "Krzysztof Bogdan",
          "action": "STARTED",
          "decision": "ACCEPTED",
          "decisionDate": "2021-09-30T13:51:01.676+00:00"
        }
      ],
      "status": "IN_PROGRESS"
    }
  ],
  "totalCount": 1
}

When Change Performer Origin 'USER' is selected for API key approval create and reset requests can be extended to include the userId field.

Create approval

POST /approvals/{ref-id}

{
  "definitionId": "id",
  "summary": "Approval summary. Usually issue/page title",
  "userId": "Atlassian user id"
}

Reset approval

Allows the user to reset ongoing or finalized approval path on an issue.

POST /approvals/{ref-id}/reset

Body parameters
createComment - Default false. If true, will generate a comment when the approval path is reset via API. The creator of the API will be specified as the agent.

{
  "userId": "Atlassian user id"
}

This will reset the approval path - by default no comment will be generated.

{
  "createComment": true,
  "userId": "Atlassian user id"
}

This will reset the path and generate a comment.

{
    "result": [
        {
            "id": "469",
            "definitionId": "197",
            "name": "Page content approval",
            "summary": "NDA-33 Documentation",
            "collectionId": "10000",
            "refId": "10068",
            "steps": [
                {
                    "type": "USER",
                    "status": "SUCCESS",
                    "userId": "6105b29ec51f3a0069c9ccda",
                    "displayName": "Parsa Shiva",
                    "parallelGroupNumber": null,
                    "action": "STARTED",
                    "decision": "ACCEPTED",
                    "decisionDate": "2022-09-26T15:32:42.340+00:00",
                    "lastUpdated": "2022-09-26T17:32:42+02:00"
                },
                {
                    "type": "USER",
                     "status": "SUCCESS",
                    "userId": "6105b29ec51f3a0069c9ccda",
                    "displayName": "Parsa Shiva",
                    "parallelGroupNumber": null,
                    "action": "APPROVAL",
                    "decision": "ACCEPTED",
                    "decisionDate": "2022-09-26T15:32:52.128+00:00",
                    "lastUpdated": null
                },
                {
                    "type": "USER",
                    "type": "USER",
                    "status": "SUCCESS",
                    "userId": "6299df401648f2006963deb8",
                    "displayName": "Jessica Smith",
                    "parallelGroupNumber": null,
                    "action": "APPROVAL",
                    "decision": "ACCEPTED",
                    "decisionDate": "2022-09-27T09:23:07.459+00:00",
                    "lastUpdated": null
                },
                {
                    "type": "USER",
                    "status": "SUCCESS",
                    "userId": "6299df401648f2006963deb8",
                    "displayName": "Jessica Smith",
                    "parallelGroupNumber": null,
                    "action": "APPROVAL",
                    "decision": "ACCEPTED",
                    "decisionDate": "2022-09-27T09:23:10.706+00:00",
                    "lastUpdated": null
                }
            ],
            "status": "SUCCESS",
            "activeSteps": [],
            "modificationDate": "2022-09-27T09:23:10.706+00:00"
        }
    ],
    "totalCount": 1
}