Smart Checklist REST API v1.0

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

Retrieves 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

{ "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:

[ { "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

{ "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:

{ "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:

{ "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:

    { "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:

    [ { "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:

{ "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)

  • projectId: number (optional) - specifies a project ID

  • 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

Apply template to the issue POST /rest/railsware/1.0/checklist{checklistId}/template/{templateId}

Apply template to the issue

Path parameters

  • checklistId: number (required)

  • templateId: number (required)

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

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

Deletes template by id

Path parameters

  • id: number (required)

Query parameters:

  • page: number

  • projectId: number (optional) - specifies project ID

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

New Get Smart Checklist history GET /rest/railsware/1.0/history - available from v6.5.0

Retrieves an existing list of changes/updates done to the checklist for the given issue key

Query parameters:

  • issueKey: string (required)

Responses

  • status 200 application/json Returns list of all history events for the checklist associated with the provided issue key in JSON format

New Run migration POST /rest/railsware/1.0/migration

Start the storage migration or migration from other apps (My ToDo, Elements Checklist)

Query parameters:

  • migrationOption: string

    • possible values: OVERRIDE, APPEND, ADD-IF-EMPTY

  • migrationType: string

    • possible values: STORAGE, ELEMENTS, MY_TO_DO

  • projectIds: array of project IDs

Example

{ "migrationOption": "OVERRIDE", "migrationType": "ELEMENTS", "projectIds": [11001, 10900] }

 

Responses

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

  • status 400 status 400 - returned if values for query parameters are not correct

REST API endpoints will not be accessible for all the users with the introduced custom permissions in the Smart Checklist v6.4.1.

Resources based on permissions

REST API endpoints with Jira Standard permission

 

 

Jira Standard Permission (Role)

 

 

Jira Standard Permission (Role)

REST API Resources

Description

Browse Projects

Edit Issues

Administer Projects

Site Admin

GET /rest/railsware/1.0/checklist

Get checklist

GET /rest/railsware/1.0/history

Get Smart Checklist history

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

Update checklist

 

 

 

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

Delete checklist items

 

 

 

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

Create/Update checklist from string

 

 

 

GET /rest/railsware/1.0/template/global

Get template list

 

 

 

GET rest/railsware/1.0/template/project/{{projectId}}?reversed=false&page=1&global=true

Get global templates

 

GET /rest/railsware/1.0/template/project/{projectId}?reversed=false&page=1&global=false

Get project templates

 

GET /rest/railsware/1.0/template/{templateId}

Get template by ID

 

 

 

GET /rest/railsware/1.0/template/fields

Get template fields

 

 

 

POST /rest/railsware/1.0/template

Create template

 

only with "scope":{"type":2,"values":["projectId"] in request

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

Delete template

 

 

only if add ?projectId={id} to the endpoint

PUT rest/railsware/1.0/template/{Id}

Update template

 

 

only with "projectId" in request body

 

REST API endpoints with Custom permissions to View and Work with Smart Checklist

You can set up Custom Permissions to View and Work with Smart Checklist starting from Smart Checklist v6.4.1.

 

 

Custom Smart Checklist permission

Jira permission

 

 

Custom Smart Checklist permission

Jira permission

REST API Resources

Description

View Smart Checklist

Add Smart Checklist Items

Set status of Smart Checklist Items

Delete Smart Checklist Items

Manage Smart Checklist Items

Manage Smart Checklist Templates

Project Admin

Site Admin

GET /rest/railsware/1.0/checklist

Get checklist

GET /rest/railsware/1.0/history

Get Smart Checklist history

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

Update checklist

 

 

only change status of checklist items

 

 

 

 

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

Delete checklist items

 

 

 

 

 

 

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

Create/Update checklist from string

 

only add new items with "isReplace": false in request

 

 

 

 

 

GET /rest/railsware/1.0/template/global

Get template list

 

 

 

 

 

 

 

GET rest/railsware/1.0/template/project/{{projectId}}?reversed=false&page=1&global=true

Get global templates

 

 

 

GET /rest/railsware/1.0/template/project/{projectId}?reversed=false&page=1&global=false

Get project templates

 

 

 

GET /rest/railsware/1.0/template/{templateId}

Get template by ID

 

 

 

 

 

 

 

GET /rest/railsware/1.0/template/fields

Get template fields

 

 

 

 

 

 

 

POST /rest/railsware/1.0/template

Create template

 

 

 

only with "scope":{"type":2,"values":["projectId"] in request

only with "scope":{"type":2,"values":["projectId"] in request

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

Delete template

 

 

 

 

 

only if add ?projectId={id} to the endpoint

only if add ?projectId={id} to the endpoint

PUT rest/railsware/1.0/template/{Id}

Update template

 

 

 

 

 

only with "projectId" in request body

only with "projectId" in request body