Zum Hauptinhalt springen
DokumentationIdentität und Zugriff · console.eu.ccsio.ai

Support access

Operator support mode: a time-boxed, read-only session of a platform operator in one organization, and the organization's switch for it.

Menü der Dokumentation

Die Beschreibungen der Operationen und Felder stammen aus dem Vertrag und sind auf Englisch.

GET/identity/v1/organizations/{org}/support-sessions

List the support sessions of an organization

Anmeldedaten
API-Key
Berechtigung
Eine vonaudit.readsupport-sessions.manage

Needs audit.read in the organization (root and organization_admin hold it) or, from the backoffice, support-sessions.manage. Lists the organization's support sessions newest first, the active ones and the ended ones, with the operator's name and email as recorded when the session started. state narrows to active or ended (default: both); limit is 1 to 200 (default 50). Failures: 400 invalid-request (a query value out of range); 403 policy-denied; 500 server faults.

curl
curl "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-sessions" \
  -H "Authorization: Bearer $CCSIO_API_KEY"

Parameter

NameInBeschreibung
X-Request-ID
optional
headerstring

Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form.

org
Pflicht
pathstring

The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid.

state
optional
querystring

active or ended; absent lists both.

limit
optional
queryinteger

Page size, 1 to 200. Default 50.

Antworten

  • 200

    The organization's support sessions.

    Schema
    SupportSessionList
    • sessionsarray of SupportSessionPflicht

      Newest first by started_at, then session_id.

      • session_idstringPflicht

        pattern ^[0-9A-HJKMNP-TV-Z]{26}$

      • organization_idstringPflicht

        pattern ^[a-z][a-z0-9._-]{0,63}$

      • operatorobjectPflicht

        The operator who holds the session, as the plane recorded the person when the session started (their name and email are frozen on the session, so the record survives a later rename or a change of identity provider). display_name and email are null only when the staff directory gave none; every caller who may list the sessions (audit.read in the organization, support-sessions.manage in the plane) reads them, because they are the record of who accessed the organization.

        • user_refstringPflicht

          The operator's user_ref in this plane (user/staff/...), the value GET /identity/v1/context reports as identity.ref for that person's session.

          pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$

        • display_namestring or nullPflicht

          The operator's display name; null when the staff directory gave none.

          at most 128 characters

        • emailstring or nullPflicht

          The operator's email address; null when the staff directory gave none.

          at most 254 characters

      • reasonstringPflicht

        Why the operator opened the session, as they wrote it: one line, shown to the organization.

        10 to 128 characters

      • statusstringPflicht

        Erlaubte Werte: "active""ended"

      • started_atstring (date-time)Pflicht

        When the session was opened. RFC 3339, second precision, UTC. Set by the database clock.

      • expires_atstring (date-time)Pflicht

        When the access stops. started_at plus the duration; never later than four hours after started_at. A session is never extended: a new one needs a new reason.

      • remaining_secondsintegerPflicht

        Seconds of access left, computed by the database clock; 0 once the session ended. A client counts down from this value and not from its own clock.

        at least 0

      • ended_atstring (date-time) or nullPflicht

        When the access stopped (expires_at for an expiry); null while the session is active.

      • end_reasonstring or nullPflicht

        Why it ended. operator: the operator ended it; platform: another operator did; organization: an administrator of the organization did; access_disabled: the organization turned support access off; operator_signed_out: the operator signed out of the backoffice (best effort); expired: the time box ran out; start_failed: the session could not be recorded when it started and never gave access. null while active.

        Erlaubte Werte: "operator""platform""organization""access_disabled""operator_signed_out""expired""start_failed"null

      • ended_bystring or nullPflicht

        The user_ref of the person who ended it; null while active, and for an expiry or a session that never started.

        pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$

  • 400

    Client refusal unrelated to authentication, including malformed input, a denied or failed request.

  • 401

    The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:

    Weiterlesen

    Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled

  • 402

    The organization has to pay first: its standing is payment_required.

    Weiterlesen

    The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required

  • 403

    The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.

    Weiterlesen

    Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)

  • 404

    The requested resource or path was not found.

  • 405

    The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.

  • 500

    Platform failure, rendered without internal cause details.

  • 503

    A dependency the operation needs is not configured on this plane or could not be reached, and nothing was changed. `error.code` names it; an operation lists the ones it can answer besides the boundary's. Retry later. Codes: support-audit-unavailable (the request boundary: an operator's read under an open support session could not be recorded, so nothing was served)

