kind: "connected", so it shares the registration endpoints: sessions, login, and session export live at /v1/registrations/:id/... using the connection’s id.
Known limits, stated up front:
- SSO-only accounts cannot be connected. If the account signs in only via Google/Okta/etc. or passkeys, there is no username+password for Sente to use.
- Authenticator (TOTP) 2FA re-logins autonomously — supply
totpSeedand the server computes the 30-second code at login. The seed is vaulted encrypted and never reaches any model; only the server-side controller computes codes from it. - Email-code MFA needs a human in the interactive live view — unless you repoint the account’s notification email to the identity’s Sente address and pass
verifyToIdentity: true, in which case the code lands in Sente’s inbox and is injected automatically. - SMS codes always need a human. The run blocks (
MFA_REQUIRED) and pages one.
Create a connection
POST /v1/connections
Queues a
connect run that logs in with the supplied credentials and marks the connection active on success. Re-posting for the same (identity, app origin) re-connects: rotates the vaulted credentials, clears any revoke, and re-drives — this is also how you rotate a password or re-enable a revoked connection.
201:
(The mirror-image conflict —
register against an existing connection — is 409 ALREADY_CONNECTED on POST /v1/registrations.)
List connections
GET /v1/connections — optional ?identityId=.... Returns only kind: "connected" rows, each with latestRun.
200:
Get a connection
GET /v1/connections/:id
Returns the connection object. 404 for unknown ids, other orgs’ resources, and for registrations that aren’t connected.
Credentials are write-only
There is no credential read for connections.GET /v1/registrations/:id/credentials on a connected account returns:
403. You already hold your own password; Sente vaults it encrypted and only the server-side run controller ever decrypts it to log in. To rotate a credential, re-post POST /v1/connections with the new one.
Revoke a connection
POST /v1/connections/:id/revoke
Withdraws the delegation: the connection becomes disabled — login and credential updates answer 409 REVOKED, and sessions can no longer open (409 NOT_ACTIVE). The vault is kept, so re-enabling is a single POST /v1/connections away.
200:
Delete a connection
DELETE /v1/connections/:id
Revoke and purge: the vaulted password and TOTP seed are erased. This is the offboarding guarantee — after delete, Sente holds no secrets for this account. The row itself remains (audit trail), still disabled.
204 with no body.
Use revoke to pause a delegation you expect to restore; use delete when offboarding and Sente should hold nothing.
