Assets API
GET/api/v1/assets/{id}/tickets
Product availabilityAlgaPSA

List tickets linked to an asset

Returns tickets associated with the path asset ID in the authenticated tenant, read from asset_associations where entity_type is ticket, joined to tickets and statuses. Results include the association relationship_type and linked_at and are ordered by ticket updated_at descending. This mirrors the asset detail UI and the assets.find_associated_tickets workflow action. The route is authenticated and tenant-scoped via withApiKeyRouteAuth (req.context is populated and RLS is active) and enforces BOTH asset:read and ticket:read because the response joins ticket data. It performs no asset existence check, so a valid caller hitting a nonexistent or cross-tenant asset ID gets 200 with an empty array (tenant scoping prevents cross-tenant leakage; this is not an authorization bypass).

RBAC · asset

Path parameters

idstring <uuid>Required
Asset UUID from assets.asset_id.

Response body

Success response 200 · schema AssetTicketListResponse

successbooleanRequired
Enum: true
dataarray of AssetTicketRowRequired
Tickets linked to the asset via asset_associations, ordered by ticket updated_at descending. Empty when no associations exist or the asset is not found.
itemsobject
ticket_idstring <uuid>Required
Ticket UUID from tickets.ticket_id.
ticket_numberstringRequired
Human-readable ticket number from tickets.ticket_number.
titlestringNullable
Ticket title.
status_idstring <uuid>Nullable
Status UUID from tickets.status_id.
status_namestringNullable
Status name from the joined statuses table.
is_closedbooleanNullable
Whether the ticket is closed.
priority_idstring <uuid>Nullable
Priority UUID from tickets.priority_id.
assigned_tostring <uuid>Nullable
Assigned user UUID from tickets.assigned_to.
client_idstring <uuid>Nullable
Client UUID from tickets.client_id.
board_idstring <uuid>Nullable
Board UUID from tickets.board_id.
entered_atstringNullable
Ticket creation timestamp.
updated_atstringNullable
Ticket last update timestamp.
relationship_typestringRequired
Association type from asset_associations.relationship_type (e.g. affected, related).
association_notesstringNullable
Optional notes from asset_associations.notes.
linked_atstringNullable
When the asset was linked to the ticket, from asset_associations.created_at.
metaobjectRequired
timestampstring <date-time>Required
Response timestamp generated by createApiResponse/createErrorResponse.
versionstringRequired
API response version string.

Response codes

200
Linked tickets returned successfully. Empty when no associations exist or the asset is not found.
401
x-api-key missing/invalid.
403
Caller lacks asset:read or ticket:read.
500
Unexpected error.