Something new is coming up soon from Kanishu — stay tuned.

Developers › API reference

ITSM

Base address https://itsm.kanishu.com/api/v1 · Download the OpenAPI description (for Postman, code generators and the like).

Conventions shared by every endpoint — tokens, headers, lists, safe retries, versions, limits — are in the developer guide; error codes are on Error codes. Each endpoint below names the scope a token needs.

Jump to: Changes · Component · Knowledge · People · Tickets

Changes

GET /api/v1/changes/audit-feed

Audit Feed (changes audit feed) · scope changes:audit-read

ParameterInTypeAbout
page_sizequeryintegerAnswer in pages of this many records (10–2000). Without it, everything comes back at once.
afterqueryintegerThe `meta.next_after` from the previous page (start with 0).
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — Records in id order. With page_size, `meta.next_after` is the `after` for the next page (null on the last).

Reply fields (26) — each record in data

Also in the answer: meta.

standard_changeobject, can be nullThe approved standard change it follows, if any.
standard_change.idinteger
standard_change.namestring
standard_change.versioninteger
standard_change.linked_by_namestring, can be null
standard_change.linked_atstring (date and time, ISO 8601), can be null
standard_change.in_scopeboolean, can be nullWhether the person linking confirmed the change fits the standard's scope.
standard_change.approved_atstring (date and time, ISO 8601), can be null
standard_change.approved_before_linkbooleantrue when the standard was approved before this change was linked to it.
standard_change.self_approvedbooleantrue when the standard's approver also wrote or submitted it.
standard_change.status_nowstring, can be null
standard_change.review_due_onstring (date), can be null
standard_change.failuresintegerHow many changes under this standard have failed.
idinteger
subjectstring
change_typestringstandard (pre-approved), normal or emergency.
riskstringAssessed risk: low, medium or high.
statusstring
implementation_planstringHow the change will be carried out.
rollback_planstring, can be nullHow it will be undone if it fails.
outcomestring, can be nullHow it went once done: successful, failed or partial (null until then).
created_by_user_idinteger
created_by_namestring
approved_by_user_idinteger, can be nullWho approved it.
approved_atstring (date and time, ISO 8601), can be null
closed_atstring (date and time, ISO 8601), can be null

Need fewer? Add ?fields= with the names you want, e.g. ?fields=standard_change,subject.

Component

POST /api/v1/component-tickets

Store For Component (component tickets) · scope tickets:write

Request fields (JSON body)

description requiredstring
organization_id requiredintegerYour organisation's id.
prioritystring: low, medium, high, urgent, can be null
related_component_display_name requiredstring (up to 255)A readable name for it (e.g. the asset tag).
related_component_id requiredintegerThat record's id in the other product.
related_component_type requiredstring: asset, license, vendorWhat the ticket is about in the other product (e.g. asset, license).
reporter_email requiredstring (email) (up to 255)
reporter_name requiredstring (up to 255)
subject requiredstring (up to 255)

200 — OK.

Reply fields (2)
idinteger
urlstring

Knowledge

GET /api/v1/knowledge

List knowledge · scope knowledge:read

ParameterInTypeAbout
qquerystringSearch text.
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — Every matching record in one answer.

Reply fields (5) — each record in data
idinteger
titlestring
excerptstringThe start of the article, for lists and search results.
categorystring, can be null
urlstringWhere the article is in Ticketing.

Need fewer? Add ?fields= with the names you want, e.g. ?fields=title,excerpt.

GET /api/v1/knowledge/{id}

Get one of knowledge · scope knowledge:read

ParameterInTypeAbout
id requiredpathinteger
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — OK.

Reply fields (5)
idinteger
titlestring
bodystringThe full article.
categorystring, can be null
updated_atstring (date and time, ISO 8601)

Need fewer? Add ?fields= with the names you want, e.g. ?fields=title,body.

People

GET /api/v1/people

List people · scope people:read

ParameterInTypeAbout
pagequeryintegerPage number, from 1.
per_pagequeryintegerItems a page (default 25, at most 100).
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — A page of results.

Reply fields (24) — each record in data

Also in the answer: meta, links.

idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

