Skip to Content
API ReferenceAutenticação

Autenticação

Métodos de autenticação

O Opero suporta dois métodos de autenticação:

1. Bearer Token (Sessão)

Usado por aplicações frontend e integrações que atuam em nome de um usuário.

Obter um token:

POST /api/auth/sign-in/email Content-Type: application/json { "email": "usuario@hotel.com", "password": "sua-senha-segura" }

Resposta:

{ "token": "eyJhbGciOiJIUzI1NiJ9...", "user": { "id": "uuid-do-usuario", "email": "usuario@hotel.com", "name": "Maria Silva", "role": "admin" } }

Usar o token:

GET /api/tenants/:tenantId/reservations Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

Importante: Tokens expiram após 24 horas. Use o endpoint de refresh para obter um novo token sem re-autenticar.

2. API Key

Usado por integrações servidor-a-servidor (channel managers, scripts, automações).

Criar uma API Key:

  1. Vá em Configurações → Chaves de API
  2. Clique “Gerar nova chave”
  3. Defina um nome e escopo
  4. Copie a chave (exibida apenas uma vez!)

Usar a API Key:

GET /api/tenants/:tenantId/reservations X-API-Key: opk_live_abc123def456ghi789...

Segurança: Nunca exponha API Keys em código frontend ou repositórios públicos. Use variáveis de ambiente.

Gerenciamento de sessões

Listar sessões ativas

GET /api/auth/sessions Authorization: Bearer <token>

Revogar uma sessão específica

DELETE /api/auth/sessions/:tokenPrefix Authorization: Bearer <token>

Revogar todas as sessões

POST /api/auth/revoke-all Authorization: Bearer <token>

Refresh token

POST /api/auth/refresh Authorization: Bearer <token-expirado>

Contexto de tenant

Após autenticação, defina o tenant ativo:

PUT /api/auth/tenant-context Authorization: Bearer <token> Content-Type: application/json { "tenantId": "uuid-do-tenant" }

Isso é necessário para usuários que pertencem a múltiplos tenants.

Permissões (CASL)

A API respeita as permissões definidas pelo papel do usuário. Se um usuário com papel “Financeiro” tentar acessar um endpoint de gestão de usuários, receberá:

{ "statusCode": 403, "message": "Forbidden: insufficient permissions", "error": "ForbiddenException" }

Endpoints públicos (sem autenticação)

Os seguintes endpoints são acessíveis sem token — usados pelo portal de reservas público:

MétodoEndpointDescrição
GET/api/public/property/:id/configConfiguração da propriedade
GET/api/public/property/:id/roomsLista de quartos/tarifas
GET/api/public/property/:id/availabilityDisponibilidade
GET/api/public/property/:id/galleryGaleria de fotos
GET/api/public/property/:id/payment-methodsMétodos de pagamento
POST/api/public/reservations/holdCriar hold de reserva
POST/api/public/payments/createProcessar pagamento
POST/api/public/reservations/confirmConfirmar reserva
POST/api/public/reservations/cancelCancelar reserva
GET/api/public/payments/:id/statusStatus do pagamento

Exemplos de código

cURL

# Listar reservas curl -X GET "https://api.opero.global/api/tenants/TENANT_ID/reservations?status=confirmed" \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json"

JavaScript (fetch)

const response = await fetch( `https://api.opero.global/api/tenants/${tenantId}/reservations`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, } ); const data = await response.json();

Python (requests)

import requests response = requests.get( f"https://api.opero.global/api/tenants/{tenant_id}/reservations", headers={"Authorization": f"Bearer {token}"} ) data = response.json()
Last updated on