Skip to main content

Auth model

Sumvin has three auth primitives. They are not interchangeable — each one fits a specific surface and caller.

The three primitives

CredentialHeaderIssued byUsed on
Auth-provider JWTx-juno-jwtDynamic, Privy, or (your choice)Platform API — acting on behalf of a signed-in user
SIS API keyAuthorization: Bearer <key>Sumvin (partner onboarding)SIS — calling as a registered partner
PINT JWTx-sumvin-pint-tokenSIS (on token exchange)Inbound to verifiers — a user’s credential presented to you

Decision tree

  • I’m calling the Platform API on behalf of a user I authenticated → auth-provider JWT in x-juno-jwt.
  • I’m exchanging a signed PINT, fetching JWKS, or looking up a user by SRI at SIS → SIS API key.
  • I’m receiving a credential from a user’s browser or agent on an inbound request → PINT JWT (I verify it; I don’t issue it).

What each credential proves

  • The auth-provider JWT proves the caller is an authenticated user of your app.
  • The SIS API key proves the caller is a registered Sumvin partner with known permissions.
  • The PINT JWT proves a specific user signed a specific authorisation, attested by SIS.
The three don’t stack on the same request. An inbound verifier request carries a PINT JWT — the verifier’s outbound calls to SIS then carry its own SIS API key.

See also

Referenced from