Need fewer? Add ?fields= with the names you want, e.g. ?fields=display_name,preferred_name.

POST /api/v1/people

Create in people · scope people:write

Request fields (JSON body)

access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
display_name requiredstring (up to 255)The name shown everywhere in Kanishu.
employee_numberstring (up to 50), can be nullYour own employee number for them (e.g. from payroll or HR).
employment_statusstring: pre_joining, active, on_leave, leaving, leftpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
location_idstring (uuid), can be null
manager_person_idstring (uuid), can be nullThe manager's People id.
org_unit_idstring (uuid), can be nullThe department or team id, from GET /people-organisation.
person_typestring: employee, contractor, external, otheremployee, contractor, external (auditor, consultant…) or other.
position_idstring (uuid), can be null
preferred_namestring (up to 255), can be nullWhat they like to be called, if different.
work_emailstring (email) (up to 255), can be nullTheir work email address; how they are matched to logins in the products.

201 — Created. The record is in `data`; its address in `Location`.

Reply fields (24) — in data
idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

GET /api/v1/people-organisation

Organisation (people organisation) · scope people:read

ParameterInTypeAbout
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — OK. The record is in `data`, with its version in the `ETag` header.

Reply fields (18) — in data
departmentslist
departments[].idstring (uuid)
departments[].namestring
departments[].typestringWhat kind of unit it is (e.g. department, team, business unit).
departments[].codestring
departments[].part_of_idinteger or string, can be nullThe unit this one sits under, or null at the top.
departments[].in_usebooleanfalse when the unit is archived and no longer offered.
positionslist
positions[].idstring (uuid)
positions[].namestring
positions[].codestring, can be null
positions[].in_usebooleanfalse when the position is archived.
locationslist
locations[].idstring (uuid)
locations[].namestring
locations[].codestring, can be null
locations[].citystring, can be null
locations[].in_usebooleanfalse when the location is archived.

Need fewer? Add ?fields= with the names you want, e.g. ?fields=departments,positions.

POST /api/v1/people/joiners

Add a joiner (from their start date) · scope people:write

Request fields (JSON body)

accesslist of string, can be nullLogins they should get, as product key => role (e.g. {"itsm": "agent"}); each one waits for an approval.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
display_name requiredstring (up to 255)The name shown everywhere in Kanishu.
employee_numberstring (up to 50), can be nullYour own employee number for them (e.g. from payroll or HR).
employment_statusstring: pre_joining, active, on_leave, leaving, leftpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
location_idstring (uuid), can be null
manager_person_idstring (uuid), can be nullThe manager's People id.
org_unit_idstring (uuid), can be nullThe department or team id, from GET /people-organisation.
person_typestring: employee, contractor, external, otheremployee, contractor, external (auditor, consultant…) or other.
position_idstring (uuid), can be null
preferred_namestring (up to 255), can be nullWhat they like to be called, if different.
start_date requiredstring (date)Their first working day; their logins are prepared for it.
work_emailstring (email) (up to 255), can be nullTheir work email address; how they are matched to logins in the products.

201 — The new person, as GET /people/{person} returns them.

Reply fields (24) — in data
idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

GET /api/v1/people/{person}

Get one of people · scope people:read

ParameterInTypeAbout
person requiredpathinteger
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — OK. The record is in `data`, with its version in the `ETag` header.

Reply fields (24) — in data
idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

Need fewer? Add ?fields= with the names you want, e.g. ?fields=display_name,preferred_name.

PATCH /api/v1/people/{person}

Change one of people · scope people:write

ParameterInTypeAbout
person requiredpathinteger

Request fields (JSON body) — send only the fields you change

access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
display_namestring (up to 255)The name shown everywhere in Kanishu.
employee_numberstring (up to 50), can be nullYour own employee number for them (e.g. from payroll or HR).
employment_statusstring: pre_joining, active, on_leave, leaving, leftpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
location_idstring (uuid), can be null
manager_person_idstring (uuid), can be nullThe manager's People id.
org_unit_idstring (uuid), can be nullThe department or team id, from GET /people-organisation.
person_typestring: employee, contractor, external, otheremployee, contractor, external (auditor, consultant…) or other.
position_idstring (uuid), can be null
preferred_namestring (up to 255), can be nullWhat they like to be called, if different.
work_emailstring (email) (up to 255), can be nullTheir work email address; how they are matched to logins in the products.

