Primeiros passos
Este roteiro executa o fluxo completo no sandbox: banco simulado, sem envio de SMS e sem propostas registradas de verdade. Você precisa das credenciais do seu canal e de um terminal (ou do Postman).
Os exemplos usam estas variáveis (em bash export NOME=valor; no PowerShell $env:NOME = "valor"):
| Variável | Valor |
|---|---|
CLIENT_ID |
cbc_..., fornecido pela Eagle IX |
CLIENT_SECRET |
cbs_..., fornecido pela Eagle IX |
ACCESS_TOKEN |
o access_token devolvido no passo 1 |
LINK_ID |
o id do link criado no passo 4 |
-
Peça o access token
curl -s -X POST https://sandbox-api.eagleix-corban.com.br/v1/oauth/token \-u "$CLIENT_ID:$CLIENT_SECRET" \-d grant_type=client_credentialscurl.exe -s -X POST "https://sandbox-api.eagleix-corban.com.br/v1/oauth/token" -u "$($env:CLIENT_ID):$($env:CLIENT_SECRET)" -d grant_type=client_credentials$cred = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($env:CLIENT_ID):$($env:CLIENT_SECRET)"))$h = @{ Authorization = "Basic $cred" }Invoke-RestMethod -Method Post -Uri "https://sandbox-api.eagleix-corban.com.br/v1/oauth/token" `-Headers $h `-Body @{ grant_type = "client_credentials" }const res = await fetch('https://sandbox-api.eagleix-corban.com.br/v1/oauth/token', {method: 'POST',headers: {Authorization: `Basic ${Buffer.from(`${process.env.CLIENT_ID}:${process.env.CLIENT_SECRET}`).toString('base64')}`,'Content-Type': 'application/x-www-form-urlencoded',},body: 'grant_type=client_credentials',})const data = await res.json()import os, requestsr = requests.request("POST","https://sandbox-api.eagleix-corban.com.br/v1/oauth/token",auth=(os.environ["CLIENT_ID"], os.environ["CLIENT_SECRET"]),data={"grant_type":"client_credentials"},timeout=15,)print(r.status_code, r.json())Em Import, escolha Raw text e cole o comando. A variável
{{ACCESS_TOKEN}}é criada na coleção.curl --location --request POST 'https://sandbox-api.eagleix-corban.com.br/v1/oauth/token' \--user 'CLIENT_ID:CLIENT_SECRET' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'grant_type=client_credentials'{ "access_token": "cbt_...", "token_type": "Bearer", "expires_in": 3600 }Guarde o token em
ACCESS_TOKEN. Ele vale 1 hora e deve ser reutilizado nas chamadas seguintes. -
Crie a sua caixa de entrada de testes
Para receber webhooks sem precisar de um servidor próprio, o sandbox oferece uma caixa de entrada de teste:
curl -s -X PUT https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor \-H "Authorization: Bearer $ACCESS_TOKEN"curl.exe -s -X PUT "https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor" -H "Authorization: Bearer $env:ACCESS_TOKEN"$h = @{ Authorization = "Bearer $($env:ACCESS_TOKEN)" }Invoke-RestMethod -Method Put -Uri "https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor" `-Headers $hconst res = await fetch('https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor', {method: 'PUT',headers: {Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,},})const data = await res.json()import os, requestsr = requests.request("PUT","https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor",headers={"Authorization": f"Bearer {os.environ['ACCESS_TOKEN']}"},timeout=15,)print(r.status_code, r.json())Em Import, escolha Raw text e cole o comando. A variável
{{ACCESS_TOKEN}}é criada na coleção.curl --location --request PUT 'https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor' \--header 'Authorization: Bearer {{ACCESS_TOKEN}}'{"url": "https://sandbox-api.eagleix-corban.com.br/v1/sandbox/receptor/sbx_...","visualizacaoUrl": "https://contratar.eagleix-corban.com.br/sandbox/webhooks/sbx_...","responderStatus": 200}Abra a
visualizacaoUrlno navegador. A página lista os eventos recebidos e se atualiza automaticamente. -
Cadastre o webhook
curl -s -X PUT https://sandbox-api.eagleix-corban.com.br/v1/webhooks \-H "Authorization: Bearer $ACCESS_TOKEN" \-H "Content-Type: application/json" \-d '{"url":"<url da caixa de entrada>"}'$body = '{"url":"<url da caixa de entrada>"}'$body | curl.exe -s -X PUT "https://sandbox-api.eagleix-corban.com.br/v1/webhooks" -H "Authorization: Bearer $env:ACCESS_TOKEN" -H "Content-Type: application/json" --data-binary "@-"$h = @{ Authorization = "Bearer $($env:ACCESS_TOKEN)" }$body = '{"url":"<url da caixa de entrada>"}'Invoke-RestMethod -Method Put -Uri "https://sandbox-api.eagleix-corban.com.br/v1/webhooks" `-Headers $h `-ContentType "application/json" -Body $bodyconst res = await fetch('https://sandbox-api.eagleix-corban.com.br/v1/webhooks', {method: 'PUT',headers: {Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,'Content-Type': 'application/json',},body: JSON.stringify({"url": "<url da caixa de entrada>"}),})const data = await res.json()import os, requestsr = requests.request("PUT","https://sandbox-api.eagleix-corban.com.br/v1/webhooks",headers={"Authorization": f"Bearer {os.environ['ACCESS_TOKEN']}"},json={"url": "<url da caixa de entrada>"},timeout=15,)print(r.status_code, r.json())Em Import, escolha Raw text e cole o comando. A variável
{{ACCESS_TOKEN}}é criada na coleção.curl --location --request PUT 'https://sandbox-api.eagleix-corban.com.br/v1/webhooks' \--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \--header 'Content-Type: application/json' \--data '{"url":"<url da caixa de entrada>"}'A resposta traz o
segredo(whsec_...) usado para assinar os eventos. Ele é exibido uma única vez: guarde-o. -
Crie um link de contratação
curl -s -X POST https://sandbox-api.eagleix-corban.com.br/v1/links \-H "Authorization: Bearer $ACCESS_TOKEN" \-H "Content-Type: application/json" \-H "Idempotency-Key: primeiro-teste-0001" \-d '{"cpf":"52998224725","celular":"11987654321","referenciaExterna":"promotor-42"}'$body = '{"cpf":"52998224725","celular":"11987654321","referenciaExterna":"promotor-42"}'$body | curl.exe -s -X POST "https://sandbox-api.eagleix-corban.com.br/v1/links" -H "Authorization: Bearer $env:ACCESS_TOKEN" -H "Content-Type: application/json" -H "Idempotency-Key: primeiro-teste-0001" --data-binary "@-"$h = @{ Authorization = "Bearer $($env:ACCESS_TOKEN)"; "Idempotency-Key" = "primeiro-teste-0001" }$body = '{"cpf":"52998224725","celular":"11987654321","referenciaExterna":"promotor-42"}'Invoke-RestMethod -Method Post -Uri "https://sandbox-api.eagleix-corban.com.br/v1/links" `-Headers $h `-ContentType "application/json" -Body $bodyconst res = await fetch('https://sandbox-api.eagleix-corban.com.br/v1/links', {method: 'POST',headers: {Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,'Content-Type': 'application/json','Idempotency-Key': 'primeiro-teste-0001',},body: JSON.stringify({"cpf": "52998224725","celular": "11987654321","referenciaExterna": "promotor-42"}),})const data = await res.json()import os, requestsr = requests.request("POST","https://sandbox-api.eagleix-corban.com.br/v1/links",headers={"Authorization": f"Bearer {os.environ['ACCESS_TOKEN']}", "Idempotency-Key": "primeiro-teste-0001"},json={"cpf": "52998224725","celular": "11987654321","referenciaExterna": "promotor-42"},timeout=15,)print(r.status_code, r.json())Em Import, escolha Raw text e cole o comando. A variável
{{ACCESS_TOKEN}}é criada na coleção.curl --location --request POST 'https://sandbox-api.eagleix-corban.com.br/v1/links' \--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \--header 'Content-Type: application/json' \--header 'Idempotency-Key: primeiro-teste-0001' \--data '{"cpf":"52998224725","celular":"11987654321","referenciaExterna":"promotor-42"}'O
Idempotency-Keyé opcional. Sem ele, o sistema gera um UUID e cada chamada cria um novo link. Guarde oiddo link e abra aurldevolvida. -
Percorra a jornada como o cliente
Na página aberta pela
url, informe o código123456(no sandbox o código é sempre esse), escolha uma oferta, preencha os dados e envie. A caixa de entrada passa a mostrar os eventosproposta.criadaeproposta.aguardando_formalizacao, com a verificação da assinatura. -
Avance a proposta
curl -s -X POST https://sandbox-api.eagleix-corban.com.br/v1/links/$LINK_ID/proposta/simular \-H "Authorization: Bearer $ACCESS_TOKEN" \-H "Content-Type: application/json" \-d '{"status":"APROVADA"}'$body = '{"status":"APROVADA"}'$body | curl.exe -s -X POST "https://sandbox-api.eagleix-corban.com.br/v1/links/$($env:LINK_ID)/proposta/simular" -H "Authorization: Bearer $env:ACCESS_TOKEN" -H "Content-Type: application/json" --data-binary "@-"$h = @{ Authorization = "Bearer $($env:ACCESS_TOKEN)" }$body = '{"status":"APROVADA"}'Invoke-RestMethod -Method Post -Uri "https://sandbox-api.eagleix-corban.com.br/v1/links/$($env:LINK_ID)/proposta/simular" `-Headers $h `-ContentType "application/json" -Body $bodyconst res = await fetch(`https://sandbox-api.eagleix-corban.com.br/v1/links/${process.env.LINK_ID}/proposta/simular`, {method: 'POST',headers: {Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,'Content-Type': 'application/json',},body: JSON.stringify({"status": "APROVADA"}),})const data = await res.json()import os, requestsr = requests.request("POST",f"https://sandbox-api.eagleix-corban.com.br/v1/links/{os.environ['LINK_ID']}/proposta/simular",headers={"Authorization": f"Bearer {os.environ['ACCESS_TOKEN']}"},json={"status": "APROVADA"},timeout=15,)print(r.status_code, r.json())Em Import, escolha Raw text e cole o comando. A variável
{{ACCESS_TOKEN}}é criada na coleção.curl --location --request POST 'https://sandbox-api.eagleix-corban.com.br/v1/links/{{LINK_ID}}/proposta/simular' \--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \--header 'Content-Type: application/json' \--data '{"status":"APROVADA"}'Os valores aceitos são
FORMALIZADA,APROVADA,RECUSADAeCANCELADA. Cada mudança gera o webhook correspondente.
