Smart Checklist REST API v1.0 - beta

Welcome to the Smart Checklist for Jira Server/Data Center platform REST API reference. You can use this REST API to develop integrations between Smart Checklist, Jira, and other 3rd party applications. This page documents the REST resources available in Smart Checklist for the Jira Server/Data Center platform, along with expected HTTP response codes and sample requests.

Looking for simpler integration using Jira REST API and/or 3rd party add-ons? Follow the links below:

Authentication

Use the same authentication that you use to authenticate to Jira applications on your instances.

Resources

/rest/railsware/1.0/checklist

Get checklists GET /rest/railsware/1.0/checklist

Retrieve an existing list of checklists for the given issue key

Query parameters

  • issueKey: string (required)

Responses

  • status 200 application/json Returns a list of all checklists associated with the provided issue key in JSON format
    Example

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 { "checklists": [ { "checklistId": 5, "issueId": 10115, "items": [ { "id": 50829, "rank": 0, "label": "Release instructions", "type": "heading", "level": 1, "quotes": [] }, { "id": 50830, "rank": 1, "label": "Preparation", "type": "heading", "level": 2, "quotes": [] }, { "id": 50831, "rank": 2, "label": "Add feature permissions", "type": "item", "status": { "id": 4, "rank": 2, "name": "DONE", "color": "GREEN", "default": true, "statusState": "CHECKED" }, "quotes": [] }, { "id": 50832, "rank": 3, "label": "Send `internal` announcement with presentation", "type": "item", "status": { "id": 4, "rank": 2, "name": "DONE", "color": "GREEN", "default": true, "statusState": "CHECKED" }, "quotes": [] }, { "id": 50833, "rank": 4, "label": "Prepare branch", "type": "item", "status": { "id": 2, "rank": 6, "name": "IN PROGRESS", "color": "BLUE", "default": true, "statusState": "UNCHECKED" }, "quotes": [ { "id": 1439, "rank": 0, "text": "* merge feature to master", "label": "* merge feature to master" }, { "id": 1440, "rank": 1, "text": "* set tag", "label": "* set tag" }, { "id": 1441, "rank": 2, "text": "* update changelog.com", "label": "* update changelog.com" } ] } ], "mentionedUsers": {} } ] }

 

  • status 400 Returned if the issue key is not provided

  • status 404 Returned if the requested issue is not found

Update checklist PUT /rest/railsware/1.0/checklist/{checklistId}

Updates checklist items

Path parameters

  • checklistId: number (required)

Body parameters (application/json) - list of JSON objects:

  • id: number

  • rank: number

  • label: string

  • status: object

    • id: number (required) - new status id

Example

Changes the item 50859 position and changes label + status of item 50860:

1 2 3 4 5 6 7 8 9 10 11 12 13 [ { "id": 50859, "rank": 3 }, { "id": 50860, "label": "Add feature permissions", "status": { "id": 2 } } ]

 

Responses

  • STATUS 200 Returns a list of all checklists associated with the same issue in JSON format

  • status 400 Returned if the request body is invalid

  • status 404 Returned if the requested checklist is not found

Delete checklist items DELETE /rest/railsware/1.0/checklist/{checklistId}

Deletes all checklist items for the given checklist

 

Path parameters

  • checklistId: number (required)

Responses

  • STATUS 200 application/json returns empty checklist in JSON format

  • status 404 Returned if the requested checklist is not found

Create/Update checklist from string PUT /rest/railsware/1.0/checklist/{checklistId}/item

Creates or updates checklist items from string

Path parameters

  • checklistId: number (required)

Body parameters (application/json)

  • stringValue: string (required)

  • isReplace: boolean - replaces all checklist items by the provided string value if true, appends items to the end of the list otherwise

Example

1 2 3 4 { "isReplace": true, "stringValue": "# Release instructions2\n## Preparation\n+ Add feature permissions\n+ Send `internal` announcement with presentation\n~ Prepare branch\n> * merge feature to master\n> * set tag\n> * update changelog.com" }

Responses

  • STATUS 200 Returns a list of all checklists associated with the same issue in JSON format

/rest/railsware/1.0/template/

Get templates list GET /rest/railsware/1.0/template/global

Returns a paginated list of templates available in Jira

 

Query parameters

  • page: number (default 1)

  • reversed: boolean - specifies ASC or DESC order of templates

  • query: string - specifies the filter by template name

  • orderBy: string - specifies the order column of templates. Valid values are name, enabled, issueTypes and projects

