API reference

Single sign-on API

Single sign-on: sign-in routes, identity provider and policy

HTTP reference. Generated from the backend contract. Browse endpoints below or download OpenAPI.

This group has 13 operations, generated from api/openapi.yaml. Filter by path, action, or authentication. Each endpoint lists its inputs; expand it for a request template and response codes. Templates need your own values and a schema-valid body.

Replace uppercase placeholders with your values. For a JSON request, save a body matching the schema in request.json. Cookie examples use a local cookie jar from an authenticated session.

Single sign-on: sign-in routes, identity provider and policy

POST/api/sso/discovery

Discover Dashboard SSO

Tells the entry page how an email address signs in or signs up. sso, required and provider_name are decided by the address's domain alone, against the verified domains of organizations that have an enabled identity-provider connection: sso is true when such an organization holds the domain. required is true when that organization requires single sign-on, which refuses password and passkey sign-in for the domain (createDashboardSession answers sso_required); its break-glass admins keep passkey sign-in. provider_name is the connection's display name, present only when sso is true. account is true when a live person holds the address, verified or not, and false when nobody does: the page signs the person in when it is true and offers signup (POST /api/signups) when it is false and sso is false.

Limited per client address.

Authentication
none
Request body
SSODiscoveryRequest
Operation ID
discoverDashboardSSO

Request body fields

FieldDescription
email (required, string)The address the person typed. Only its domain is read. minLength: 3 maxLength: 254 format: "email"
Request template and responses
shell · request template
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/sso/discovery'

Responses

StatusMeaningBody and headers
200The domain's single sign-on answer.SSODiscovery (application/json); headers: Cache-Control, RateLimit-Policy, RateLimit
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
429

Stable rate_limited problem. Retry only after the authoritative Retry-After interval. Fixed-window denials also include the applicable RateLimit-Policy and RateLimit members; concurrency and byte-budget denials omit those optional disclosures.

Problem (application/problem+json); headers: Retry-After, RateLimit-Policy, RateLimit
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/api/sso/starts

Start Dashboard SSO

Starts a single sign-in through the identity provider of the organization that holds the address's domain and answers the provider's address, which the page navigates to. The response sets the __Host-screenrig-sso cookie (HttpOnly, Secure, SameSite=Strict, Path=/, 10 minutes) that binds this browser to the sign-in.

An OIDC connection is asked for the authorization code flow with PKCE S256, a nonce and response_mode form_post; a SAML connection receives an HTTP-Redirect AuthnRequest.

The provider answers by posting to the connection's /api/sso/oidc/{connection_id}/callback or /api/sso/saml/{connection_id}/acs, and the sign-in ends at /api/sso/finish. return_to is a path under /dashboard/ the sign-in lands on; absent lands on /dashboard/. invitation_token is an invitation the sign-in accepts once the person is signed in. prompt none asks the provider for a silent sign-in, which ends at /dashboard/#sso_error=interaction_required when the person must act; prompt login makes the provider authenticate the person again.

An address whose domain has no enabled connection is not_found. Limited per client address.

Authentication
none
Request body
SSOStartRequest
Operation ID
startDashboardSSO

Request body fields

FieldDescription
email (required, string)The address the person typed. Its domain selects the organization's connection. minLength: 3 maxLength: 254 format: "email"
return_to (optional, string)A path under /dashboard/ the sign-in lands on. Absent lands on /dashboard/; any other value is invalid_request. minLength: 1 maxLength: 512 pattern: "^/dashboard/"
invitation_token (optional, string)An invitation the sign-in accepts for the person once they are signed in. pattern: "^[A-Za-z0-9_-]{43}$"
prompt (optional, string)none asks the provider for a silent sign-in and passes no login hint, so email only selects the domain; login makes it authenticate the person again. Allowed: "none", "login"
Request template and responses
shell · request template
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/sso/starts'

Responses

StatusMeaningBody and headers
200The identity provider's address to navigate to, and the transaction cookie.SSOStart (application/json); headers: Cache-Control, Set-Cookie, RateLimit-Policy, RateLimit
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
429