POST/identity/v1/organizations/{org}/support-sessions/{id}/end

End a support session

Anmeldedaten
API-Key
Berechtigung
Eine vonorganization.updatesupport-sessions.manage

Needs organization.update in the organization (an administrator ends a session of their own organization at any time) or support-sessions.manage (a platform operator ends any session, their own included). Ends the session at once: the operator's next read is 403 support-session-required.

Weiterlesen

Sensitive: recorded as support.session_ended, with who ended it. No request body. Failures: 403 policy-denied; 404 support-session-not-found (an unknown id, or one of another organization); 409 support-session-ended (it already ended or its time ran out); 500 server faults.

curl
curl -X POST "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-sessions/{id}/end" \
  -H "Authorization: Bearer $CCSIO_API_KEY"

Parameter

NameInBeschreibung
X-Request-ID
optional
headerstring

Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form.

org
Pflicht
pathstring

The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid.

id
Pflicht
pathstring

The support session id (a ULID). An unknown id, or one of another organization, is 404 support-session-not-found.

Antworten

  • 200

    The ended session.

    Schema
    SupportSession
    • session_idstringPflicht

      pattern ^[0-9A-HJKMNP-TV-Z]{26}$

    • organization_idstringPflicht

      pattern ^[a-z][a-z0-9._-]{0,63}$

    • operatorobjectPflicht

      The operator who holds the session, as the plane recorded the person when the session started (their name and email are frozen on the session, so the record survives a later rename or a change of identity provider). display_name and email are null only when the staff directory gave none; every caller who may list the sessions (audit.read in the organization, support-sessions.manage in the plane) reads them, because they are the record of who accessed the organization.

      • user_refstringPflicht

        The operator's user_ref in this plane (user/staff/...), the value GET /identity/v1/context reports as identity.ref for that person's session.

        pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$

      • display_namestring or nullPflicht

        The operator's display name; null when the staff directory gave none.

        at most 128 characters

      • emailstring or nullPflicht

        The operator's email address; null when the staff directory gave none.

        at most 254 characters

    • reasonstringPflicht

      Why the operator opened the session, as they wrote it: one line, shown to the organization.

      10 to 128 characters

    • statusstringPflicht

      Erlaubte Werte: "active""ended"

    • started_atstring (date-time)Pflicht

      When the session was opened. RFC 3339, second precision, UTC. Set by the database clock.

    • expires_atstring (date-time)Pflicht

      When the access stops. started_at plus the duration; never later than four hours after started_at. A session is never extended: a new one needs a new reason.

    • remaining_secondsintegerPflicht

      Seconds of access left, computed by the database clock; 0 once the session ended. A client counts down from this value and not from its own clock.

      at least 0

    • ended_atstring (date-time) or nullPflicht

      When the access stopped (expires_at for an expiry); null while the session is active.

    • end_reasonstring or nullPflicht

      Why it ended. operator: the operator ended it; platform: another operator did; organization: an administrator of the organization did; access_disabled: the organization turned support access off; operator_signed_out: the operator signed out of the backoffice (best effort); expired: the time box ran out; start_failed: the session could not be recorded when it started and never gave access. null while active.

      Erlaubte Werte: "operator""platform""organization""access_disabled""operator_signed_out""expired""start_failed"null

    • ended_bystring or nullPflicht

      The user_ref of the person who ended it; null while active, and for an expiry or a session that never started.

      pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$

  • 400

    Client refusal unrelated to authentication, including malformed input, a denied or failed request.

  • 401

    The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:

    Weiterlesen

    Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled

  • 402

    The organization has to pay first: its standing is payment_required.

    Weiterlesen

    The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required

  • 403

    The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.

    Weiterlesen

    Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)

  • 404

    The requested resource or path was not found.

  • 405

    The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.

  • 409

    The request conflicts with the current state of the resource or with an invariant it protects (a taken name, a role still in use, an organization that must not be deleted, an archived team, the last active root, a seat or service account limit).

  • 500

    Platform failure, rendered without internal cause details.

  • 503

    A dependency the operation needs is not configured on this plane or could not be reached, and nothing was changed. `error.code` names it; an operation lists the ones it can answer besides the boundary's. Retry later. Codes: support-audit-unavailable (the request boundary: an operator's read under an open support session could not be recorded, so nothing was served)

