For the complete documentation index, see llms.txt. This page is also available as Markdown.

Ticket status

A status says where a ticket stands in its lifecycle. Statuses are defined per tenant and identified by their name; displayName is the label meant for people and can be changed freely.

Exactly one status is the tenant's default — the one new tickets start in. position is the order they are meant to be shown in.

A ticket cannot move between arbitrary statuses: the permitted moves are defined as Status Transitions.

List ticket statuses

get

Returns the tenant's ticket statuses.

Filterable and sortablename, displayName, color, isDefault, position, createdAt, updatedAt.

position is the order they are meant to be shown in, isDefault marks the status a new ticket starts in. Exactly one status is the default.

Authorizations
AuthorizationstringRequired

Token issued by the central equipme authentication, sent as Bearer <token>.

Query parameters
filterstringOptional

JSON filter expression

searchstringOptional

Free-text term — no effect here

sortstringOptional

Comma-separated field:direction terms

fieldsstringOptional

Selection of fields and relations

Example: name,displayName,position
offsetintegerOptional

Number of entries to skip

Default: 0
limitintegerOptional

Page size, 1 to 100

Default: 100
Responses
200

OK

application/json
countintegerOptional
get/v1/ticket-statuses
GET /api/v1/ticket-statuses HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "count": 1,
  "data": [
    {
      "allowedSourceStatuses": [
        {
          "allowedSourceStatuses": [
            "[Circular Reference]"
          ],
          "allowedTargetStatuses": [
            "[Circular Reference]"
          ],
          "color": "#f5a623",
          "createdAt": "2026-01-01T00:00:00.000Z",
          "displayName": "In progress",
          "isDefault": true,
          "name": "in_progress",
          "position": 2,
          "tenant": {
            "id": 1,
            "name": "text"
          },
          "updatedAt": "2026-01-01T00:00:00.000Z"
        }
      ],
      "allowedTargetStatuses": [
        {
          "allowedSourceStatuses": [
            {
              "allowedSourceStatuses": [
                "[Circular Reference]"
              ],
              "allowedTargetStatuses": [
                "[Circular Reference]"
              ],
              "color": "#f5a623",
              "createdAt": "2026-01-01T00:00:00.000Z",
              "displayName": "In progress",
              "isDefault": true,
              "name": "in_progress",
              "position": 2,
              "tenant": {
                "id": 1,
                "name": "text"
              },
              "updatedAt": "2026-01-01T00:00:00.000Z"
            }
          ],
          "allowedTargetStatuses": [
            "[Circular Reference]"
          ],
          "color": "#f5a623",
          "createdAt": "2026-01-01T00:00:00.000Z",
          "displayName": "In progress",
          "isDefault": true,
          "name": "in_progress",
          "position": 2,
          "tenant": {
            "id": 1,
            "name": "text"
          },
          "updatedAt": "2026-01-01T00:00:00.000Z"
        }
      ],
      "color": "#f5a623",
      "createdAt": "2026-01-01T00:00:00.000Z",
      "displayName": "In progress",
      "isDefault": true,
      "name": "in_progress",
      "position": 2,
      "tenant": {
        "id": 1,
        "name": "text"
      },
      "updatedAt": "2026-01-01T00:00:00.000Z"
    }
  ]
}

Create a ticket status

post

Creates a ticket status. name identifies it from then on and displayName is what people see.

allowedSourceStatusNames and allowedTargetStatusNames create the transitions in the same request: which statuses may lead into this one, and which ones it may lead to. Without them the new status is reachable from nowhere.

Setting isDefault makes this the status new tickets start in and takes that role away from the status that held it.

Authorizations
AuthorizationstringRequired

Token issued by the central equipme authentication, sent as Bearer <token>.

Body
objectOptional
or
Responses
201

Created

application/json
post/v1/ticket-statuses
POST /api/v1/ticket-statuses HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2

