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 ☝🏼 NOTE: For issues with multiple checklist tabs, all Public API calls will only interact with the Default Checklist tab.
/rest/railsware/1.0/checklist Get checklists GET /rest/railsware/1.0/checklist
Retrieves an existing list of checklists for the given issue key
Expand
Query parameters Responses {
"checklists": [
{
"checklistId": 829,
"issueId": 13657,
"mentionedUsers": {
"mariya": "mariya"
},
"items": [
{
"id": 26403,
"checklistId": 829,
"label": "INVEST",
"rank": 0,
"status": null,
"quotes": [],
"assignees": [],
"history": {
"id": 19902,
"itemId": 26403,
"checklistId": 829,
"type": "ITEM_CREATED",
"from": "",
"to": "",
"date": 1718634937972,
"user": "Admin Admin"
},
"mandatory": false,
"value": "## INVEST",
"level": 2,
"type": "HEADING",
"isCheckbox": false
},
{
"id": 26398,
"checklistId": 829,
"label": "**Independent.** The user story is self contained. @mariya ",
"rank": 1,
"status": {
"id": 1,
"rank": 0,
"statusState": "UNCHECKED",
"name": "TO DO",
"color": "GRAY",
"default": true
},
"quotes": [],
"assignees": [
{
"id": 518,
"userName": "mariya",
"displayName": "mariya"
}
],
"history": {
"id": 19904,
"itemId": 26398,
"checklistId": 829,
"type": "ITEM_UPDATED",
"from": "TO DO",
"to": "TO DO",
"date": 1718634945507,
"user": "Admin Admin"
},
"mandatory": false,
"value": "**Independent.** The user story is self contained. @mariya ",
"level": null,
"type": "item",
"isCheckbox": true
},
{
"id": 26399,
"checklistId": 829,
"label": "**Negotiable.** The details of the user story can be negotiated and refined, as the team gets a better understanding of the requirements.",
"rank": 2,
"status": {
"id": 1,
"rank": 0,
"statusState": "UNCHECKED",
"name": "TO DO",
"color": "GRAY",
"default": true
},
"quotes": [],
"assignees": [],
"history": {
"id": 19898,
"itemId": 26399,
"checklistId": 829,
"type": "ITEM_CREATED",
"from": "",
"to": "TO DO",
"date": 1718634937972,
"user": "Admin Admin"
},
"mandatory": false,
"value": "**Negotiable.** The details of the user story can be negotiated and refined, as the team gets a better understanding of the requirements.",
"level": null,
"type": "item",
"isCheckbox": true
},
{
"id": 26400,
"checklistId": 829,
"label": "**Valuable.** The user story clearly defines and provides value to the end-users or stakeholders.",
"rank": 3,
"status": {
"id": 1,
"rank": 0,
"statusState": "UNCHECKED",
"name": "TO DO",
"color": "GRAY",
"default": true
},
"quotes": [],
"assignees": [],
"history": {
"id": 19899,
"itemId": 26400,
"checklistId": 829,
"type": "ITEM_CREATED",
"from": "",
"to": "TO DO",
"date": 1718634937972,
"user": "Admin Admin"
},
"mandatory": false,
"value": "**Valuable.** The user story clearly defines and provides value to the end-users or stakeholders.",
"level": null,
"type": "item",
"isCheckbox": true
},
{
"id": 26401,
"checklistId": 829,
"label": "**Estimable.** The user story may be accurately estimated.",
"rank": 4,
"status": {
"id": 1,
"rank": 0,
"statusState": "UNCHECKED",
"name": "TO DO",
"color": "GRAY",
"default": true
},
"quotes": [],
"assignees": [],
"history": {
"id": 19900,
"itemId": 26401,
"checklistId": 829,
"type": "ITEM_CREATED",
"from": "",
"to": "TO DO",
"date": 1718634937972,
"user": "Admin Admin"
},
"mandatory": false,
"value": "**Estimable.** The user story may be accurately estimated.",
"level": null,
"type": "item",
"isCheckbox": true
},
{
"id": 26402,
"checklistId": 829,
"label": "**Testable.** ",
"rank": 5,
"status": {
"id": 1,
"rank": 0,
"statusState": "UNCHECKED",
"name": "TO DO",
"color": "GRAY",
"default": true
},
"quotes": [
{
"id": 5626,
"rank": 0,
"text": "The user story may be tested ",
"label": "The user story may be tested ",
"value": "The user story may be tested "
},
{
"id": 5627,
"rank": 1,
"text": "and has a clear acceptance criterias for evaluation of completion.",
"label": "and has a clear acceptance criterias for evaluation of completion.",
"value": "and has a clear acceptance criterias for evaluation of completion."
}
],
"assignees": [],
"history": {
"id": 19901,
"itemId": 26402,
"checklistId": 829,
"type": "ITEM_CREATED",
"from": "",
"to": "TO DO",
"date": 1718634937972,
"user": "Admin Admin"
},
"mandatory": false,
"value": "**Testable.** ",
"level": null,
"type": "item",
"isCheckbox": true
},
{
"id": 26404,
"checklistId": 829,
"label": "Note: this is an example",
"rank": 6,
"status": null,
"quotes": [],
"assignees": [],
"history": {
"id": 19903,
"itemId": 26404,
"checklistId": 829,
"type": "ITEM_CREATED",
"from": "",
"to": "",
"date": 1718634937972,
"user": "Admin Admin"
},
"mandatory": false,
"value": "Note: this is an example",
"level": null,
"type": "raw",
"isCheckbox": false
}
]
}
]
}
Update checklist PUT /rest/railsware/1.0/checklist/{checklistId}
Updates checklist items
Expand
Path parameters Body parameters (application/json) - list of JSON objects: id: number
rank: number
label: string
level: number
mandatory: boolean
status: object
Example Changes the item 26401
position and changes label + status of item 26398
:
[
{
"id": 26401,
"rank": 2
},
{
"id": 26398,
"label": "**Independent.** The user story is self contained",
"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
Create/Update checklist from string PUT /rest/railsware/1.0/checklist/{checklistId}/item
Creates or updates checklist items from string
Expand
Path parameters 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 /rest/railsware/1.0/template/ Get templates list GET /rest/railsware/1.0/template/global
Returns a paginated list of templates available in Jira
Expand
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
{
"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"
}
]
}
Get project templates GET /rest/railsware/1.0/template/project/{projectId}
Returns a paginated list of project templates
Expand
Path parameters Query parameters Responses {
"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"
}
]
}
Get template by ID GET /rest/railsware/1.0/template/{templateId}
Returns the Smart Checklist template by id
Get templates fields GET /rest/railsware/1.0/template/fields
Returns a supported list of fields with types for template condition section
Expand
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 Create template POST /rest/railsware/1.0/template
Creates a new template
Expand
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
Update template PUT /rest/railsware/1.0/template/{id}
Updates template
Expand
Path parametersBody 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 Apply template to the issue POST /rest/railsware/1.0/checklist{checklistId}/template/{templateId}
Apply template to the issue
Delete template DELETE /rest/railsware/1.0/template/{id}
Deletes template by id
Expand
Path parameters Query parameters: Responses New Get Smart Checklist history GET /rest/railsware/1.0/history
- available from v6.5.0Retrieves an existing list of changes/updates done to the checklist for the given issue key
Expand
Query parameters: Responses New Run migration POST /rest/railsware/1.0/migration
Start the storage migration or migration from other apps (My ToDo, Elements Checklist)
Expand
Query parameters: Example {
"migrationOption": "OVERRIDE",
"migrationType": "ELEMENTS",
"projectIds": [11001, 10900],
"parameters":{"START_DATE": "2024-05-01T14:26:00", "END_DATE":"2024-05-03T14:26:00"},
"dryRun": true}
}
Responses 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
Custom Smart Checklist permission
Custom Smart Checklist 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