Responses

  • STATUS 200 application/json returns a list of templates in JSON format

    Example:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 { "totalPages": 1, "templates": [ { "id": 2, "name": "For manual", "value": "- uno\n- duo\n- tres\n", "enabled": true, "defaultContext": { "type": 0, "values": [] }, "scope": { "type": 1, "values": [ { "value": "10000", "label": "Test 1", "iconUrl": "http://localhost:2990/jira/secure/projectavatar?size=xsmall&avatarId=10324", "link": "" }, { "value": "10001", "label": "Second Project", "iconUrl": "http://localhost:2990/jira/secure/projectavatar?size=xsmall&avatarId=10324", "link": "" } ] }, "conditions": [], "trigger": { "type": 3, "preventDuplicates": false }, "usageCount": 0, "modificationType": "APPEND" }, { "id": 3, "name": "Release", "value": "# Release instuctions\n## Preparation\n+ Add feature permissions\n+ Send `internal` announcement\n~ Prepare branch\n> * merge feature to master\n> * set tag\n> * update changlog.com\n## Deploy\n- Deploy master to prod\nx Deploy new login page\n- Test and confirm successful deployment\n- Send `external` announcement to customers\n", "enabled": true, "defaultContext": { "type": 2, "values": [ { "value": "10000", "label": "Task", "iconUrl": "http://localhost:2990/jira/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype" } ] }, "scope": { "type": 0, "values": [] }, "conditions": [ { "field": { "id": "issuetype", "type": "MULTI_SELECT", "suggestionFieldId": "issuetype" }, "option": "IS_ONE_OF", "values": [ "10000" ] }, { "field": { "id": "priority", "type": "PRIORITY", "suggestionFieldId": "priority" }, "option": "GREATER_THAN", "values": [ "2" ] } ], "trigger": { "type": 2, "to": [ "6", "10001", "5" ], "preventDuplicates": false }, "usageCount": 0, "modificationType": "APPEND" }, { "id": 1, "name": "Test", "value": "- item 1\n- item 2\n- item 3\n", "enabled": false, "defaultContext": { "type": 1, "values": [] }, "scope": { "type": 2, "values": [ { "value": "10000", "label": "Test 1", "iconUrl": "http://localhost:2990/jira/secure/projectavatar?size=xsmall&avatarId=10324", "link": "" } ] }, "conditions": [ { "field": { "id": "summary", "type": "SINGLE_LINE_TEXT", "suggestionFieldId": "summary" }, "option": "CONTAINS", "values": [ "urgent" ] }, { "field": { "id": "issuetype", "type": "MULTI_SELECT", "suggestionFieldId": "issuetype" }, "option": "ALL", "values": [] } ], "trigger": { "type": 0, "preventDuplicates": false }, "usageCount": 0, "modificationType": "APPEND" } ] }
  • status 400 Returned if the request parameters are invalid

Get project templates GET /rest/railsware/1.0/template/project/{projectId}

Returns a paginated list of project templates

Path parameters

  • projectId: number

Query parameters

  • page: number (default 1)

  • global: boolean - if true returns templates for ALL projects scope and Multiple project scope that contains selected project

  • reversed: boolean - specify ASC or DESC order of templates by name

     

Responses

  • status 200 application/json returns a list of project templates in JSON format
    Example:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 { "totalPages": 1, "templates": [ { "id": 2, "name": "For manual", "value": "- uno\n- duo\n- tres\n", "enabled": true, "defaultContext": { "type": 0, "values": [] }, "scope": { "type": 1, "values": [ { "value": "10000", "label": "Test 1", "iconUrl": "http://localhost:2990/jira/secure/projectavatar?size=xsmall&avatarId=10324", "link": "" }, { "value": "10001", "label": "Second Project", "iconUrl": "http://localhost:2990/jira/secure/projectavatar?size=xsmall&avatarId=10324", "link": "" } ] }, "conditions": [], "trigger": { "type": 3, "preventDuplicates": false }, "usageCount": 0, "modificationType": "APPEND" }, { "id": 3, "name": "Release", "value": "# Release instuctions\n## Preparation\n+ Add feature permissions\n+ Send `internal` announcement\n~ Prepare branch\n> * merge feature to master\n> * set tag\n> * update changlog.com\n## Deploy\n- Deploy master to prod\nx Deploy new login page\n- Test and confirm successful deployment\n- Send `external` announcement to customers\n", "enabled": true, "defaultContext": { "type": 2, "values": [ { "value": "10000", "label": "Task", "iconUrl": "http://localhost:2990/jira/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype" } ] }, "scope": { "type": 0, "values": [] }, "conditions": [ { "field": { "id": "issuetype", "type": "MULTI_SELECT", "suggestionFieldId": "issuetype" }, "option": "IS_ONE_OF", "values": [ "10000" ] }, { "field": { "id": "priority", "type": "PRIORITY", "suggestionFieldId": "priority" }, "option": "GREATER_THAN", "values": [ "2" ] } ], "trigger": { "type": 2, "to": [ "6", "10001", "5" ], "preventDuplicates": false }, "usageCount": 0, "modificationType": "APPEND" } ] }
  • status 404 returned if the requested project is not found

  • status 400 returned if the request parameters are invalid

 

