Skip to content

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.

ChampTypeRequis
linkedbooleanoui
threadsobject[]oui
unreadCountintegeroui
syncedAtstring | nulloui
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

NomOùTypeRequis
idcheminstringoui

Réponses

200 — Le fil et ses messages.

ChampTypeRequis
idstringoui
kind"request" | "conversation"oui
subjectstringoui
status"received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed"oui
assigneeNamestring | nulloui
authorNamestringoui
authorMemberIdstring | nulloui
createdAtstringoui
updatedAtstringoui
lastMessageAtstringoui
messageCountintegeroui
unreadbooleanoui
pendingbooleanoui
messagesobject[]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

NomOùTypeRequis
idcheminstringoui

Réponses

200 — Le fil, lu.

ChampTypeRequis
idstringoui
kind"request" | "conversation"oui
subjectstringoui
status"received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed"oui
assigneeNamestring | nulloui
authorNamestringoui
authorMemberIdstring | nulloui
createdAtstringoui
updatedAtstringoui
lastMessageAtstringoui
messageCountintegeroui
unreadbooleanoui
pendingbooleanoui
messagesobject[]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)

ChampTypeRequis
titlestringoui
needstringoui
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.

ChampTypeRequis
idstringoui
kind"request" | "conversation"oui
subjectstringoui
status"received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed"oui
assigneeNamestring | nulloui
authorNamestringoui
authorMemberIdstring | nulloui
createdAtstringoui
updatedAtstringoui
lastMessageAtstringoui
messageCountintegeroui
unreadbooleanoui
pendingbooleanoui
messagesobject[]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)

ChampTypeRequis
subjectstringoui
bodystringoui
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.

ChampTypeRequis
idstringoui
kind"request" | "conversation"oui
subjectstringoui
status"received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed"oui
assigneeNamestring | nulloui
authorNamestringoui
authorMemberIdstring | nulloui
createdAtstringoui
updatedAtstringoui
lastMessageAtstringoui
messageCountintegeroui
unreadbooleanoui
pendingbooleanoui
messagesobject[]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

NomOùTypeRequis
idcheminstringoui

Corps de la requête (application/json)

ChampTypeRequis
bodystringoui
Schéma JSON
json
{
  "type": "object",
  "properties": { "body": { "type": "string", "minLength": 1, "maxLength": 5000 } },
  "required": [ "body" ]
}

Réponses

201 — Le fil, avec le message.

ChampTypeRequis
idstringoui
kind"request" | "conversation"oui
subjectstringoui
status"received" | "in_study" | "quoted" | "in_progress" | "delivered" | "rejected" | "open" | "closed"oui
assigneeNamestring | nulloui
authorNamestringoui
authorMemberIdstring | nulloui
createdAtstringoui
updatedAtstringoui
lastMessageAtstringoui
messageCountintegeroui
unreadbooleanoui
pendingbooleanoui
messagesobject[]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.

Loop & Roll — le constructeur de workflows pour l’e-mail.