Bem-vindo à API do Old Dragon Online! Integre sua aplicação com olddragon.com.br para acessar conteúdo de RPG, personagens, campanhas e muito mais.
Base URL: https://olddragon.com.br
Formato: JSON apenas
Autenticação: OAuth 2.0 com PKCE
Confira uma demonstração de aplicação em https://olddragon-api-nodejs-demo.fly.dev e seu código fonte em github.com/olddragoneditora/olddragon-api-nodejs-demo (você pode fazer um fork e lançar uma cópia no Fly.io).
# Listar monstros públicos (sem autenticação)
curl -H "User-Agent: MeuApp (email@exemplo.com)" \
https://olddragon.com.br/monstros.json
# Com autenticação OAuth
curl -H "Authorization: Bearer SEU_TOKEN" \
-H "User-Agent: MeuApp (email@exemplo.com)" \
https://olddragon.com.br/personagens.json# Listar monstros públicos (sem autenticação)
http https://olddragon.com.br/monstros.json \
User-Agent:"MeuApp (email@exemplo.com)"
# Com autenticação OAuth
http https://olddragon.com.br/personagens.json \
Authorization:"Bearer SEU_TOKEN" \
User-Agent:"MeuApp (email@exemplo.com)"Para dúvidas ou problemas, envie um email para oi@olddragon.com.br.
- Todas as URLs começam com
https://olddragon.com.br/ - HTTPS obrigatório (HTTP não é suportado)
- Todas as URLs terminam com
.json
User-Agent: Nome da aplicação e contato (ex:MeuApp (email@exemplo.com))Content-Type:application/json(para POST/PUT)Accept:application/json(fortemente recomendado)
A API usa OAuth 2.0 com PKCE para autenticação segura. Endpoints públicos (monstros, magias, etc.) podem ser acessados sem autenticação, mas com limitações.
- Discovery URL:
https://olddragon.com.br/.well-known/openid-configuration - Authorization:
https://olddragon.com.br/authorize - Token:
https://olddragon.com.br/token - Scopes:
openid email content.read offline_access - PKCE: Obrigatório (método S256)
- Access Token: Válido por 1 hora
- Refresh Token: Válido por 1 ano (requer
offline_access) - Authorization Code: Válido por 5 minutos
Documentação completa de autenticação
Todas as coleções são paginadas automaticamente. A API retorna cabeçalhos HTTP para navegação.
Link: <https://olddragon.com.br/monstros.json?page=1>; rel="first",
<https://olddragon.com.br/monstros.json?page=2>; rel="next",
<https://olddragon.com.br/monstros.json?page=21>; rel="last"
Current-Page: 1
Total-Pages: 20
Total-Count: 400page: Número da página (padrão: 1)per_page: Itens por página (padrão: 20, máximo: 100)
Use cabeçalhos HTTP para otimizar requisições:
- Armazene
ETagouLast-Modifiedda primeira resposta - Envie como
If-None-MatchouIf-Modified-Sinceem requisições posteriores - Receba
304 Not Modifiedse o conteúdo não mudou
| Código | Significado | Ação Recomendada |
|---|---|---|
| 200 | Sucesso | Processar resposta |
| 304 | Não modificado | Usar cache local |
| 400 | Requisição inválida | Verificar parâmetros |
| 401 | Não autorizado | Renovar token |
| 403 | Proibido | Verificar permissões |
| 404 | Não encontrado | Não tentar novamente |
| 429 | Muitas requisições | Aguardar tempo em Retry-After |
| 5xx | Erro do servidor | Tentar novamente com backoff exponencial |
- Padrão: 50 requisições por 10 segundos por IP
- Cabeçalho:
Retry-Afterindica tempo de espera em segundos
A API suporta CORS para permitir chamadas de navegadores web:
GET,POST,PUT,PATCH,DELETE,OPTIONS
Authorization,Content-Type,User-Agent, e outros
- Classes -
/classes.json - Equipamentos -
/equipamentos.json - Livros -
/livros.json - Magias -
/magias.json - Monstros -
/monstros.json - Perfis -
/perfis/:handler.json - Raças -
/racas.json
Nota: Campanhas, personagens e ajudantes específicos (/campanhas/ID.json, /personagens/ID.json e /ajudantes/ID.json) podem ser acessados sem autenticação.
- Ajudantes -
/ajudantes.json(listar seus ajudantes) - Campanhas -
/campanhas.json(listar suas campanhas) - Personagens -
/personagens.json(listar seus personagens) - Acesso - Controle de acesso a conteúdo exclusivo
limited: Apenas informações básicaspartial: Informações parciais (usuário possui algumas fontes)complete: Acesso completo (usuário possui todas as fontes)
ids[]: Array de IDs específicosname: Busca por nome (quando disponível)page: Número da páginaper_page: Itens por página
curl "https://olddragon.com.br/monstros.json?ids[]=orc&ids[]=goblin"http "https://olddragon.com.br/monstros.json?ids[]=orc&ids[]=goblin"curl -H "User-Agent: MeuApp (email@exemplo.com)" \
"https://olddragon.com.br/monstros.json?concepts[]=humanoide&sizes[]=medio"http "https://olddragon.com.br/monstros.json?concepts[]=humanoide&sizes[]=medio"
User-Agent:"MeuApp (email@exemplo.com)" \curl -X PUT \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"health_points": 15}' \
https://olddragon.com.br/personagens/ID_PERSONAGEM/pv.jsonhttp PUT https://olddragon.com.br/personagens/ID_PERSONAGEM/pv.json \
Authorization:"Bearer SEU_TOKEN" \
health_points=15Email: oi@olddragon.com.br
Documentação licenciada sob Creative Commons (CC BY-SA 4.0).