TANITARDevelopers
Architecture

Integration architecture

How your backend, Player clients and administrators connect to Tanitar.

You integrate with Tanitar through four external surfaces:

SurfaceUsed byCredentialStart here
Public APIsYour backendAPI keyQuickstart
Player APIsYour Player clientShort-lived Player contextPlayer identity
DashboardYour administratorsOrganization sessionDashboard guide
WebhooksYour backendHMAC signature on each deliveryWebhooks
flowchart LR
    BACK["Your backend"] -->|API key| API["Tanitar APIs"]
    BACK -->|Player-session credential + external Player id| SESSION["Create Player session"]
    SESSION -->|15-minute Player token| PLAYER["Your Player client"]
    ADMIN["Your administrators"] -->|organization session| DASH["Dashboard"]
    API -->|signed webhooks| BACK
    PLAYER --> API
    DASH --> API

What your integration must decide

  1. Which plane is calling. Backend automation uses an API key. Players use a Player context. Administrators use the dashboard. Credentials are not interchangeable.
  2. How players are identified. Authenticate players in your own product. Your trusted backend asserts a stable external Player id with a dedicated Player-session credential; Tanitar resolves or creates the tenant-scoped mapping and returns a 15-minute Player token.
  3. Which operations can be retried. Send an Idempotency-Key on routes that require one. Keep the same key and body when retrying the same logical operation.
  4. How events reach your systems. Register a webhook endpoint, verify every signature, deduplicate on webhook-id, and return a success only after you have safely accepted the delivery.
  5. How failures are handled. Use stable errorCode and requestId values. Retry only temporary failures, and recover dead deliveries through the dashboard or recovery API.

Platform guarantees that affect you

  • Tenant identity comes from the verified credential, never from a caller-supplied tenant field.
  • Dedicated storage never falls back to shared storage when it is unavailable.
  • Cross-service effects and webhooks are delivered at least once, so receivers must be idempotent.
  • Authentication, scope, entitlement, rate and ownership checks fail closed.
  • Secrets are shown once, stored as digests or encrypted values, and never returned in logs or error responses.

Continue reading

On this page