Skip to main content

Backend SDK for torii — verify JWTs, manage users, react to events from your Python server.

Project description

torii-backend

Backend SDK for torii — verify end-user JWTs without a per-request round trip and manage users from your Python server.

v0.x — API may still change.

Setup

  1. Sign in to app.torii.so and from your dashboard copy:

    • your issuer URL (e.g. https://acme.torii.so)
    • a secret key (sk_test_… for development, sk_live_… for production)
  2. Install the SDK:

    pip install torii-backend
    # or, with the FastAPI dependency adapter:
    pip install "torii-backend[fastapi]"
    

    Python 3.9+.

  3. Verify an end-user JWT:

    from torii_backend import verify_token
    
    auth = verify_token(token, issuer="https://acme.torii.so")
    print(auth.user_id, auth.environment_id, auth.email_verified)
    

    The first call fetches the issuer's JWKS; subsequent calls reuse the cache and rotate keys automatically (handled by PyJWT). No round trip per request.

  4. Call the backend REST API:

    import os
    from torii_backend import create_torii_client
    
    torii = create_torii_client(secret_key=os.environ["TORII_SECRET_KEY"])
    user = torii.users.get(user_id)
    

FastAPI

from fastapi import Depends, FastAPI
from torii_backend.fastapi import require_auth

app = FastAPI()
auth_dep = require_auth(issuer="https://acme.torii.so")

@app.get("/me")
def me(auth = Depends(auth_dep)):
    return {"user_id": auth.user_id}

Backend API

page = torii.users.list(limit=50)
user = torii.users.create(email="x@y.com")
torii.users.ban(user.id)

sessions = torii.sessions.list_for_user(user.id)
torii.sessions.revoke_all_for_user(user.id)

PATCH semantics (users.update)

users.update is a tri-state PATCH: each updatable field can be set, cleared, or left alone. Pass only the kwargs you want on the wire — pydantic v2's model_fields_set tracks which fields were explicitly provided, and the SDK serializes via model_dump(exclude_unset=True) so untouched fields never appear in the request body.

torii.users.update(
    user_id,
    name="Ada",     # → server updates name
    phone=None,     # → server clears phone (sent as JSON null)
    # address not passed → server leaves alone
)

Wire body for the call above:

{ "name": "Ada", "phone": null }
Call Field on wire Server effect
users.update(id, name="Ada") "name": "Ada" update name
users.update(id, phone=None) "phone": null clear phone
users.update(id) (no field kwargs) omitted leave alone

You can also build a request explicitly — useful when assembling the patch dynamically:

from torii_backend import ToriiUpdateUserInput

patch = ToriiUpdateUserInput(name="Ada", phone=None)
torii.users.update(user_id, patch)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torii_backend-0.0.9.tar.gz (53.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torii_backend-0.0.9-py3-none-any.whl (72.5 kB view details)

Uploaded Python 3

File details

Details for the file torii_backend-0.0.9.tar.gz.

File metadata

  • Download URL: torii_backend-0.0.9.tar.gz
  • Upload date:
  • Size: 53.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torii_backend-0.0.9.tar.gz
Algorithm Hash digest
SHA256 7f0bd9566c5ac2e3c61d24b0b21ab86d67ac415111120284684a750c23a5567c
MD5 a04b149858729731729d657040c3165c
BLAKE2b-256 ce7bf451c09e34e96927070cd2bc3e117ad303d6c3ac47d4ad6c4d1c0d3eeb1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for torii_backend-0.0.9.tar.gz:

Publisher: release.yml on Torii-ApS/torii-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torii_backend-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: torii_backend-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 72.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torii_backend-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 ff74072b331da7e60b0356079e9d37d92351d4541d52b5156e974c6396b180bb
MD5 ec2cd4c5c54b85a325d0cc8d4c2ea798
BLAKE2b-256 1559fc524d892c144b53bc2babeef822c95a39cc3e86fb919fdf6db780dd825d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torii_backend-0.0.9-py3-none-any.whl:

Publisher: release.yml on Torii-ApS/torii-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page