Reply to a ticket as provider
const url = 'https://api.aetherplatform.cloud/api/v1/admin/tickets/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/messages';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"body":"example","attachments":["example"],"attachment_ids":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.aetherplatform.cloud/api/v1/admin/tickets/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/messages \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "body": "example", "attachments": [ "example" ], "attachment_ids": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ] }'Appends a provider-authored message (author_type = provider, author_id from the caller’s JWT subject) to any ticket’s thread. In one transaction it recomputes the ticket’s status (a provider reply on an open ticket moves it to in_progress), stamps first_response_at on the first provider message, and enqueues the ticket.updated webhook. A notification email to the tenant is sent best-effort after commit. Requires the platform-admin realm role.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Support ticket UUID.
Request Bodyrequired
Section titled “Request Bodyrequired”object
IDs of pending attachments (previously reserved via the presign-upload endpoint) to confirm onto this message. Each id must be a pending upload owned by this ticket; any foreign/unknown id rejects the whole message (422) and rolls back the transaction.
Examplegenerated
{ "body": "example", "attachments": [ "example" ], "attachment_ids": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ]}Responses
Section titled “Responses”Message created.
object
JWT subject of the author; null for API-token requests.
Opaque legacy attachments blob (structured attachments arrive in a later phase).
Example
{ "author_type": "tenant"}Missing or invalid credentials.
object
object
A stable, machine-readable error code.
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "field": "example", "code": "example", "message": "example" } ] }}The credential was accepted but lacks the required role or access (e.g. a non-platform-admin calling an /api/v1/admin endpoint).
object
object
A stable, machine-readable error code.
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "field": "example", "code": "example", "message": "example" } ] }}The requested resource was not found.
object
object
A stable, machine-readable error code.
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "field": "example", "code": "example", "message": "example" } ] }}Request validation failed.
object
object
A stable, machine-readable error code.
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": [ { "field": "example", "code": "example", "message": "example" } ] }}