GET/identity/v1/organizations/{org}/support-access

Read whether support may open a session

Anmeldedaten
API-Key
Berechtigung
Eine vonorganization.updatesupport-sessions.manage

Needs organization.update in the organization or support-sessions.manage. Answers the organization's setting: allowed (the default for an organization that never set it) or denied. Failures: 403 policy-denied; 500 server faults.

curl
curl "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-access" \
  -H "Authorization: Bearer $CCSIO_API_KEY"

Parameter

NameInBeschreibung
X-Request-ID
optional
headerstring

Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form.

org
Pflicht
pathstring

The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid.

Antworten

  • 200

    The organization's support access setting.

    Schema
    SupportAccessSetting
    • modestringPflicht

      Erlaubte Werte: "allowed""denied"

    • updated_atstring (date-time) or nullPflicht

      When the setting was last changed; null if it never was.

    • updated_bystring or nullPflicht

      The user_ref of who changed it last; null if it never was.

      pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$

  • 400

    Client refusal unrelated to authentication, including malformed input, a denied or failed request.

  • 401

    The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:

    Weiterlesen

    Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled

  • 402

    The organization has to pay first: its standing is payment_required.

    Weiterlesen

    The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required

  • 403

    The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.

    Weiterlesen

    Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)

  • 404

    The requested resource or path was not found.

  • 405

    The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.

  • 500

    Platform failure, rendered without internal cause details.

  • 503

    A dependency the operation needs is not configured on this plane or could not be reached, and nothing was changed. `error.code` names it; an operation lists the ones it can answer besides the boundary's. Retry later. Codes: support-audit-unavailable (the request boundary: an operator's read under an open support session could not be recorded, so nothing was served)

PUT/identity/v1/organizations/{org}/support-access

Allow or deny support sessions

Anmeldedaten
API-Key
Berechtigung
organization.update
Request-Body
Body bis 1 MiB

Needs organization.update in the organization. mode=denied refuses every new session (403 support-access-disabled) and ends every open one at once, in the same transaction (each is recorded as support.session_ended with end_reason access_disabled); mode=allowed lets support start sessions again. Sensitive: recorded as support.access_changed. Failures: 400 invalid-request (an unknown mode); 403 policy-denied; 500 server faults.

curl
curl -X PUT "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-access" \
  -H "Authorization: Bearer $CCSIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "allowed"
}'
Aus den Pflichtfeldern des Schemas erzeugt: ersetze die Werte.

Parameter

NameInBeschreibung
X-Request-ID
optional
headerstring

Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form.

org
Pflicht
pathstring

The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid.

Request-Body application/json

PutSupportAccessRequest
  • modestringPflicht

    Erlaubte Werte: "allowed""denied"

Antworten

  • 200

    The setting after the change.

    Schema
    SupportAccessSetting
    • modestringPflicht

      Erlaubte Werte: "allowed""denied"

    • updated_atstring (date-time) or nullPflicht

      When the setting was last changed; null if it never was.

    • updated_bystring or nullPflicht

      The user_ref of who changed it last; null if it never was.

      pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$

  • 400

    Client refusal unrelated to authentication, including malformed input, a denied or failed request.

  • 401

    The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:

    Weiterlesen

    Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled

  • 402

    The organization has to pay first: its standing is payment_required.

    Weiterlesen

    The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required

  • 403

    The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.

    Weiterlesen

    Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)

  • 404

    The requested resource or path was not found.

  • 405

    The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.

  • 500

    Platform failure, rendered without internal cause details.

  • 503

    A dependency the operation needs is not configured on this plane or could not be reached, and nothing was changed. `error.code` names it; an operation lists the ones it can answer besides the boundary's. Retry later. Codes: support-audit-unavailable (the request boundary: an operator's read under an open support session could not be recorded, so nothing was served)

Erzeugt aus den Plattformverträgen beim Commit 5f833620.

Plattform entdecken

Deinen ersten API-Key holen

Die Registrierung ist offen. Vier Schritte bis zum ersten Aufruf: Konto erstellen, Organisation anlegen, API-Key erzeugen, loslegen.

  1. 01Konto erstellen
  2. 02Organisation anlegen
  3. 03API-Key erzeugen
  4. 04Loslegen