API Reference — Visão Geral
Introdução
A API do Opero Global é uma API REST que permite integrar sistemas externos com todas as funcionalidades da plataforma. Com ela você pode:
- Criar e gerenciar reservas programaticamente
- Consultar disponibilidade em tempo real
- Automatizar processos financeiros
- Integrar com channel managers e OTAs
- Construir interfaces customizadas
Base URL
Produção: https://api.opero.global/api
Staging: https://staging-api.opero.global/apiTodas as URLs de endpoint são relativas à base URL acima.
Formato
- Request: JSON (
Content-Type: application/json) - Response: JSON
- Encoding: UTF-8
- Datas: ISO 8601 (
2026-05-25T14:30:00Z) - Valores monetários: Inteiros em centavos (ex: R$ 199,90 =
19990) - IDs: UUID v4
Autenticação
Todas as requisições (exceto endpoints públicos) requerem autenticação via:
- Bearer Token (sessão) — Para aplicações frontend
- API Key — Para integrações servidor-a-servidor
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...ou
X-API-Key: opk_live_abc123def456...Detalhes completos em Autenticação.
Multi-tenancy
Quase todos os endpoints são organizados sob um tenant:
/api/tenants/:tenantId/reservations
/api/tenants/:tenantId/financial/chart-of-accounts
/api/tenants/:tenantId/guestsO tenantId identifica sua organização. Você só pode acessar dados do seu próprio tenant.
Endpoints públicos
Alguns endpoints não requerem autenticação (usados pelo portal de reservas):
GET /api/public/property/:propertyId/config
GET /api/public/property/:propertyId/rooms
GET /api/public/property/:propertyId/availability
POST /api/public/reservations/hold
POST /api/public/payments/createPaginação
Endpoints de listagem suportam paginação:
GET /api/tenants/:tenantId/reservations?page=1&limit=20Resposta:
{
"data": [...],
"meta": {
"page": 1,
"limit": 20,
"total": 145,
"totalPages": 8
}
}Filtros
Muitos endpoints suportam filtros via query params:
GET /api/tenants/:tenantId/reservations?status=confirmed&startDate=2026-06-01&endDate=2026-06-30Respostas de erro
Erros seguem um formato consistente:
{
"statusCode": 400,
"message": "Validation failed",
"errors": [
{ "field": "checkIn", "message": "Check-in date must be in the future" }
]
}Códigos HTTP comuns
| Código | Significado |
|---|---|
| 200 | Sucesso |
| 201 | Recurso criado |
| 400 | Requisição inválida (validação falhou) |
| 401 | Não autenticado (token ausente/expirado) |
| 403 | Sem permissão (CASL negou acesso) |
| 404 | Recurso não encontrado |
| 409 | Conflito (ex: reserva duplicada) |
| 422 | Entidade não processável |
| 429 | Rate limit excedido |
| 500 | Erro interno do servidor |
Rate Limiting
- API Key: 1000 requisições/minuto
- Bearer Token: 100 requisições/minuto
- Headers de resposta incluem limites:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1685000000Módulos da API
| Módulo | Descrição | Endpoints |
|---|---|---|
| Auth | Autenticação e sessões | 10+ |
| Properties | Propriedades e configurações | 15+ |
| Units | Unidades (quartos/camas) | 10+ |
| Guests | Hóspedes e verificação | 20+ |
| Reservations | Reservas e lifecycle | 25+ |
| Financial | Plano de contas, lançamentos | 80+ |
| Cash Management | Caixa, banco, PIX | 20+ |
| Accounts Payable | Fornecedores e pagáveis | 30+ |
| Accounts Receivable | Clientes e recebíveis | 25+ |
| Inventory | Estoque, receitas, consumo | 20+ |
| Payment | Gateways e processamento | 15+ |
| Issues | Reclamações e suporte | 15+ |
| OCP | Comunicação (email/SMS/WhatsApp) | 20+ |
| Reports | Relatórios financeiros | 10+ |
| Admin | Gestão de tenants (superuser) | 25+ |
| Total | 450+ |
Playground interativo
Acesse o Playground para testar endpoints diretamente no navegador, com documentação inline e geração de código em 20+ linguagens.