Pular para o conteúdo principal

Multi-tenancy & Headers

O DokStamp é uma plataforma multi-tenant. Todos os recursos — instituições, cursos, estudantes, certificados — são totalmente isolados dentro de um tenant. Não há acesso a dados entre tenants distintos.

Headers obrigatórios

Todos os endpoints de recursos (tudo exceto /auth/*) exigem estes dois headers:
HeaderObrigatórioDescrição
AuthorizationSimBearer {access_token}
AcceptSimapplication/json
X-TenantSimSeu identificador de tenant (fornecido pelo DokStamp)

Exemplo

GET /certificates HTTP/1.1
Host: api.dokstamp.eu
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
Accept: application/json
X-Tenant: universidade-federal-example

Encontrando seu identificador de tenant

Seu identificador de tenant é configurado quando sua conta é criada. Você pode obtê-lo a partir de:
  1. O painel administrativo do DokStamp em Configurações → API
  2. O corpo da resposta de GET /auth/me:
{
  "data": {
    "id": 1,
    "name": "João Silva",
    "email": "joao@universidade.edu.br",
    "tenant": {
      "id": 42,
      "name": "Universidade Federal Example",
      "domain": "universidade-federal-example"
    }
  }
}
Use o valor de tenant.domain como seu header X-Tenant.

Regras de isolamento de tenant

  • Dados criados em um tenant nunca são visíveis para outro tenant.
  • UUIDs são globalmente únicos, mas todas as operações de leitura/escrita são filtradas por tenant.
  • Tentar acessar um recurso que pertence a um tenant diferente retorna 404 Not Found (não 403) — isso previne ataques de enumeração.

Configuração multi-ambiente

Se você tiver tenants separados para staging e produção, cada um terá seu próprio domínio e credenciais. Mantenha-os em configurações de ambiente separadas:
# .env.staging
ASSINAMOS_BASE_URL=https://api.dokstamp.eu
ASSINAMOS_TENANT=minha-instituicao-staging
ASSINAMOS_TOKEN=eyJ...

# .env.production
ASSINAMOS_BASE_URL=https://api.dokstamp.eu
ASSINAMOS_TENANT=minha-instituicao
ASSINAMOS_TOKEN=eyJ...