support

Embed
Preview of the card
<a href="https://gaiadesk.net/docs/ref-support"><img src="https://gaiadesk.net/docs/_api/public/orgs/89a5df38-be2c-4963-8823-21d4bd40a2ab/spaces/57b99ea0-d45a-4986-8aa6-6b0683c9fe1d/pages/50f2923d-e159-49b2-9e64-9e49c59e7c7c/social-card.svg?v=3e7ae33eec8b" alt="support" width="600" height="315"></a>
GEThttps://api.gaiadesk.net/v1/support/seatsScope support

Who on the caller's team holds a support seat, and how many seats the plan grants.

Support is billed per seat: only a team member holding a support seat may join (take) the team's support sessions as an agent in the console; any other member's join is refused (support_seat_required). How many seats a team has is its plan's support_seats (-1 = unlimited; free and pro 1, team and enterprise unlimited, unless the team's entitlement says otherwise). Creating sessions needs no seat.

The team's owner always holds a seat (owner_seat; it counts toward the limit and is never removed). The first time a team's seats are used, members who joined one of its support sessions as an agent in the last 30 days are given seats, most recent first, up to the limit (audited support_seat.auto_assigned), so the upgrade locks nobody out.

Every team member may read this. you.seated says whether the caller may join now. A team over its limit (a downgrade) keeps its oldest assignments working (seated); the newer ones wait (assigned but not seated). An account with no team (team: false) is its own one agent. Not for publishable keys.

Code samples

cURL
curl -X GET "https://api.gaiadesk.net/v1/support/seats" \
  -H "Authorization: Bearer $GAIADESK_API_KEY"
TypeScript
Python
Go
PHP
Ruby
Java

Responses

