Referência HTTP por família de recursos
A API possui contratos de automação estáveis e rotas de sessão usadas pelo dashboard. A tabela abaixo deixa explícito método, autenticação, entrada e saída antes dos exemplos.
Convenções
Envie JSON com Content-Type: application/json, arquivos com multipart/form-data e credenciais de automação no header Authorization: Bearer. Datas retornam em ISO 8601. Erros JSON usam ao menos { "error": "mensagem" }.
200Leitura ou atualização concluída201Recurso ou execução criada204Logout sem corpo400Entrada inválida401Credencial ausente, expirada ou inválida403Papel, escopo ou confiança insuficiente404Recurso fora do escopo ou inexistente409Conflito, duplicidade ou gate bloqueado413Payload acima do limite422Contrato semanticamente inconsistenteInventário de endpoints
GET /api/health e /api/versionDiagnóstico e versão · público/api/v2/management/projectsListar, criar, ler, atualizar e excluir projetos · token pessoal/api/v2/management/projects/:id/portfoliosListar e criar portfólios · token pessoal/api/v2/management/portfolios/:id/featuresListar e criar features · token pessoal/api/v2/management/features/:id/{scenarios,evidences,risks}Sub-recursos da feature · token pessoal/api/v2/management/portfolios/:id/documentsListar e enviar documentações · token pessoal/api/v2/management/documents/:id/versionsAdicionar versão documental · token pessoal/api/v2/management/document-versions/:id/contentBaixar conteúdo versionado · token pessoalPOST /api/v1/test-resultsIngestão simples por feature · chave CIPOST /api/v2/test-runsIngestão contextual e idempotente · chave CIPOST /api/v1/test-results/:id/coverageCobertura · chave CIPUT /api/v2/catalogReconciliação · OIDC confiávelPOST /api/v2/gates/evaluateGate · OIDC confiávelCrie um projeto
Este contrato usa o token pessoal emitido por fr login e funciona da mesma forma no Docker local e no remoto. O slug é gerado e desambiguado pelo servidor.
export WORKSPACE_SLUG='lb-pay'
curl --fail-with-body --request POST "$FEATURE_ROLLOUT_URL/api/v2/management/projects" --header "Authorization: Bearer $FEATURE_ROLLOUT_TOKEN" --header 'Content-Type: application/json' --data "{
\"workspace\": \"$WORKSPACE_SLUG\",
\"name\": \"Pagamentos Brasil\",
\"description\": \"Rollout dos produtos de pagamento\"
}"workspace aceita slug ou UUID, name tem entre 2 e 100 caracteres e description até 500. O token precisa de management:write e papel admin ou owner.
Leia a saída da criação
Guarde project.id para configuração e project.slug para o catálogo/CI. Liste os projetos autorizados com GET /api/v2/management/projects?workspace=lb-pay.
{
"project": {
"id": "74fb03ea-75e8-4e81-aed9-ea08b913b23d",
"workspaceId": "11111111-1111-4111-8111-111111111111",
"workspaceSlug": "lb-pay",
"workspaceName": "LB Pay",
"slug": "pagamentos-brasil",
"name": "Pagamentos Brasil",
"description": "Rollout dos produtos de pagamento"
}
}Atualize ou exclua um projeto
O PATCH devolve o projeto atualizado. O DELETE bem-sucedido responde 204 No Content; erros mantêm o envelope JSON padronizado e o x-request-id. Faça backup antes de qualquer exclusão local.
export PROJECT_ID='74fb03ea-75e8-4e81-aed9-ea08b913b23d'
curl --fail-with-body --request PATCH "$FEATURE_ROLLOUT_URL/api/v2/management/projects/$PROJECT_ID" --header "Authorization: Bearer $FEATURE_ROLLOUT_TOKEN" --header 'Content-Type: application/json' --data '{
"name": "Pagamentos LATAM",
"description": "Rollout dos produtos de pagamento na América Latina"
}'
# Exclusão é destrutiva: confirmation deve ser o nome atual exato.
curl --fail-with-body --request DELETE "$FEATURE_ROLLOUT_URL/api/v2/management/projects/$PROJECT_ID" --header "Authorization: Bearer $FEATURE_ROLLOUT_TOKEN" --header 'Content-Type: application/json' --data '{"confirmation":"Pagamentos LATAM"}'DELETE exige o nome atual exato e remove todos os recursos descendentes. Um agente nunca deve executar essa chamada sem confirmação humana explícita.
Atualize checklist e sign-off
Checklist e sign-off são alterações pontuais; features, tarefas, cenários, evidências declarativas e riscos são reconciliados em conjunto pelo catálogo v2.
checklist input{ completed: boolean }checklist outputItem atualizado com id, estado e timestampssignoff inputstatus + note opcional até 1.000 caracteressignoff outputid, status, owner, note e decidedAtcurl --fail-with-body --request PATCH "$FEATURE_ROLLOUT_URL/api/checklist/CHK-PIX-001" --header 'Content-Type: application/json' --data '{"completed":true}'
curl --fail-with-body --request PATCH "$FEATURE_ROLLOUT_URL/api/signoffs/SIGN-PIX-OPS" --header 'Content-Type: application/json' --data '{"status":"APROVADO","note":"Runbook validado em homologação."}'Avalie o gate sem alterar estado
Sem bloqueadores retorna HTTP 200 e passed: true. Com bloqueadores retorna HTTP 409, passed: false e uma lista de objetos { type, featureId, feature, message }. Use o status HTTP para o pipeline e o corpo para explicar a decisão.
curl --request POST "$FEATURE_ROLLOUT_URL/api/v2/gates/evaluate" --header "Authorization: Bearer $FEATURE_ROLLOUT_TOKEN" --header 'Content-Type: application/json' --data '{
"project": "lb-pay",
"application": "pix-automatico",
"repository": "conta-facil/lb-pay",
"environment": "production"
}'Descubra IDs antes de automatizar
Use fr project list --workspace lb-pay e as coleções da Management API para descobrir UUIDs antes de automatizar. Slugs continuam sendo o identificador recomendado para catálogo e testes; IDs de checklist/sign-off permanecem definidos no catálogo.
Não consulte tabelas PostgreSQL para descobrir recursos em automações. Isso acopla o agente ao schema interno e contorna permissões e auditoria.