# APIs do Orbit

> Orbit help — markdown twin of `/docs/apis` for LLM agents (llmstxt.org). Human UI: /docs/apis

Todos os módulos do Orbit têm API REST pública. A porta de entrada, a autenticação e os limites são os mesmos nos três; o que muda são os recursos de cada esporte.

  Cada card abre a referência completa daquele esporte, com console de teste e especificação OpenAPI.

**

##

``

[Tiro prático (IPSC)
          Provas, atletas, divisões, stages, squads, ROs, inscrições e resultados de tiro prático.
          /api/v1](/docs/api)

**

##

``

[Tiro ao prato
          Provas, passadas, squads, inscrições, campeonatos e resultados de tiro ao prato.
          /api/v1/clay](/clay/docs/api)

**

##

``

[Tiro de precisão
          Provas, modalidades, séries, turnos de bancada, inscrições, campeonatos e resultados de precisão.
          /api/v1/precisao](/precisao/docs/api)

## O que é igual nos três

  A mesma chave de entidade abre os três módulos — não existe credencial por esporte. O que decide o que ela alcança é o módulo estar habilitado na entidade.

### Autenticação

1. No painel da entidade, acesse Chaves de API (somente o owner) e crie uma chave com a permissão desejada — leitura, ou leitura e escrita.

2. Guarde a secret: ela é exibida uma única vez. Se perder, regere a chave.

3. Envie em cada request o header `Authorization: Bearer <access_key>.<secret>`.

### Limites e respostas

- **Escopo da entidade:** todo recurso é filtrado pela entidade da chave. Identificador de outro clube responde `404`, nunca `403` — a chave não deve nem saber que aquele registro existe.

- **Escopo de escrita:** `POST`, `PUT`, `PATCH` e `DELETE` exigem chave de escrita. Chave de leitura recebe `403`.

- **Rate limit por chave:** as respostas trazem os headers `X-RateLimit-Limit`, `X-RateLimit-Remaining` e `X-RateLimit-Reset`. Estourando o limite vem `429` com `Retry-After`.

- **Módulo desligado:** se a entidade não tem o esporte habilitado, as rotas dele respondem `404`.

- **Identificadores opacos:** todo recurso é endereçado por um id estável e não sequencial, seguro para expor e guardar do seu lado.

- **`external_id`:** cada recurso aceita o seu próprio identificador, único no escopo dele. É o que permite reprocessar uma carga sem duplicar registro.

  **
  **Campos obrigatórios são definidos pela sua entidade.**
  Antes de cadastrar atletas ou criar inscrições, consulte `GET /entidade`:
  o bloco `requisitos_inscricao` devolve exatamente o que é obrigatório e
  único para o seu clube.

## O que a API deliberadamente não faz

  Nenhum módulo expõe lançamento de score de campo nem substituto do aceite do atleta. A integridade do resultado depende de quem estava na linha de tiro: a assinatura nasce no campo, e uma chave de integração não tem como reproduzir isso.

## Especificações OpenAPI

- [Tiro prático (IPSC) — openapi.json](/docs/api/openapi.json)

- [Tiro ao prato — openapi.json](/clay/docs/api/openapi.json)

- [Tiro de precisão — openapi.json](/precisao/docs/api/openapi.json)

  **Precisa de algo que a API não cobre?** Integrações
  customizadas e novos recursos são avaliados caso a caso.
  ****[Fale com a gente](/contact).

Conheça o Orbit

    [Início](/?to_index=1)
    ·
    [Provas e resultados](/matches)

    ·
    [Cadastre seu clube](/get-started)
    ·
    [Contato](/contact)

---

HTML: /docs/apis
Index: /llms.txt · Docs index: /docs/llms.txt
