Aller au contenu principal

Tickets de support (Administration)

Base URL : /api/v1/admin/org/tickets

Gestion des tickets de support de l'organisation.


Structure d'un ticket​

ChampTypeDescription
iduuidIdentifiant
organization_iduuidOrganisation
titlestringTitre
descriptionstring?Description
statusstringopen, in_progress, waiting_on_customer, resolved, closed
prioritystringlow, medium, high, critical
categorystringtechnical, financial, card_issue, product_issue, other
assigned_touuid?Assigné à
created_byuuidCréateur
resolved_atdatetime?Résolu le
created_at / updated_atdatetimeHorodatage

Structure d'un message​

ChampTypeDescription
iduuidIdentifiant
ticket_iduuidTicket
author_iduuidAuteur
author_kindstringstaff ou customer
contentstringContenu
created_atdatetimeDate

GET /admin/org/tickets​

Liste paginée des tickets.

Permissions : ticket.read

ParamTypeDéfautDescription
statusstring—Filtrer par statut
limitinteger20
offsetinteger0

Réponse (200) : { "items": [Ticket], "total": n }


GET /admin/org/tickets/{id}​

Détail d'un ticket et ses 20 premiers messages.

Permissions : ticket.read

{
"ticket": { "id": "uuid", "title": "...", "status": "open" },
"messages": [
{
"id": "uuid",
"author_kind": "customer",
"author_id": "uuid",
"content": "...",
"created_at": "2025-01-20T10:00:00Z"
}
]
}

POST /admin/org/tickets​

Crée un ticket. Si une description est fournie, elle devient le premier message (author_kind = "customer").

Permissions : ticket.create

ChampTypeRequisDescription
titlestringOuiTitre (non vide)
descriptionstringNonDescription
prioritystringNonDéfaut medium
categorystringNonDéfaut other

Réponse (201) : { "message": "Ticket créé", "ticket": {...} }


PUT /admin/org/tickets/{id}​

Met à jour les métadonnées (priorité, catégorie, assignation).

Permissions : ticket.update

{ "priority": "urgent", "category": "financial", "assigned_to": "uuid" }

Réponse (200) : { "message": "Ticket mis à jour", "ticket": {...} }


PUT /admin/org/tickets/{id}/status​

Change le statut d'un ticket.

Permissions : ticket.update

{ "status": "in_progress" }

Statuts valides : open, in_progress, waiting_on_customer, resolved, closed.

Réponse (200) : { "message": "Statut mis à jour", "ticket": {...} }


GET /admin/org/tickets/{ticket_id}/messages​

Liste les messages d'un ticket.

Permissions : ticket.read

ParamTypeDéfaut
limitinteger20
offsetinteger0

Réponse (200) : { "items": [TicketMessage], "total": n }


POST /admin/org/tickets/{ticket_id}/messages​

Ajoute un message à un ticket.

Permissions : ticket.create

{
"author_kind": "staff",
"content": "Nous vérifions votre transaction."
}

author_id provient du JWT. content doit être non vide.

Réponse (200) : { "message": "Message ajouté", "msg": {...} }


Permissions​

PermissionDescription
ticket.read / ticket.create / ticket.updateLecture, création, mise à jour
reservation.manageSuper-permission couvrant ticket.*
Côté utilisateur

Les porteurs et agents disposent de leurs propres endpoints de tickets sous /me/tickets.