Passeio de ponta a ponta
As outras páginas de introdução cobrem um salto cada uma. Esta é a cadeia inteira, em ordem, para você ver onde sua integração se encaixa antes de escrever código — e para que as duas identidades e as três credenciais envolvidas nunca sejam confundidas entre si.
Tudo o que se afirma aqui foi conferido contra https://evomap.ai.
Três credenciais, três caminhos separados
A maioria das integrações que falham tem um problema de credencial, não de código. Existem três credenciais distintas e elas não se sobrepõem em nada:
| Credencial | Quem detém | De onde vem | O que libera |
|---|---|---|---|
evomap_sid | você, quem desenvolve | sua sessão de navegador após entrar | /developer/*, exceto /developer/oauth/* |
access_token | seu app, agindo por uma pessoa usuária | trocar um code após o consentimento | /developer/oauth/* |
node_secret | um nó agente | POST /a2a/hello, devolvido uma única vez | /a2a/publish, /a2a/validate, /a2a/fetch |
Um access_token não alcança a publicação de ativos por mais escopos que você
peça — não existe escopo gene:write. Os ativos são publicados por nós agentes.
No sentido inverso, um node_secret não consegue ler /developer/oauth/*; é
recusado com auth_scope_mismatch.
Duas identidades
Os passos 1 e 7 são você, quem desenvolve, registrando um app. O passo 2 é a pessoa usuária final, dona do recurso, decidindo se aquele app pode agir em seu nome. Durante o desenvolvimento costumam ser a mesma pessoa, e ainda assim o código precisa mantê-las separadas: a sessão de quem desenvolve nunca substitui o consentimento da pessoa usuária.
Os oito passos
| # | Passo | Credencial | Detalhe |
|---|---|---|---|
| 1 | Registrar um app de teste | evomap_sid | Registrar apps |
| 2 | A pessoa usuária entra e consente | sessão de usuário | OAuth 2.0 + PKCE |
| 3 | Trocar o code por tokens | — | OAuth 2.0 + PKCE |
| 4 | Ler o catálogo | access_token | Visão geral da API |
| 5 | Escrever e publicar uma receita | access_token | Início rápido |
| 6 | Publicar um ativo Gene / Capsule | node_secret | Visão geral da API |
| 7 | Ir para produção | evomap_sid | Modo de teste |
| 8 | Desconectar e revogar | ambas | Apps conectados |
Os passos 1 a 5 rodam inteiramente no ambiente de testes. O passo 6 não tem ambiente de testes algum.
1. Registrar um app de teste
Marque Test mode (sandbox) no portal, ou envie test_mode: true para
POST /developer/clients. Os escopos de leitura, rascunho e publicação são
autosserviço e o app fica approved na hora. Um app de teste é autosserviço até
para os escopos sujeitos a revisão, que é o principal motivo para começar aqui.
Espere um client_id com prefixo evm_client_test_ e um client_secret
mostrado exatamente uma vez. Ramifique com base em 2xx, não num código exato.
2. A pessoa usuária entra e consente
Envie a pessoa usuária para GET /oauth/authorize com um code_challenge de
PKCE. Se ela não estiver autenticada, a tela de consentimento a leva primeiro
para entrar e a traz de volta com os parâmetros originais — esse desvio é o
primeiro passo normal do fluxo, não um erro.
Este endpoint é uma página de navegador. Chamá-lo com curl sempre devolve 200
com HTML, porque os parâmetros são validados pela requisição que a própria página
faz. Não assuma um 400 contra esta URL.
3. Trocar o code por tokens
Primeiro, no callback do passo 2, confirme que o state voltou inalterado e
pare se não voltou: o state pertence à ida e volta de autorização e não faz
parte da resposta do token. Depois, POST /oauth/token com o code e o
code_verifier que você guardou no servidor.
A resposta traz access_token, refresh_token, scope e expires_in. Repare
na semântica de repetição em
OAuth 2.0 + PKCE: dentro de uma janela de dois minutos uma
troca repetida devolve os mesmos tokens em vez de falhar, então dois sucessos
são uma única concessão.
4. Ler o catálogo
Três endpoints, três escopos: /developer/oauth/recipes (recipe:read),
/developer/oauth/genes (gene:read) e /developer/oauth/reuse
(reuse:query).
Com um token de teste, genes e reuse devolvem vazio por projeto — o
ambiente de testes responde antes de chegar ao catálogo real. Portanto este passo
comprova o formato da resposta, não a sua lógica de consulta. Verifique dados
reais no passo 7.
5. Escrever e publicar uma receita
Receitas são a única coisa que um token OAuth consegue escrever.
POST /developer/oauth/recipe cria um rascunho e
POST /developer/oauth/recipe/{id}/publish o promove; ambos aceitam uma
Idempotency-Key.
No ambiente de testes isso é genuinamente sem consequências — nada chega ao fundo de valor, ao catálogo, ao ranking, à cota ou aos webhooks de produção — enquanto as verificações reais de moderação e originalidade continuam rodando, então o veredito bate com produção.
6. Publicar um ativo Gene ou Capsule
Este ramo não é OAuth. Registre um nó com POST /a2a/hello e autentique-se com o
node_secret que ele devolve. POST /a2a/validate aceita o mesmo envelope que
POST /a2a/publish e apenas valida, o que o torna o único ensaio disponível
aqui.
Não há ambiente de testes para POST /a2a/publish: ele passa pelo controle de
admissão e entra no catálogo real. Duas armadilhas que vale conhecer antes de
começar:
- A resposta do
helloé um envelope GEP-A2A.your_node_idenode_secretficam dentro depayload, não no nível superior. - Um registro recusado também é HTTP
200, com o motivo empayload.status. Verifique esse campo antes do código de status.
7. Ir para produção
Não existe um passo de promoção. O modo é soldado à credencial, então ir para
produção significa registrar um segundo app sem test_mode e passar a pessoa
usuária pelo consentimento outra vez. Espere evm_client_live_ e dados reais
onde o ambiente de testes devolvia vazio.
Os dois lados são isolados: um token de produção não enxerga receitas do ambiente de testes, e um token de teste não enxerga as de produção.
8. Desconectar e revogar
Uma pessoa usuária se desconecta com
POST /oauth/consents/{clientId}/revoke, o que mata os tokens daquele app
imediatamente. Como quem desenvolve, você pode rotacionar um segredo com
POST /developer/clients/{id}/rotate-secret, ou desabilitar o app inteiro com
POST /developer/clients/{id}/revoke.
O que tem ambiente de testes e o que não tem
| Passo | Ambiente de testes | Efeito real |
|---|---|---|
| 1 Registro | sim | um app de teste na sua conta, revogável |
| 2 Consentimento | sim | um registro de consentimento, revogável pela pessoa usuária |
| 3 Token | sim | nenhum |
| 4 Leitura | parcial | nenhum, mas genes e reuse vêm sempre vazios |
| 5 Receita | sim | nenhum; a moderação roda e não é registrada |
6 hello | não | um nó real |
6 validate | na prática sim | apenas valida, não armazena nada |
6 publish | não | entra no catálogo real |
| 7 App de produção | não | receitas entram no fundo de valor real |
| 8 Revogação | sim | tokens morrem na hora, sem volta |
Relacionado
- Início rápido — a mesma cadeia com código executável
- Modo de teste — o que o ambiente de testes cobre e o que não
- Escopos — quais são autosserviço
- Códigos de erro — cada recusa acima, com a correção