Stable rate_limited problem. Retry only after the authoritative Retry-After interval. Fixed-window denials also include the applicable RateLimit-Policy and RateLimit members; concurrency and byte-budget denials omit those optional disclosures.

Problem (application/problem+json); headers: Retry-After, RateLimit-Policy, RateLimit
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/api/sso/oidc/{connection_id}/callback

Receive Dashboard SSOOIDCCallback

The OIDC redirect URI of one connection. The identity provider posts here from another site (response_mode form_post), so no dashboard cookie arrives. The route signs nobody in: it answers a page that posts the same members and the connection id to /api/sso/finish from the dashboard origin, where the transaction cookie arrives.

An answer finishes only a sign-in this connection started; any other ends at /dashboard/#sso_error=bad_state. When the provider's discovery document sets authorization_response_iss_parameter_supported, an answer without iss (RFC 9207) ends at /dashboard/#sso_error=verification_failed.

The page runs one inline script protected by a nonce and carries a noscript button; its Content-Security-Policy is strict, Cache-Control is no-store and Referrer-Policy is no-referrer. An id no connection holds is not_found.

Authentication
none
Request body
object
Operation ID
receiveDashboardSSOOIDCCallback

Parameters

NameSend inRequired?Description
connection_idpathrequired

Request body fields

FieldDescription
state (required, string)maxLength: 512
code (optional, string)maxLength: 8192
error (optional, string)maxLength: 200
error_description (optional, string)maxLength: 2048
iss (optional, string)maxLength: 2048
Request template and responses
shell · request template
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://screenrig.ai/api/sso/oidc/CONNECTION_ID/callback'

Responses

StatusMeaningBody and headers
200The page that posts the provider's answer to /api/sso/finish.string (text/html); headers: Cache-Control, Referrer-Policy, Content-Security-Policy
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
GET/api/sso/saml/{connection_id}

Get Dashboard SSOSAMLMetadata

The SAML service provider metadata of one connection. Its entityID is this route's address and its assertion consumer service is /api/sso/saml/{connection_id}/acs with the HTTP-POST binding. An identity provider administrator imports it, or copies the same values from the connection's service_provider. An id no connection holds is not_found.

Authentication
none
Request body
none
Operation ID
getDashboardSSOSAMLMetadata

Parameters

NameSend inRequired?Description
connection_idpathrequired
Request template and responses
shell · request template
curl --request GET 'https://screenrig.ai/api/sso/saml/CONNECTION_ID'

Responses

StatusMeaningBody and headers
200The service provider metadata document.string (application/samlmetadata+xml)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/api/sso/saml/{connection_id}/acs

Receive Dashboard SSOSAMLAssertion

The SAML assertion consumer service of one connection. The identity provider posts here from another site, so no dashboard cookie arrives. The route signs nobody in: it answers a page that posts the SAMLResponse, its RelayState and the connection id to /api/sso/finish from the dashboard origin, where the transaction cookie arrives.

An answer finishes only a sign-in this connection started. The page runs one inline script protected by a nonce and carries a noscript button; its Content-Security-Policy is strict, Cache-Control is no-store and Referrer-Policy is no-referrer. An id no connection holds is not_found.

Authentication
none
Request body
object
Operation ID
receiveDashboardSSOSAMLAssertion

Parameters

NameSend inRequired?Description
connection_idpathrequired

Request body fields

FieldDescription
SAMLResponse (required, string)maxLength: 1048576
RelayState (optional, string)maxLength: 512
Request template and responses
shell · request template
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://screenrig.ai/api/sso/saml/CONNECTION_ID/acs'

Responses

StatusMeaningBody and headers
200The page that posts the provider's answer to /api/sso/finish.string (text/html); headers: Cache-Control, Referrer-Policy, Content-Security-Policy
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/api/sso/finish

Finish Dashboard SSO