200 The team's seats.
Example
{
  "team": true,
  "limit": 0,
  "used": 0,
  "you": {
    "user_id": 0,
    "seated": true,
    "admin": true
  },
  "members": [
    {
      "user_id": 0,
      "email": "string",
      "name": "string",
      "role": "string",
      "assigned": true,
      "seated": true,
      "owner_seat": true,
      "assigned_at": 0,
      "assigned_by": "string"
    }
  ]
}
Schema
teambooleanrequired
false: the account is in no team, and is its own one agent.
limitintegerrequired
The seats the plan grants (support_seats; -1 = unlimited).
usedintegerrequired
Seats assigned.
youobjectrequired
Show child parameters
user_idintegerrequired
seatedbooleanrequired
The caller may join support sessions now.
adminbooleanrequired
The caller may assign seats.
membersApiSupportSeat[]required
Show child parameters
user_idintegerrequired
emailstringrequired
namestringrequired
rolestringrequired
Their team role (owner, admin, member).
assignedbooleanrequired
An admin gave them a seat.
seatedbooleanrequired
They may join support sessions now (assigned, and within the plan's seats).
owner_seatbooleanrequired
The team's owner's seat, held implicitly (counted, never removed).
assigned_atintegerrequired
assigned_bystringrequired
The admin who assigned it; owner for the owner's seat; system:support-seats when it was given automatically at set-up.
Headers
X-Request-Idstring
This request's id (req_…), also in every error body. Quote it to support.
401 No credential, or one that does not verify (refused, unauthenticated).
Example
{
  "error": {
    "desk": "string",
    "kind": "string",
    "message": "string",
    "reason": "string",
    "request_id": "string",
    "status": 0
  },
  "e2e": {
    "v": 0,
    "events": [
      {
        "seq": 0,
        "nonce": "string",
        "ciphertext": "string"
      }
    ]
  }
}
Schema
errorError & objectrequired
The CLI's error object plus this request's id.
Show child parameters
deskstring
The desk it concerned, when there was one.
kindstringrequired
The six kinds a program branches on. Stable: a new kind would be a breaking change, so match with a wildcard arm anyway.
messagestringrequired
reasonstring
The finer cause: offline, unknown_desk, not_online, network, not_signed_in, timeout, local, …
request_idstringrequired
statusinteger
Only in a held body (GaiaDesk-Held) — the HTTP status this failure would have had, had its 200 not been sent already.
e2eobject
An end-to-end encrypted operation's events; the last opens to the desk's real error (its message here is a placeholder).
Show child parameters
vintegerrequired
eventsApiE2eFrame[]required
Show child parameters
seqintegerrequired
noncestringrequired
ciphertextstringrequired
403 The credential lacks the scope, or may not use this API (refused).

Same as 401 · GET /support/seats

429 Over this key's rate limit (refused, rate_limited).

Same as 401 · GET /support/seats

Headers
Retry-Afterinteger
Seconds to wait before trying again.
RateLimit-Limitinteger
Requests allowed per window for this key.
RateLimit-Remaininginteger
Requests left in the current window.
RateLimit-Resetinteger
Seconds until the window resets.
PUThttps://api.gaiadesk.net/v1/support/seats/{user_id}Scope support

Give a team member a support seat (team owners and admins).

Idempotent. Refused beyond the plan's seats (409 support_seats_exhausted), for a caller who is not the team's owner or an admin (403 not_a_team_admin), outside a team (403 no_team), and for anyone not on the team (404 unknown_member). Audited (support_seat.assigned, support_seat.refused).

Parameters

user_idstringpathrequired
The member's user id (members[].user_id).

Code samples

cURL
curl -X PUT "https://api.gaiadesk.net/v1/support/seats/{user_id}" \
  -H "Authorization: Bearer $GAIADESK_API_KEY"
TypeScript
Python
Go
PHP
Ruby
Java

Responses

200 The member, with their seat.
Example
{
  "user_id": 0,
  "email": "string",
  "name": "string",
  "role": "string",
  "assigned": true,
  "seated": true,
  "owner_seat": true,
  "assigned_at": 0,
  "assigned_by": "string"
}
Schema
user_idintegerrequired
emailstringrequired
namestringrequired
rolestringrequired
Their team role (owner, admin, member).
assignedbooleanrequired
An admin gave them a seat.
seatedbooleanrequired
They may join support sessions now (assigned, and within the plan's seats).
owner_seatbooleanrequired
The team's owner's seat, held implicitly (counted, never removed).
assigned_atintegerrequired
assigned_bystringrequired
The admin who assigned it; owner for the owner's seat; system:support-seats when it was given automatically at set-up.
Headers
X-Request-Idstring
This request's id (req_…), also in every error body. Quote it to support.
401 No credential, or one that does not verify (refused, unauthenticated).

Same as 401 · GET /support/seats

403 The credential lacks the scope, or may not use this API (refused).

Same as 401 · GET /support/seats

404 No such desk or resource visible to the caller (unreachable, unknown_desk).

Same as 401 · GET /support/seats

409 Every support seat the team's plan grants is taken (refused, support_seats_exhausted).

Same as 401 · GET /support/seats

429 Over this key's rate limit (refused, rate_limited).

Same as 401 · GET /support/seats

Headers
Retry-Afterinteger
Seconds to wait before trying again.
RateLimit-Limitinteger
Requests allowed per window for this key.
RateLimit-Remaininginteger
Requests left in the current window.
RateLimit-Resetinteger
Seconds until the window resets.
DELETEhttps://api.gaiadesk.net/v1/support/seats/{user_id}Scope support

Take a team member's support seat back (team owners and admins).

Idempotent. A support session the member is in now runs on; their next join is refused. The owner's seat is never removed (403 owner_seat). Audited (support_seat.removed).

Parameters

user_idstringpathrequired
The member's user id (members[].user_id).

Code samples

cURL
curl -X DELETE "https://api.gaiadesk.net/v1/support/seats/{user_id}" \
  -H "Authorization: Bearer $GAIADESK_API_KEY"
TypeScript
Python
Go
PHP
Ruby
Java

Responses

200 The member, without a seat.

Same as 200 · PUT /support/seats/{user_id}

Headers
X-Request-Idstring
This request's id (req_…), also in every error body. Quote it to support.
401 No credential, or one that does not verify (refused, unauthenticated).

Same as 401 · GET /support/seats

403 The credential lacks the scope, or may not use this API (refused).

Same as 401 · GET /support/seats

404 No such desk or resource visible to the caller (unreachable, unknown_desk).

Same as 401 · GET /support/seats

429 Over this key's rate limit (refused, rate_limited).

Same as 401 · GET /support/seats

Headers
Retry-Afterinteger
Seconds to wait before trying again.
RateLimit-Limitinteger
Requests allowed per window for this key.
RateLimit-Remaininginteger
Requests left in the current window.
RateLimit-Resetinteger
Seconds until the window resets.
Updated