200 — OK. The record is in `data`, with its version in the `ETag` header.

Reply fields (24) — in data
idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

POST /api/v1/people/{person}/leave

Record a leaver (logins switched off after the last working day, or now if urgent) · scope people:write

ParameterInTypeAbout
person requiredpathinteger

Request fields (JSON body)

last_working_date requiredstring (date)Their last working day, once they are leaving; their logins are switched off after it.
reasonstring (up to 500), can be nullWhy they are leaving (kept in People's History).
urgentbooleantrue to switch their logins off now instead of after the last working day.

200 — The person, as GET /people/{person} returns them.

Reply fields (24) — in data
idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

POST /api/v1/people/{person}/move

Move a person (department, manager, position or location) from a date · scope people:write

ParameterInTypeAbout
person requiredpathinteger

Request fields (JSON body)

department_idstring (uuid), can be nullThe department or team they move to, from GET /people-organisation.
effective_date requiredstring (date)The date the move takes effect.
location_idstring (uuid), can be null
manager_idstring (uuid), can be nullTheir new manager's People id.
position_idstring (uuid), can be null

200 — The person, as GET /people/{person} returns them.

Reply fields (24) — in data
idstring (uuid)The person's id in People (a UUID). Use it with /people/{person}.
display_namestringThe name shown everywhere in Kanishu.
preferred_namestring, can be nullWhat they like to be called, if different.
work_emailstringTheir work email address; how they are matched to logins in the products.
employee_numberstring, can be nullYour own employee number for them (e.g. from payroll or HR).
typestringemployee, contractor, external (auditor, consultant…) or other.
statusstringpre_joining (joining soon), active, on_leave, leaving (last working day set) or left.
joining_datestring (date), can be nullTheir first working day.
last_working_datestring (date), can be nullTheir last working day, once they are leaving; their logins are switched off after it.
access_end_datestring (date), can be nullWhen their access to Kanishu products ends, if earlier or later than the last working day (e.g. contractors).
departmentobject, can be nullTheir department or team (id and name), from GET /people-organisation.
department.idstring (uuid)
department.namestring
positionobject, can be nullTheir job position (id and name).
position.idstring (uuid)
position.namestring
locationobject, can be nullTheir office or site (id and name).
location.idstring (uuid)
location.namestring
managerobject, can be nullTheir manager in People (id and display_name).
manager.idstring (uuid)
manager.display_namestring
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)

Tickets

GET /api/v1/tickets

List tickets · scope tickets:read

ParameterInTypeAbout
related_component_typequerystring
related_component_idquerystring
requester_domainquerystring
requester_emailsquerystring
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.
includequerystringRelated records in the same answer, comma-separated: `comments` — The ticket's public comments (internal notes are never included): author_name, body, created_at — as on GET /tickets/{id} (needs `comments:read`); `fulfillment_tasks` — The request's fulfilment tasks: id, name, status, requires_approval — as GET /tickets/{id}/fulfillment-tasks returns them (needs `tickets:read`); `relationships` — Linked tickets: label, ticket_id, subject, status — as GET /tickets/{id}/relationships returns them (needs `tickets:read`).

200 — Every matching record in one answer.