Finishes a single sign-in on the dashboard origin, where the __Host-screenrig-sso cookie arrives. The form is state, the connection the answer arrived for, and the identity provider's answer as the callback page copied it: code, error, error_description and iss for OIDC, SAMLResponse for SAML (state is the RelayState).

The route binds state to the cookie, refuses an answer that arrived for another connection than the sign-in started through, verifies the provider's token or assertion, applies the account adoption and linking rules, checks the organization's sign-in policy and answers 303.

A sign-in, renewal or re-authentication mints a dashboard session with auth_method sso, which lasts 24 hours from this sign-in and is not extended by use, accepts the invitation the sign-in carries, sets the __Host-screenrig-dashboard cookie, expires the transaction cookie and redirects to return_to, or to /dashboard/.

A link adds the identity to the signed-in person's account and keeps their session. A test records its outcome on the connection (last_test) and signs nobody in. Every failure also answers 303, to /dashboard/#sso_error=<code>, and never with a problem document.

The codes are no_email, email_unverified, domain_not_allowed, account_exists (the person signs in as before and links from their account), managed_elsewhere, subject_mismatch, not_provisioned, sso_required, staff_account, expired, bad_state, interaction_required (a silent renewal needs the person), provider_refused, provider_unavailable, verification_failed and deactivated (SSOErrorCode).

Authentication
ssoTransaction
Request body
object
Operation ID
finishDashboardSSO

Request body fields

FieldDescription
connection_id (optional, string)maxLength: 128
state (required, string)maxLength: 512
code (optional, string)maxLength: 8192
error (optional, string)maxLength: 200
error_description (optional, string)maxLength: 2048
iss (optional, string)maxLength: 2048
SAMLResponse (optional, string)maxLength: 1048576
Request template and responses
shell · request template
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://screenrig.ai/api/sso/finish'

Responses

StatusMeaningBody and headers
303To return_to or /dashboard/ with the session cookie set, or to /dashboard/#sso_error=<code> when the sign-in did not complete.no body; headers: Location, Cache-Control, Set-Cookie
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/api/session/sso-starts

Start Dashboard Session SSO

Starts a single sign-in for the signed-in person and answers the identity provider's address, as POST /api/sso/starts does for an address, setting the __Host-screenrig-sso cookie. intent renew renews a session that signed in through single sign-on, silently (prompt none) before its 24 hours end; the dashboard does so once 12 hours have passed. intent reauth makes the provider authenticate the person again (prompt login), which gives a session the recent sign-in the sso proof needs. intent link attaches the person's identity at the provider to their existing account. renew and reauth need a session that signed in through single sign-on, and link needs an enabled connection at the person's verified domain; otherwise the answer is resource_conflict. return_to is a path under /dashboard/.

Authentication
dashboardSession
Request body
SessionSSOStartRequest
Operation ID
startDashboardSessionSSO

Request body fields

FieldDescription
intent (required, string)

renew: silently renew the single sign-on session. reauth: authenticate the person again, for the sso proof. link: attach the person's identity at the provider to their account. Allowed: "renew", "reauth", "link"

return_to (optional, string)A path under /dashboard/ to return to. Absent returns to /dashboard/. minLength: 1 maxLength: 512 pattern: "^/dashboard/"
Request template and responses
shell · request template
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/session/sso-starts'

Responses

StatusMeaningBody and headers
200The identity provider's address to navigate to, and the transaction cookie.SSOStart (application/json); headers: Cache-Control, Set-Cookie
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
409

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
GET/api/organizations/{org_id}/identity-provider

Dashboard Organizations Get Identity Provider

A designated admin reads the organization's single sign-on connection: its protocol and provider, the service provider values to enter at the identity provider (the OIDC redirect URI, the SAML entity ID, assertion consumer service and metadata addresses), its sign-in policy and the outcome of the last test.

The client secret is never returned; client_secret_set says whether one is stored. ready_to_require is true once the organization holds a verified domain and a test or a real sign-in has succeeded through the connection's current identity (its issuer, tenant, entity ID and kind); Require SSO is accepted only while it is true. The ETag carries the revision.

