Français
Demandes à l’équipe
Les routes sont relatives à <PUBLIC_BASE_URL> ; les corps de requête et de réponse sont en JSON sauf mention contraire. L’authentification, les portées, la pagination et le format des erreurs sont décrits dans les guides de l’API REST.
GET /api/v1/support
Mes demandes et conversations
Demandes de workflow et conversations avec l’équipe, les plus récemment actives d’abord (toute l’organisation pour un administrateur). Une session seulement : écrire à l’équipe est le geste d’une personne.
Accès — Session de membre seulement : les clés d’API sont refusées (api_key.session_required).
Réponses
200 — Les fils.
| Champ | Type | Requis |
|---|---|---|
linked | boolean | oui |
threads | object[] | oui |
unreadCount | integer | oui |
syncedAt | string | null | oui |
Schéma JSON
json
{
"type": "object",
"properties": {
"linked": { "type": "boolean" },
"threads": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "string" },
"kind": { "type": "string", "enum": [ "request", "conversation" ] },
"subject": { "type": "string" },
"status": {
"anyOf": [
{
"type": "string",
"enum": [
"received",
"in_study",
"quoted",
"in_progress",
"delivered",
"rejected"
]
},
{ "type": "string", "enum": [ "open", "closed" ] }
]
},
"assigneeName": { "anyOf": [ { "type": "string" }, { "type": "null" } ] },
"authorName": { "type": "string" },
"authorMemberId": { "anyOf": [ { "type": "string" }, { "type": "null" } ] },
"createdAt": { "type": "string" },
"updatedAt": { "type": "string" },
"lastMessageAt": { "type": "string" },
"messageCount": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
"unread": { "type": "boolean" },
"pending": { "type": "boolean" }
},
"required": [
"id",
"kind",
"subject",
"status",
"assigneeName",
"authorName",
"authorMemberId",
"createdAt",
"updatedAt",
"lastMessageAt",
"messageCount",
"unread",
"pending"
],
"additionalProperties": false
}
},
"unreadCount": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
"syncedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }
},
"required": [ "linked", "threads", "unreadCount", "syncedAt" ],
"additionalProperties": false
}401 — Aucune session ni clé d’API valide (auth.unauthenticated).
403 — Refusé : rôle insuffisant (auth.forbidden), portée manquante (api_key.scope_missing, details.required la nomme) ou route fermée aux clés (api_key.session_required).
429 — La clé d’API dépasse son débit (api_key.rate_limited) ; Retry-After dit quand réessayer.
GET /api/v1/support/threads/{id}
Lire un fil
Accès — Session de membre seulement : les clés d’API sont refusées (api_key.session_required).
Paramètres
| Nom | Où | Type | Requis |
|---|---|---|---|
id | chemin | string | oui |
Réponses
200 — Le fil et ses messages.
| Champ | Type | Requis |
|---|---|---|
id | string | oui |
kind | "request" | "conversation" | oui |
subject | string | oui |
status | "received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed" | oui |
assigneeName | string | null | oui |
authorName | string | oui |
authorMemberId | string | null | oui |
createdAt | string | oui |
updatedAt | string | oui |
lastMessageAt | string | oui |
messageCount | integer | oui |
unread | boolean | oui |
pending | boolean | oui |
messages | object[] | oui |
Schéma JSON
json
{
"type": "object",
"properties": {
"id": { "type": "string" },
"kind": { "type": "string", "enum": [ "request", "conversation" ] },
"subject": { "type": "string" },
"status": {
"anyOf": [
{
"type": "string",
"enum": [
"received",
"in_study",
"quoted",
"in_progress",
"delivered",
"rejected"
]
},
{ "type": "string", "enum": [ "open", "closed" ] }
]
},
"assigneeName": { "anyOf": [ { "type": "string" }, { "type": "null" } ] },
"authorName": { "type": "string" },
"authorMemberId": { "anyOf": [ { "type": "string" }, { "type": "null" } ] },
"createdAt": { "type": "string" },
"updatedAt": { "type": "string" },
"lastMessageAt": { "type": "string" },
"messageCount": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
"unread": { "type": "boolean" },
"pending": { "type": "boolean" },
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "string" },
"direction": { "type": "string", "enum": [ "member", "team" ] },
"authorName": { "type": "string" },
"body": { "type": "string" },
"createdAt": { "type": "string" },
"pending": { "type": "boolean" }
},
"required": [ "id", "direction", "authorName", "body", "createdAt", "pending" ],
"additionalProperties": false
}
}
},
"required": [
"id",
"kind",
"subject",
"status",
"assigneeName",
"authorName",
"authorMemberId",
"createdAt",
"updatedAt",
"lastMessageAt",
"messageCount",
"unread",
"pending",
"messages"
],
"additionalProperties": false
}401 — Aucune session ni clé d’API valide (auth.unauthenticated).
403 — Refusé : rôle insuffisant (auth.forbidden), portée manquante (api_key.scope_missing, details.required la nomme) ou route fermée aux clés (api_key.session_required).
429 — La clé d’API dépasse son débit (api_key.rate_limited) ; Retry-After dit quand réessayer.
Codes d’erreur — support.not_found. Les codes communs (request.bad_request, auth.unauthenticated, api_key.scope_missing, api_key.rate_limited…) s’appliquent à toutes les routes ; voir Erreurs.
POST /api/v1/support/threads/{id}/read
Marquer un fil comme lu
Accès — Session de membre seulement : les clés d’API sont refusées (api_key.session_required).
Paramètres
| Nom | Où | Type | Requis |
|---|---|---|---|
id | chemin | string | oui |
Réponses
200 — Le fil, lu.
| Champ | Type | Requis |
|---|---|---|
id | string | oui |
kind | "request" | "conversation" | oui |
subject | string | oui |
status | "received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed" | oui |
assigneeName | string | null | oui |
authorName | string | oui |
authorMemberId | string | null | oui |
createdAt | string | oui |
updatedAt | string | oui |
lastMessageAt | string | oui |
messageCount | integer | oui |
unread | boolean | oui |
pending | boolean | oui |
messages | object[] | oui |
Même schéma que GET /api/v1/support/threads/{id}.
401 — Aucune session ni clé d’API valide (auth.unauthenticated).
403 — Refusé : rôle insuffisant (auth.forbidden), portée manquante (api_key.scope_missing, details.required la nomme) ou route fermée aux clés (api_key.session_required).
429 — La clé d’API dépasse son débit (api_key.rate_limited) ; Retry-After dit quand réessayer.
Codes d’erreur — support.not_found. Les codes communs (request.bad_request, auth.unauthenticated, api_key.scope_missing, api_key.rate_limited…) s’appliquent à toutes les routes ; voir Erreurs.
POST /api/v1/support/requests
Demander un nouveau workflow
Enregistrée aussitôt, puis envoyée à l’équipe (le statut revient d’elle). 409 support.not_linked sur une instance sans control plane.
Accès — Session de membre seulement : les clés d’API sont refusées (api_key.session_required).
Corps de la requête (application/json)
| Champ | Type | Requis |
|---|---|---|
title | string | oui |
need | string | oui |
Schéma JSON
json
{
"type": "object",
"properties": {
"title": { "type": "string", "minLength": 1, "maxLength": 160 },
"need": { "type": "string", "minLength": 1, "maxLength": 5000 }
},
"required": [ "title", "need" ]
}Réponses
201 — La demande.
| Champ | Type | Requis |
|---|---|---|
id | string | oui |
kind | "request" | "conversation" | oui |
subject | string | oui |
status | "received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed" | oui |
assigneeName | string | null | oui |
authorName | string | oui |
authorMemberId | string | null | oui |
createdAt | string | oui |
updatedAt | string | oui |
lastMessageAt | string | oui |
messageCount | integer | oui |
unread | boolean | oui |
pending | boolean | oui |
messages | object[] | oui |
Même schéma que GET /api/v1/support/threads/{id}.
400 — La requête ne respecte pas son schéma.
401 — Aucune session ni clé d’API valide (auth.unauthenticated).
403 — Refusé : rôle insuffisant (auth.forbidden), portée manquante (api_key.scope_missing, details.required la nomme) ou route fermée aux clés (api_key.session_required).
429 — La clé d’API dépasse son débit (api_key.rate_limited) ; Retry-After dit quand réessayer.
Codes d’erreur — support.bad_request, support.not_linked. Les codes communs (request.bad_request, auth.unauthenticated, api_key.scope_missing, api_key.rate_limited…) s’appliquent à toutes les routes ; voir Erreurs.
POST /api/v1/support/threads
Contacter l’équipe
Accès — Session de membre seulement : les clés d’API sont refusées (api_key.session_required).
Corps de la requête (application/json)
| Champ | Type | Requis |
|---|---|---|
subject | string | oui |
body | string | oui |
Schéma JSON
json
{
"type": "object",
"properties": {
"subject": { "type": "string", "minLength": 1, "maxLength": 160 },
"body": { "type": "string", "minLength": 1, "maxLength": 5000 }
},
"required": [ "subject", "body" ]
}Réponses
201 — La conversation.
| Champ | Type | Requis |
|---|---|---|
id | string | oui |
kind | "request" | "conversation" | oui |
subject | string | oui |
status | "received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed" | oui |
assigneeName | string | null | oui |
authorName | string | oui |
authorMemberId | string | null | oui |
createdAt | string | oui |
updatedAt | string | oui |
lastMessageAt | string | oui |
messageCount | integer | oui |
unread | boolean | oui |
pending | boolean | oui |
messages | object[] | oui |
Même schéma que GET /api/v1/support/threads/{id}.
400 — La requête ne respecte pas son schéma.
401 — Aucune session ni clé d’API valide (auth.unauthenticated).
403 — Refusé : rôle insuffisant (auth.forbidden), portée manquante (api_key.scope_missing, details.required la nomme) ou route fermée aux clés (api_key.session_required).
429 — La clé d’API dépasse son débit (api_key.rate_limited) ; Retry-After dit quand réessayer.
Codes d’erreur — support.bad_request, support.not_linked. Les codes communs (request.bad_request, auth.unauthenticated, api_key.scope_missing, api_key.rate_limited…) s’appliquent à toutes les routes ; voir Erreurs.
POST /api/v1/support/threads/{id}/messages
Répondre dans un fil
Accès — Session de membre seulement : les clés d’API sont refusées (api_key.session_required).
Paramètres
| Nom | Où | Type | Requis |
|---|---|---|---|
id | chemin | string | oui |
Corps de la requête (application/json)
| Champ | Type | Requis |
|---|---|---|
body | string | oui |
Schéma JSON
json
{
"type": "object",
"properties": { "body": { "type": "string", "minLength": 1, "maxLength": 5000 } },
"required": [ "body" ]
}Réponses
201 — Le fil, avec le message.
| Champ | Type | Requis |
|---|---|---|
id | string | oui |
kind | "request" | "conversation" | oui |
subject | string | oui |
status | "received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed" | oui |
assigneeName | string | null | oui |
authorName | string | oui |
authorMemberId | string | null | oui |
createdAt | string | oui |
updatedAt | string | oui |
lastMessageAt | string | oui |
messageCount | integer | oui |
unread | boolean | oui |
pending | boolean | oui |
messages | object[] | oui |
Même schéma que GET /api/v1/support/threads/{id}.
400 — La requête ne respecte pas son schéma.
401 — Aucune session ni clé d’API valide (auth.unauthenticated).
403 — Refusé : rôle insuffisant (auth.forbidden), portée manquante (api_key.scope_missing, details.required la nomme) ou route fermée aux clés (api_key.session_required).
429 — La clé d’API dépasse son débit (api_key.rate_limited) ; Retry-After dit quand réessayer.
Codes d’erreur — support.bad_request, support.not_found, support.not_linked. Les codes communs (request.bad_request, auth.unauthenticated, api_key.scope_missing, api_key.rate_limited…) s’appliquent à toutes les routes ; voir Erreurs.