Get template by ID GET /rest/railsware/1.0/template/{templateId}

Returns the Smart Checklist template by id

Path parameters

  • templateId: number

Responses

  • status 200 application/json returns a single template in JSON format
    Example:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 { "id": 3, "name": "Release", "value": "# Release instuctions\n## Preparation\n+ Add feature permissions\n+ Send `internal` announcement\n~ Prepare branch\n> * merge feature to master\n> * set tag\n> * update changlog.com\n## Deploy\n- Deploy master to prod\nx Deploy new login page\n- Test and confirm successful deployment\n- Send `external` announcement to customers\n", "enabled": true, "defaultContext": { "type": 2, "values": [ { "value": "10000", "label": "Task", "iconUrl": "http://localhost:2990/jira/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype" } ] }, "scope": { "type": 0, "values": [] }, "conditions": [ { "field": { "id": "issuetype", "type": "MULTI_SELECT", "suggestionFieldId": "issuetype" }, "option": "IS_ONE_OF", "values": [ "10000" ] }, { "field": { "id": "priority", "type": "PRIORITY", "suggestionFieldId": "priority" }, "option": "GREATER_THAN", "values": [ "2" ] } ], "trigger": { "type": 2, "to": [ "6", "10001", "5" ], "preventDuplicates": false }, "usageCount": 0, "modificationType": "APPEND" }
  • status 404 returned if the requested template is not found


Get templates fields GET /rest/railsware/1.0/template/fields

Returns a supported list of fields with types for template condition section

Supported options per field types are:

  • MULTI_SELECT - EQUALS, DOES_NOT_EQUAL, IS_ONE_OF, IS_NOT_ONE_OF

  • SINGLE_SELECT - EQUALS, CONTAINS_ANY_OF, CONTAINS_ALL_OF, CONTAINS_NONE_OF

  • USER - EQUALS, DOES_NOT_EQUAL, IS_ONE_OF, IS_NOT_ONE_OF

  • SINGLE_LINE_TEXT - EQUALS, DOES_NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, DOES_NOT_CONTAIN

  • MULTI_LINE_TEXT - EQUALS, DOES_NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, DOES_NOT_CONTAIN

  • NUMBER - EQUALS, DOES_NOT_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO

  • PRIORITY - EQUALS, DOES_NOT_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO, IS_ONE_OF, IS_NOT_ONE_OF

  • RESOLUTION - EQUALS, DOES_NOT_EQUAL, IS_ONE_OF, IS_NOT_ONE_OF, IS_RESOLVED, IS_UNRESOLVED

  • REQUEST_TYPE - EQUALS, DOES_NOT_EQUAL, IS_ONE_OF, IS_NOT_ONE_OF

Also, if a field has property “canBeEmpty” equal to ‘true’, a list of options will extend with two additional values - IS_EMPTY and IS_NOT_EMPTY

 

