API reference
Cada endpoint, agrupado por recurso
Passaportes, eventos, credenciais e resolução. O contrato de erros, a paginação e as regras de idempotência abaixo aplicam-se de forma uniforme aos quatro.
- URL base
- api.circuleid.com
- Versão
- /v1
- Auth
- Bearer
Definition
Que pontos de extremidade expõe a API de passaportes?
Quatro grupos. Os endpoints de passaporte emitem, leem, atualizam e versionam o registo de produto. Os de eventos acrescentam e consultam eventos EPCIS 2.0. Os de credenciais emitem, verificam e revogam declarações assinadas. Os de resolução servem o caminho público GS1 Digital Link que um suporte digitalizado segue.
If you have not read the API model yet, start there. The relationships between these four decide which one you should be calling, and that is the choice most integrations get wrong first.
Endpoints
Passaportes
| Método | Path | Purpose |
|---|---|---|
| POST | /v1/passports | Issue a passport against a GS1 identifier |
| GET | /v1/passports/{id} | Read the full record your key is entitled to |
| PATCH | /v1/passports/{id} | Update the record; material changes are versioned |
| GET | /v1/passports/{id}/gaps | Fields the product group’s delegated act still requires |
| GET | /v1/passports/{id}/versions | The record’s version history |
| GET | /v1/passports | List and filter passports in your tenant |
Endpoints
Eventos
| Método | Path | Purpose |
|---|---|---|
| POST | /v1/events | Append one EPCIS 2.0 event |
| POST | /v1/events/bulk | Asynchronous bulk ingestion; returns a job |
| GET | /v1/events | Query by object identity, business step or time |
| GET | /v1/jobs/{id} | Status of a bulk ingestion job |
Endpoints
Credenciais
| Método | Path | Purpose |
|---|---|---|
| POST | /v1/credentials | Issue a signed claim against a passport |
| GET | /v1/credentials/{id} | Retrieve a credential and its status |
| POST | /v1/credentials/{id}/revoke | Revoke; verification fails from this point |
| POST | /v1/credentials/verify | Verify a credential you were presented |
Endpoints
Resolução
| Método | Path | Purpose |
|---|---|---|
| GET | /01/{gtin} | GS1 Digital Link resolution — the path a scan takes |
| GET | /01/{gtin}/21/{serial} | Resolution for an item-level passport |
Convenções
Erros, paginação e idempotência
# Validation errors return every problem at once.
HTTP/1.1 422 Unprocessable Entity
{
"error": "validation_failed",
"problems": [
{ "field": "materials[0].share", "constraint": "must sum to 1.0" },
{ "field": "carbonFootprint.method", "constraint": "required for this group" }
]
}
# Pagination is cursor-based: an offset would skip or repeat
# records as new events arrive while you are reading.
GET /v1/events?object=01/09506000134352&cursor=ev_8f21...
# Send an idempotency key on any write you might retry.
POST /v1/passports
Idempotency-Key: 6f1c9a7e-... # a repeat returns the original resultRespostas
Perguntas frequentes
Qual é o aspeto de uma resposta de erro?
Um estado HTTP convencional com um corpo estruturado que identifica o erro, o campo que falhou e a restrição violada. Os erros de validação são devolvidos por inteiro em vez de um de cada vez, pelo que um registo malformado revela todos os problemas numa resposta em vez de em cinco idas e voltas.
Como é tratada a paginação?
Baseado em cursor e não em deslocamento. Os históricos de eventos crescem enquanto os lê, e um deslocamento saltaria ou repetiria registos em silêncio à medida que chegam novos eventos. O cursor é opaco e estável; passe o que a página anterior devolveu e pare quando nenhum voltar.
As escritas são idempotentes?
Podem ser, e devem ser. Envie uma chave de idempotência em qualquer escrita que possa vir a repetir: uma repetição com a mesma chave devolve o resultado original em vez de criar um segundo passaporte ou um evento duplicado. Sem ela, um tempo de espera de rede numa escrita deixa-o sem saber se ela foi aplicada.
Qual é a diferença entre ler um passaporte e resolvê-lo?
A leitura é autenticada e devolve aquilo a que a sua chave de API dá direito. A resolução é o que uma leitura faz: pública, anónima, cacheável, devolvendo o nível que as credenciais de quem chama permitem — para a maioria, o nível público. São caminhos distintos, com propriedades de desempenho e privacidade diferentes.
Next step
Emitir um com uma chave de sandbox
A forma mais rápida de avaliar uma API é enviar-lhe um registo de produto real e ler o que volta.