Skip to content

SSO Connection

An SSO Connection links a Customer’s own identity system to its Tenant, so the Customer’s people sign in through it.

Properties

PropertyTypeRequiredDescription
protocolstringrequiredHow sign-in is asserted: saml or oidc.
statestringrequiredWhere it stands; only active signs anyone in.
certificateExpiresAtdatetimeWhen the signing certificate expires; the Customer’s admin hears 30 days before.
testedAtdatetimeWhen the Customer’s admin last completed a test sign-in.

Object

JSON
{
  "$id": "https://api.sb/tutorloop.com/sso-connections/sso_connection_1",
  "$type": "SSOConnection",
  "protocol": "saml",
  "state": "draft",
  "certificateExpiresAt": "2026-10-22T12:00:00Z",
  "testedAt": "2026-10-22T12:00:00Z"
}

Relationships

  • A SSO Connection serves one Tenant: a Tenant’s people sign in through its SSO Connections; the Customer’s admin owns each one. serves, inverse signsInVia.

Lifecycle

SSO Connection lifecycle: draft, active, failing, inactivedraft → active: SSOConnection.activateactive → failing: on SSOConnection.failedactive → inactive: SSOConnection.deactivatefailing → active: SSOConnection.activatefailing → inactive: SSOConnection.deactivateinactive → active: SSOConnection.activatedraftactivefailinginactive
StateMeaningMoves to
draft (first)Its configuration is entered, and no test sign-in has passed.active by SSOConnection.activate
activeEveryone in the Tenant signs in through it.failing on SSOConnection.failed; inactive by SSOConnection.deactivate
failingSign-ins through it fail, and the Customer’s admin has been told why.active by SSOConnection.activate; inactive by SSOConnection.deactivate
inactiveTurned off: nobody signs in through it, and its configuration is kept.active by SSOConnection.activate

Verbs

  1. createCreates a SSO Connection.
    POST /{namespace}/sso-connectionsdoSSOConnection.created
  2. getReturns one SSO Connection by id.
    GET /{namespace}/sso-connections/{id}readNo Event
  3. listReturns SSO Connections, newest first, one page at a time.
    GET /{namespace}/sso-connectionsreadNo Event
  4. updateChanges the given properties of a SSO Connection.
    PATCH /{namespace}/sso-connections/{id}doSSOConnection.updated
  5. activateActivate turns an SSO Connection on after a test sign-in passes, so the Tenant’s people sign in through it.
    POST /{namespace}/sso-connections/{connection}/activatedoSSOConnection.activated
  6. deactivateDeactivate turns an SSO Connection off, so nobody signs in through it; its configuration is kept.
    POST /{namespace}/sso-connections/{connection}/deactivatedoSSOConnection.deactivated

Events

Events no Verb emits. Each Verb’s Event is in the Verbs table above; every Event is delivered in the same shape.

SSOConnection.failed

Sign-ins through an SSO Connection started failing, from an expired certificate or a change on the Customer’s side. Raised by the rail.

FieldTypeRequiredDescription
namestringrequiredSSOConnection.failed.
atdatetimerequiredWhen it happened.
seqintegerIts position in the namespace, one more than the Event before; any seq is a cursor into the history.
datajsonrequiredThe Thing as the Action left it.
data.ssoConnectionSSO ConnectionrequiredThe SSO Connection as the change left it.
data.ssoConnection.protocolstringrequiredHow sign-in is asserted: saml or oidc.
data.ssoConnection.statestringrequiredWhere it stands; only active signs anyone in.
data.ssoConnection.certificateExpiresAtdatetimeWhen the signing certificate expires; the Customer’s admin hears 30 days before.
data.ssoConnection.testedAtdatetimeWhen the Customer’s admin last completed a test sign-in.
data.causestringrequiredWhat failed: certificateExpired, signatureInvalid, or providerUnreachable.
data.previous.statestringrequiredThe state before this Event: active.
JSON
{
  "$id": "https://api.sb/tutorloop.com/events/event_1",
  "$type": "Event",
  "name": "SSOConnection.failed",
  "at": "2026-10-22T12:00:00Z",
  "data": {
    "ssoConnection": {
      "$id": "https://api.sb/tutorloop.com/sso-connections/sso_connection_1",
      "$type": "SSOConnection",
      "protocol": "saml",
      "state": "failing",
      "certificateExpiresAt": "2026-10-22T12:00:00Z",
      "testedAt": "2026-10-22T12:00:00Z"
    },
    "cause": "certificateExpired",
    "previous": {
      "state": "active"
    }
  },
  "seq": 1
}

Permissions

Which Access level may call each Verb. One-way Verbs wait their delay window.

Operationowneradminmemberviewer
SSOConnection.createYesYesNoNo
SSOConnection.getYesYesYesYes
SSOConnection.listYesYesYesYes
SSOConnection.updateYesYesNoNo
SSOConnection.activateYesYesNoNo
SSOConnection.deactivateYesYesNoNo

Call it

Text
Activate the latest SSO connection.

Example

A 2,000-person Customer connects its identity system to its Tenant over saml. Its admin completes a test sign-in, the connection goes active, and passwords stop working for that domain.