AuralisDocs
OperationsTickets

Update many tickets at once

Multi-ticket update. Skips tickets whose current status doesn't legally permit the requested mutation (so a bulk "Mark solved" on a list that includes already-merged tickets safely...

/v1/tickets/bulkAdmin
Operation id
bulk_update
Access
An editor or a viewer is refused.
POST/v1/tickets/bulk

Multi-ticket update. Skips tickets whose current status doesn't legally permit the requested mutation (so a bulk "Mark solved" on a list that includes already-merged tickets safely no-ops on those).

At most 200 ids per call, and at least one. A skip is not a failure: the response reports updated_ids and skipped_ids so a caller can see exactly which tickets moved, and a partly skipped call is still a 200.

Solving in bulk has the same side effects as solving one at a time, including the CSAT request on each ticket that reaches solved for the first time.

A repeated id is one submission: the caller gets one bucket entry per distinct id, so updated + skipped counts tickets rather than array slots.

Every effective change emits a ticket_event so the audit timeline holds.

Tenancy: the request is scoped to one workspace, and the credential presented is what selects it. A caller with no membership in that workspace is refused with 404, which is indistinguishable from a workspace that does not exist.

Authorisation: admin or owner. An editor or viewer receives 403 insufficient_role.

Access: Authorization: Bearer carrying either a realm access token or an API key. A key must hold the tickets:write scope, and the workspace role of the person who owns it must meet the floor above.

Authorization

AuthorizationBearer <token>

A realm-issued access token, presented as Authorization: Bearer <token>. It acts as the person who signed in, and every operation resolves their workspace role live from the membership record.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/tickets/bulk" \  -H "Content-Type: application/json" \  -d '{    "ticket_ids": [      "5e8b0c31-7a4d-4f92-b6c8-1d3e2a5f7b90",      "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f"    ],    "status": "solved",    "assignee_id": "3fe98b76-2409-5003-b75a-93e56b450433"  }'
{  "submitted": 2,  "updated_ids": [    "5e8b0c31-7a4d-4f92-b6c8-1d3e2a5f7b90"  ],  "skipped_ids": [    "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f"  ],  "updated": 1,  "skipped": 1}