{}
{
  "data": {
    "allowedSourceStatuses": [
      {
        "allowedSourceStatuses": [
          {
            "allowedSourceStatuses": "[Circular Reference]",
            "allowedTargetStatuses": "[Circular Reference]",
            "color": "#f5a623",
            "createdAt": "2026-01-01T00:00:00.000Z",
            "displayName": "In progress",
            "isDefault": true,
            "name": "in_progress",
            "position": 2,
            "tenant": {
              "id": 1,
              "name": "text"
            },
            "updatedAt": "2026-01-01T00:00:00.000Z"
          }
        ],
        "allowedTargetStatuses": [
          {
            "allowedSourceStatuses": "[Circular Reference]",
            "allowedTargetStatuses": "[Circular Reference]",
            "color": "#f5a623",
            "createdAt": "2026-01-01T00:00:00.000Z",
            "displayName": "In progress",
            "isDefault": true,
            "name": "in_progress",
            "position": 2,
            "tenant": {
              "id": 1,
              "name": "text"
            },
            "updatedAt": "2026-01-01T00:00:00.000Z"
          }
        ],
        "color": "#f5a623",
        "createdAt": "2026-01-01T00:00:00.000Z",
        "displayName": "In progress",
        "isDefault": true,
        "name": "in_progress",
        "position": 2,
        "tenant": {
          "id": 1,
          "name": "text"
        },
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "allowedTargetStatuses": [
      {
        "allowedSourceStatuses": "[Circular Reference]",
        "allowedTargetStatuses": "[Circular Reference]",
        "color": "#f5a623",
        "createdAt": "2026-01-01T00:00:00.000Z",
        "displayName": "In progress",
        "isDefault": true,
        "name": "in_progress",
        "position": 2,
        "tenant": {
          "id": 1,
          "name": "text"
        },
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "color": "#f5a623",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "displayName": "In progress",
    "isDefault": true,
    "name": "in_progress",
    "position": 2,
    "tenant": {
      "id": 1,
      "name": "text"
    },
    "updatedAt": "2026-01-01T00:00:00.000Z"
  }
}

Delete a ticket status

delete

Deletes a ticket status. Three cases are refused with 400:

  • the default status — assign a different default first,

  • the last remaining status,

  • a status still used by tickets without a migrationTargetName.

When tickets still carry the status, migrationTargetName names the status they are moved to; it has to differ from the one being deleted. The move and the deletion happen together, so no ticket is ever left without a status.

Authorizations
AuthorizationstringRequired

Token issued by the central equipme authentication, sent as Bearer <token>.

Path parameters
namestringRequired

Status name

Example: on_hold
Body
objectOptional
or
Responses
204

No Content

No content

delete/v1/ticket-statuses/{name}
DELETE /api/v1/ticket-statuses/{name} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2

{}

No content

Change a ticket status

patch

Changes a ticket status. The body follows JSON Merge Patch semantics: an absent field stays as it is, null clears it, a value sets it. The name cannot be changed — it is the identifier tickets refer to.

Setting isDefault to true moves the default here and clears it on the status that held it. Setting it to false on the current default is answered with 400: a tenant always has exactly one default, so assign a different one instead.

Authorizations
AuthorizationstringRequired

Token issued by the central equipme authentication, sent as Bearer <token>.

Path parameters
namestringRequired

Status name

Example: in_progress
Body
objectOptional
or
Responses
200

OK

application/json
patch/v1/ticket-statuses/{name}
PATCH /api/v1/ticket-statuses/{name} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2

{}
{
  "data": {
    "allowedSourceStatuses": [
      {
        "allowedSourceStatuses": [
          {
            "allowedSourceStatuses": "[Circular Reference]",
            "allowedTargetStatuses": "[Circular Reference]",
            "color": "#f5a623",
            "createdAt": "2026-01-01T00:00:00.000Z",
            "displayName": "In progress",
            "isDefault": true,
            "name": "in_progress",
            "position": 2,
            "tenant": {
              "id": 1,
              "name": "text"
            },
            "updatedAt": "2026-01-01T00:00:00.000Z"
          }
        ],
        "allowedTargetStatuses": [
          {
            "allowedSourceStatuses": "[Circular Reference]",
            "allowedTargetStatuses": "[Circular Reference]",
            "color": "#f5a623",
            "createdAt": "2026-01-01T00:00:00.000Z",
            "displayName": "In progress",
            "isDefault": true,
            "name": "in_progress",
            "position": 2,
            "tenant": {
              "id": 1,
              "name": "text"
            },
            "updatedAt": "2026-01-01T00:00:00.000Z"
          }
        ],
        "color": "#f5a623",
        "createdAt": "2026-01-01T00:00:00.000Z",
        "displayName": "In progress",
        "isDefault": true,
        "name": "in_progress",
        "position": 2,
        "tenant": {
          "id": 1,
          "name": "text"
        },
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "allowedTargetStatuses": [
      {
        "allowedSourceStatuses": "[Circular Reference]",
        "allowedTargetStatuses": "[Circular Reference]",
        "color": "#f5a623",
        "createdAt": "2026-01-01T00:00:00.000Z",
        "displayName": "In progress",
        "isDefault": true,
        "name": "in_progress",
        "position": 2,
        "tenant": {
          "id": 1,
          "name": "text"
        },
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "color": "#f5a623",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "displayName": "In progress",
    "isDefault": true,
    "name": "in_progress",
    "position": 2,
    "tenant": {
      "id": 1,
      "name": "text"
    },
    "updatedAt": "2026-01-01T00:00:00.000Z"
  }
}

Last updated

Was this helpful?