An organization with no connection is not_found. Anyone else is refused as on the other organization admin routes. People only; agents and bearer credentials have no route.

Authentication
dashboardSession
Request body
none
Operation ID
dashboardOrganizationsGetIdentityProvider

Parameters

NameSend inRequired?Description
org_idpathrequired
Request template and responses
shell · request template
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/identity-provider'

Responses

StatusMeaningBody and headers
200The organization's connection.IdentityProvider (application/json); headers: Cache-Control, ETag
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
403

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
PUT/api/organizations/{org_id}/identity-provider

Dashboard Organizations Set Identity Provider

A designated admin creates the organization's connection or changes it; an organization holds one.

If-Match carries the connection's revision from GET, or 0 when the organization has none, and is required; a stale value is revision_conflict with current_revision. 201 creates and 200 changes. proof is required: a fresh passkey or password proof bound to a reauthentication of kind identity_provider_change with the organization id as subject_id, or {type: sso} from a session that signed in through single sign-on at most 10 minutes ago (otherwise reauthentication_required).

OIDC with preset entra takes tenant_id and builds the issuer from it; preset generic takes issuer. Omitting oidc.client_secret keeps the stored secret.

For SAML, metadata_xml is read for the identity provider's entity ID, sign-in address and signing certificates, and idp_entity_id, idp_sso_url and certificates_pem state them directly; certificates_pem replaces the stored list, which holds at most 4 so a new certificate can overlap the old during rotation.

While Require SSO is in force a change of identity (issuer, tenant, entity ID or kind) is resource_conflict and certificate and client secret rotation are allowed; outside it, a change of identity makes ready_to_require false until a test or sign-in succeeds. Returns the connection with its ETag. People only; agents and bearer credentials have no route.

Creating the first connection (If-Match 0) is single sign-on, which the Enterprise plan includes; an organization whose plan lacks it is refused with feature_not_in_plan (402).

Changing a connection that exists, such as rotating a certificate or client secret or refreshing metadata, reading, testing and removing one are open on every plan, and a connection that exists keeps signing people in.

Authentication
dashboardSession
Request body
IdentityProviderWrite
Operation ID
dashboardOrganizationsSetIdentityProvider

Parameters

NameSend inRequired?Description
org_idpathrequired
If-MatchheaderrequiredThe connection revision from GET, optionally quoted, or 0 to create.

Request body fields

FieldDescription
kind (required, string)Allowed: "oidc", "saml"
preset (required, string)Allowed: "entra", "generic"
name (required, string)minLength: 1 maxLength: 80
jit (optional, boolean)Create a person at first sign-in when nobody holds the address. Absent keeps the stored value, true for a new connection.
oidc (optional, IdentityProviderOIDCWrite)
saml (optional, IdentityProviderSAMLWrite)
proof (required, DashboardProof)
Request template and responses
shell · request template
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/identity-provider'

Responses

StatusMeaningBody and headers
200The changed connection.IdentityProvider (application/json); headers: Cache-Control, ETag
201The new connection.IdentityProvider (application/json); headers: Cache-Control, ETag
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
402feature_not_in_plan — Single sign-on is part of the Enterprise plan; the problem names the feature, the plan the account is on and required_plan.Problem (application/problem+json)
403

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
409

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
412revision_conflict — If-Match is stale; the error's current_revision carries the current revision.Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
DELETE/api/organizations/{org_id}/identity-provider

Dashboard Organizations Remove Identity Provider

A designated admin removes the organization's connection after fresh proof (the body carries proof, as for PUT). It is resource_conflict while Require SSO is in force, scheduled removal included, and not_found when the organization has no connection. People only; agents and bearer credentials have no route.

Authentication
dashboardSession
Request body
DashboardProofRequest
Operation ID
dashboardOrganizationsRemoveIdentityProvider

Parameters

NameSend inRequired?Description
org_idpathrequired

Request body fields

FieldDescription
proof (required, DashboardProof)
Request template and responses
shell · request template
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/identity-provider'