Responses

  • status 200 application/json returns a list of fields in JSON format
    Example:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 [ { "id": "summary", "type": "SINGLE_LINE_TEXT", "name": "Summary", "canBeEmpty": true, "suggestionFieldId": "summary" }, { "id": "issuetype", "type": "MULTI_SELECT", "name": "Issue Type", "canBeEmpty": false, "suggestionFieldId": "issuetype" }, { "id": "status", "type": "MULTI_SELECT", "name": "Status", "canBeEmpty": false, "suggestionFieldId": "status" }, { "id": "priority", "type": "PRIORITY", "name": "Priority", "canBeEmpty": false, "suggestionFieldId": "priority" }, { "id": "resolution", "type": "RESOLUTION", "name": "Resolution", "canBeEmpty": false, "suggestionFieldId": "resolution" }, { "id": "assignee", "type": "USER", "name": "Assignee", "canBeEmpty": true, "suggestionFieldId": "assignee" }, { "id": "reporter", "type": "USER", "name": "Reporter", "canBeEmpty": true, "suggestionFieldId": "reporter" }, { "id": "creator", "type": "USER", "name": "Creator", "canBeEmpty": true, "suggestionFieldId": "creator" }, { "id": "affectedVersion", "type": "MULTI_SELECT", "name": "Affects Version/s", "canBeEmpty": true, "suggestionFieldId": "affectedVersion" }, { "id": "fixVersion", "type": "MULTI_SELECT", "name": "Fix Version/s", "canBeEmpty": true, "suggestionFieldId": "fixVersion" }, { "id": "component", "type": "MULTI_SELECT", "name": "Component/s", "canBeEmpty": true, "suggestionFieldId": "component" }, { "id": "environment", "type": "MULTI_LINE_TEXT", "name": "Environment", "canBeEmpty": true, "suggestionFieldId": "environment" }, { "id": "description", "type": "MULTI_LINE_TEXT", "name": "Description", "canBeEmpty": true, "suggestionFieldId": "description" }, { "id": "labels", "type": "MULTI_SELECT", "name": "Labels", "canBeEmpty": true, "suggestionFieldId": "labels" }, { "id": "customfield_10001", "type": "MULTI_LINE_TEXT", "name": "Checklists", "canBeEmpty": true, "suggestionFieldId": "cf[10001]" }, { "id": "customfield_10002", "type": "SINGLE_LINE_TEXT", "name": "Smart Checklist Progress", "canBeEmpty": true, "suggestionFieldId": "cf[10002]" } ]

Create template POST /rest/railsware/1.0/template

Creates a new template



Body parameters (application/json)

  • name: string (required) - specifies a template name

  • value: string - specifies checklist value in string format

  • enabled: boolean (true by default)

  • scope: object (required) - specifies a scope of projects to be displayed on
    type: number - (0 - All projects, 1 - Multiple projects, 2 - Single project)
    values: array of project ids

  • trigger: object - specifies a trigger for automatically template applying
    type: number - (0 - Issue created, 1 - Issue updated, 2 - Issue transitioned, 3 - none)
    from: array of status ids - available only for Issue transitioned trigger type
    to: array of status ids - available only for Issue transitioned trigger type
    preventDuplicates: boolean

  • conditions: array of objects - specifies a list of conditions that have to be checked before applying a template
    field: object
    type: string (required)
    id: string (required)
    option: string
    values: array of strings

Request body example:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 { "name": "Template name", "value": "- item 1\n", "enabled": true, "scope": { "type": 0, "values": [] }, "conditions": [ { "field": { "id": "resolution", "type": "RESOLUTION" }, "option": "IS_UNRESOLVED", "values": [] }, { "field": { "id": "issuetype", "type": "MULTI_SELECT" }, "option": "IS_ONE_OF", "values": [ "10000", "10001" ] }, { "field": { "id": "priority", "type": "PRIORITY" }, "option": "GREATER_THAN", "values": [ "2" ] } ], "trigger": { "type": 2, "from": ["4"], "to": [ "6", "10001", "5" ], "preventDuplicates": false } }

Responses

  • status 200 application/json returns the created template in JSON format

  • status 400 returned if the request parameters are invalid

 

Update template PUT /rest/railsware/1.0/template/{id}

Updates template


Path parameters

  • id: number (required)

 

Body parameters (application/json)

  • name: string (required) - specifies a template name

  • value: string - specifies checklist value in string format

  • enabled: boolean (true by default)

  • scope: object (required) - specifies a scope of projects to be displayed on
    type: number - (0 - All projects, 1 - Multiple projects, 2 - Single project)
    values: array of project ids

  • trigger: object - specifies a trigger for automatically template applying
    type: number - (0 - Issue created, 1 - Issue updated, 2 - Issue transitioned, 3 - none)
    from: array of status ids - available only for Issue transitioned trigger type
    to: array of status ids - available only for Issue transitioned trigger type
    preventDuplicates: boolean

  • conditions: array of objects - specifies a list of conditions that have to be checked before applying a template
    field: object
    type: string (required)
    id: string (required)
    option: string
    values: array of strings

Responses

  • status 200 application/json returns the created template in JSON format

  • status 400 returned if the request parameters are invalid


Delete template DELETE /rest/railsware/1.0/template/{id}

Deletes template by id

Path parameters

  • id: number (required)

Query parameters:

  • page: number

Responses

  • status 200 application/json Returns list of existing templates in JSON format

  • status 404 status 404 - returned if the requested template is not found