Die Beschreibungen der Operationen und Felder stammen aus dem Vertrag und sind auf Englisch.
/identity/v1/organizations/{org}/support-sessionsList the support sessions of an organization
- Anmeldedaten
- API-Key
- Berechtigung
- Eine von
audit.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 "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-sessions" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameter
| Name | In | Beschreibung |
|---|---|---|
X-Request-IDoptional | header | string 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. |
orgPflicht | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
stateoptional | query | string active or ended; absent lists both. |
limitoptional | query | integer Page size, 1 to 200. Default 50. |
Antworten
- 200
The organization's support sessions.
Schema
SupportSessionListsessionsarray of SupportSessionPflichtNewest first by started_at, then session_id.
session_idstringPflichtpattern ^[0-9A-HJKMNP-TV-Z]{26}$
organization_idstringPflichtpattern ^[a-z][a-z0-9._-]{0,63}$
operatorobjectPflichtThe 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_refstringPflichtThe 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 nullPflichtThe operator's display name; null when the staff directory gave none.
at most 128 characters
emailstring or nullPflichtThe operator's email address; null when the staff directory gave none.
at most 254 characters
reasonstringPflichtWhy the operator opened the session, as they wrote it: one line, shown to the organization.
10 to 128 characters
statusstringPflichtErlaubte Werte:
"active""ended"started_atstring (date-time)PflichtWhen the session was opened. RFC 3339, second precision, UTC. Set by the database clock.
expires_atstring (date-time)PflichtWhen 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_secondsintegerPflichtSeconds 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 nullPflichtWhen the access stopped (expires_at for an expiry); null while the session is active.
end_reasonstring or nullPflichtWhy 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"nullended_bystring or nullPflichtThe 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)
/identity/v1/organizations/{org}/support-sessions/{id}/endEnd a support session
- Anmeldedaten
- API-Key
- Berechtigung
- Eine von
organization.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 -X POST "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-sessions/{id}/end" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameter
| Name | In | Beschreibung |
|---|---|---|
X-Request-IDoptional | header | string 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. |
orgPflicht | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
idPflicht | path | string 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
SupportSessionsession_idstringPflichtpattern ^[0-9A-HJKMNP-TV-Z]{26}$
organization_idstringPflichtpattern ^[a-z][a-z0-9._-]{0,63}$
operatorobjectPflichtThe 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_refstringPflichtThe 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 nullPflichtThe operator's display name; null when the staff directory gave none.
at most 128 characters
emailstring or nullPflichtThe operator's email address; null when the staff directory gave none.
at most 254 characters
reasonstringPflichtWhy the operator opened the session, as they wrote it: one line, shown to the organization.
10 to 128 characters
statusstringPflichtErlaubte Werte:
"active""ended"started_atstring (date-time)PflichtWhen the session was opened. RFC 3339, second precision, UTC. Set by the database clock.
expires_atstring (date-time)PflichtWhen 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_secondsintegerPflichtSeconds 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 nullPflichtWhen the access stopped (expires_at for an expiry); null while the session is active.
end_reasonstring or nullPflichtWhy 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"nullended_bystring or nullPflichtThe 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)
/identity/v1/organizations/{org}/support-accessRead whether support may open a session
- Anmeldedaten
- API-Key
- Berechtigung
- Eine von
organization.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 "https://console.eu.ccsio.ai/identity/v1/organizations/{org}/support-access" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameter
| Name | In | Beschreibung |
|---|---|---|
X-Request-IDoptional | header | string 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. |
orgPflicht | path | string 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
SupportAccessSettingmodestringPflichtErlaubte Werte:
"allowed""denied"updated_atstring (date-time) or nullPflichtWhen the setting was last changed; null if it never was.
updated_bystring or nullPflichtThe 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)
/identity/v1/organizations/{org}/support-accessAllow 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 -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"
}'Parameter
| Name | In | Beschreibung |
|---|---|---|
X-Request-IDoptional | header | string 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. |
orgPflicht | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
Request-Body application/json
modestringPflichtErlaubte Werte:
"allowed""denied"
Antworten
- 200
The setting after the change.
Schema
SupportAccessSettingmodestringPflichtErlaubte Werte:
"allowed""denied"updated_atstring (date-time) or nullPflichtWhen the setting was last changed; null if it never was.
updated_bystring or nullPflichtThe 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.