Reply fields (11) — each record in data
idinteger
subjectstring
statusstringopen, in_progress, pending, blocked, resolved, closed, not_applicable or cancelled.
prioritystringlow, medium, high or urgent.
categorystring, can be nullThe ticket's category name.
assigned_tostring, can be nullName of the agent working on it, or null.
created_atstring (date and time, ISO 8601)
urlstringWhere the ticket is in Ticketing (add it to https://itsm.kanishu.com).
commentslistOnly with ?include=comments. The ticket's public comments (internal notes are never included): author_name, body, created_at — as on GET /tickets/{id}.
fulfillment_taskslistOnly with ?include=fulfillment_tasks. The request's fulfilment tasks: id, name, status, requires_approval — as GET /tickets/{id}/fulfillment-tasks returns them.
relationshipslistOnly with ?include=relationships. Linked tickets: label, ticket_id, subject, status — as GET /tickets/{id}/relationships returns them.

Need fewer? Add ?fields= with the names you want, e.g. ?fields=subject,status.

POST /api/v1/tickets

Create in tickets · scope tickets:write

Request fields (JSON body)

category_idinteger, can be nullA ticket category id; leave out to let your routing rules decide.
description requiredstring
prioritystring: low, medium, high, urgent, can be nulllow, medium, high or urgent.
subject requiredstring (up to 255)

201 — Created.

Reply fields (2)
idinteger
urlstringWhere the ticket is in Ticketing (add it to https://itsm.kanishu.com).

GET /api/v1/tickets/audit-feed

Audit Feed (tickets audit feed) · scope tickets:audit-read

ParameterInTypeAbout
page_sizequeryintegerAnswer in pages of this many records (10–2000). Without it, everything comes back at once.
afterqueryintegerThe `meta.next_after` from the previous page (start with 0).
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — Records in id order. With page_size, `meta.next_after` is the `after` for the next page (null on the last).

Reply fields (9) — each record in data

Also in the answer: meta.

idinteger
subjectstring
statusstringopen, in_progress, pending, blocked, resolved, closed, not_applicable or cancelled.
prioritystringlow, medium, high or urgent.
categorystring, can be nullThe ticket's category name.
resolved_atstring (date and time, ISO 8601), can be null
closed_atstring (date and time, ISO 8601), can be null
problem_idinteger, can be nullThe problem record the incident is linked to, if any (audit feed).
problem_root_causestring, can be nullThe linked problem's root cause, if recorded (audit feed).

Need fewer? Add ?fields= with the names you want, e.g. ?fields=subject,status.

GET /api/v1/tickets/{id}

Get one of tickets · scope tickets:read

ParameterInTypeAbout
id requiredpathinteger
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — OK.

Reply fields (12)
idinteger
subjectstring
descriptionstring
statusstringopen, in_progress, pending, blocked, resolved, closed, not_applicable or cancelled.
prioritystringlow, medium, high or urgent.
categorystring, can be nullThe ticket's category name.
assigned_tostring, can be nullName of the agent working on it, or null.
requester_namestringWho raised it.
created_atstring (date and time, ISO 8601)
updated_atstring (date and time, ISO 8601)
resolved_atstring (date and time, ISO 8601), can be null
commentslist

Need fewer? Add ?fields= with the names you want, e.g. ?fields=subject,description.

POST /api/v1/tickets/{id}/comments

Store Comment (tickets comments) · scope tickets:write

ParameterInTypeAbout
id requiredpathinteger

Request fields (JSON body)

author_name requiredstring (up to 255)Name to show as the comment's author.
body requiredstring

200 — OK.

Reply fields (2)
idinteger
created_atstring (date and time, ISO 8601)

POST /api/v1/tickets/{id}/csat

Submit Csat (tickets csat) · scope tickets:write

ParameterInTypeAbout
id requiredpathinteger

Request fields (JSON body)

csat_commentstring (up to 2000), can be null
csat_rating requiredintegerSatisfaction rating from 1 (poor) to 5 (excellent).

200 — OK.

Reply fields (1)
okboolean

GET /api/v1/tickets/{id}/fulfillment-tasks

Fulfillment Tasks (tickets fulfillment tasks) · scope tickets:read

ParameterInTypeAbout
id requiredpathinteger
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — OK.

POST /api/v1/tickets/{id}/fulfillment-tasks/{taskId}/complete

Complete Fulfillment Task (tickets fulfillment tasks complete) · scope tickets:write

ParameterInTypeAbout
id requiredpathinteger
taskId requiredpathinteger

200 — OK.

Reply fields (2)
idinteger
statusstringopen, in_progress, pending, blocked, resolved, closed, not_applicable or cancelled.

GET /api/v1/tickets/{id}/relationships

Relationships (tickets relationships) · scope tickets:read

ParameterInTypeAbout
id requiredpathinteger
fieldsquerystringOnly these fields of each record, comma-separated (e.g. `id,name`; nested: `owner.name`). `id` always comes back.

200 — OK.