Responses

StatusMeaningBody and headers
204The connection is removed.no body
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
403

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
409

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/api/organizations/{org_id}/identity-provider/tests

Dashboard Organizations Test Identity Provider

A designated admin starts a test sign-in through the organization's connection, to prove it works before requiring it. It answers the identity provider's address for the page to navigate to and sets the __Host-screenrig-sso cookie.

The provider's answer ends at /api/sso/finish, which records the outcome on the connection (last_test; a success lets ready_to_require become true) and returns the browser to the dashboard. A test signs nobody in. An organization with no connection is not_found. People only; agents and bearer credentials have no route.

Authentication
dashboardSession
Request body
none
Operation ID
dashboardOrganizationsTestIdentityProvider

Parameters

NameSend inRequired?Description
org_idpathrequired
Request template and responses
shell · request template
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/identity-provider/tests'

Responses

StatusMeaningBody and headers
200The identity provider's address to navigate to, and the transaction cookie.SSOTestStart (application/json); headers: Cache-Control, Set-Cookie
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
403

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
PUT/api/organizations/{org_id}/sso-policy

Dashboard Organizations Set SSOPolicy

A designated admin turns Require SSO on or off and names the break-glass admins. required true refuses password and passkey sign-in for the organization's verified domains (sso_required) and needs a verified domain and ready_to_require on the connection, otherwise resource_conflict; it bumps policy_revision. required false does not lift the requirement at once: it schedules the removal for 72 hours after the request (enforcement_ends_at) and emails every admin, and DELETE .../sso-policy/removal cancels it. break_glass_user_ids names at most 2 designated admins who hold a passkey, otherwise invalid_request; they keep passkey sign-in while SSO is required, and each such sign-in is audited.

If-Match carries policy_revision and is required; a stale value is revision_conflict with current_revision. proof is required: a fresh passkey or password proof bound to a reauthentication of kind sso_policy_change with the organization id as subject_id, or {type: sso} from a session that signed in through single sign-on at most 10 minutes ago.

Returns the policy with its ETag. People only; agents and bearer credentials have no route. Setting required true is single sign-on, which the Enterprise plan includes; an organization whose plan lacks it is refused with feature_not_in_plan (402). required false is always accepted, and Require SSO that is on stays enforced until it is turned off.

Authentication
dashboardSession
Request body
SSOPolicyWrite
Operation ID
dashboardOrganizationsSetSSOPolicy

Parameters

NameSend inRequired?Description
org_idpathrequired
If-MatchheaderrequiredThe policy_revision from GET identity-provider, optionally quoted.

Request body fields

FieldDescription
required (required, boolean)true requires single sign-on. false schedules the removal for 72 hours after the request and emails every admin.
break_glass_user_ids (required, array)At most 2 designated admins who hold a passkey. The list replaces the stored one.
proof (required, DashboardProof)
Request template and responses
shell · request template
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/sso-policy'

Responses

StatusMeaningBody and headers
200The policy now in force.SSOPolicy (application/json); headers: Cache-Control, ETag
400

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
402feature_not_in_plan — Single sign-on is part of the Enterprise plan; the problem names the feature, the plan the account is on and required_plan.Problem (application/problem+json)
403

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
409

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
412revision_conflict — If-Match is stale; the error's current_revision carries the current revision.Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
DELETE/api/organizations/{org_id}/sso-policy/removal

Dashboard Organizations Cancel SSORemoval

Any designated admin cancels a scheduled removal of Require SSO, so it stays in force. With no removal scheduled nothing changes. Answers the policy. People only; agents and bearer credentials have no route.

Authentication
dashboardSession
Request body
none
Operation ID
dashboardOrganizationsCancelSSORemoval

Parameters

NameSend inRequired?Description
org_idpathrequired
Request template and responses
shell · request template
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/sso-policy/removal'

Responses

StatusMeaningBody and headers
200The policy now in force.SSOPolicy (application/json); headers: Cache-Control, ETag
401

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
403

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
404

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)