{"openapi":"3.1.0","info":{"title":"Feature Rollout Automation API","version":"2.0.0","summary":"Contratos públicos para catálogo, testes, cobertura e gates de rollout.","description":"Esta especificação cobre as APIs estáveis de automação e a Management API pública para projetos, portfólios, features, cenários, evidências, riscos e documentações. Rotas internas usadas somente pelo dashboard permanecem fora do contrato.","license":{"name":"Proprietary","url":"https://feature-rollout.dev/termos"}},"servers":[{"url":"https://feature-rollout.dev","description":"Plataforma hospedada"},{"url":"http://127.0.0.1:3000","description":"Docker local"}],"externalDocs":{"description":"Documentação completa","url":"https://feature-rollout.dev/docs"},"tags":[{"name":"System","description":"Saúde e descoberta do ambiente."},{"name":"Identity","description":"Identidade efêmera para pipelines confiáveis."},{"name":"Catalog","description":"Reconciliação declarativa do modelo de prontidão."},{"name":"Tests","description":"Resultados e cobertura produzidos pelo CI."},{"name":"Gates","description":"Decisão auditável de promoção."},{"name":"Management","description":"CRUD autenticado para pessoas e agentes usando tokens emitidos por fr login."}],"paths":{"/api/v2/management/projects":{"get":{"tags":["Management"],"operationId":"listProjects","summary":"Lista projetos de um workspace","security":[{"personalBearer":[]}],"parameters":[{"name":"workspace","in":"query","required":true,"schema":{"type":"string"},"example":"lb-pay"}],"responses":{"200":{"description":"Projetos acessíveis.","content":{"application/json":{"schema":{"type":"object","properties":{"workspace":{"$ref":"#/components/schemas/Workspace"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/Project"}}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"createProject","summary":"Cria um projeto","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Projeto criado.","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/projects/{projectId}":{"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"tags":["Management"],"operationId":"getProject","summary":"Obtém projeto e portfólios","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Projeto.","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Management"],"operationId":"updateProject","summary":"Atualiza um projeto","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Projeto atualizado.","content":{"application/json":{"schema":{"type":"object","required":["project"],"properties":{"project":{"$ref":"#/components/schemas/Project"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Management"],"operationId":"deleteProject","summary":"Exclui projeto e descendentes","description":"Exige confirmation igual ao nome atual.","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"responses":{"204":{"description":"Projeto excluído."},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/projects/{projectId}/portfolios":{"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"tags":["Management"],"operationId":"listPortfolios","summary":"Lista portfólios do projeto","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Portfólios.","content":{"application/json":{"schema":{"type":"object","required":["portfolios"],"properties":{"portfolios":{"type":"array","items":{"$ref":"#/components/schemas/Portfolio"}}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"createPortfolio","summary":"Cria portfólio e repositório opcional","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioCreate"}}}},"responses":{"201":{"description":"Portfólio criado.","content":{"application/json":{"schema":{"type":"object","required":["portfolio"],"properties":{"portfolio":{"$ref":"#/components/schemas/Portfolio"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/portfolios/{portfolioId}":{"parameters":[{"name":"portfolioId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"tags":["Management"],"operationId":"getPortfolio","summary":"Obtém portfólio, repositórios e features","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Portfólio.","content":{"application/json":{"schema":{"type":"object","required":["portfolio"],"properties":{"portfolio":{"$ref":"#/components/schemas/Portfolio"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Management"],"operationId":"updatePortfolio","summary":"Atualiza um portfólio","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioUpdate"}}}},"responses":{"200":{"description":"Portfólio atualizado.","content":{"application/json":{"schema":{"type":"object","required":["portfolio"],"properties":{"portfolio":{"$ref":"#/components/schemas/Portfolio"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Management"],"operationId":"deletePortfolio","summary":"Exclui portfólio e descendentes","description":"Exige confirmation igual ao nome atual.","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"responses":{"204":{"description":"Portfólio excluído."},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/portfolios/{portfolioId}/features":{"parameters":[{"name":"portfolioId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"tags":["Management"],"operationId":"listFeatures","summary":"Lista features do portfólio","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Features.","content":{"application/json":{"schema":{"type":"object","required":["features"],"properties":{"features":{"type":"array","items":{"$ref":"#/components/schemas/ManagementFeature"}}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"createFeature","summary":"Cria uma feature","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureInput"}}}},"responses":{"201":{"description":"Feature criada.","content":{"application/json":{"schema":{"type":"object","required":["feature"],"properties":{"feature":{"$ref":"#/components/schemas/ManagementFeature"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/features/{featureId}":{"parameters":[{"name":"featureId","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Management"],"operationId":"getFeature","summary":"Obtém feature e recursos relacionados","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Feature.","content":{"application/json":{"schema":{"type":"object","required":["feature"],"properties":{"feature":{"$ref":"#/components/schemas/ManagementFeature"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Management"],"operationId":"updateFeature","summary":"Atualiza uma feature","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureUpdate"}}}},"responses":{"200":{"description":"Feature atualizada.","content":{"application/json":{"schema":{"type":"object","required":["feature"],"properties":{"feature":{"$ref":"#/components/schemas/ManagementFeature"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Management"],"operationId":"deleteFeature","summary":"Exclui uma feature","description":"Exige confirmation igual ao ID atual.","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"responses":{"204":{"description":"Feature excluída."},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/features/{featureId}/scenarios":{"parameters":[{"name":"featureId","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Management"],"operationId":"listScenarios","summary":"Lista cenários da feature","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Cenários.","content":{"application/json":{"schema":{"type":"object","required":["scenarios"],"properties":{"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ManagementScenario"}}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"createScenario","summary":"Cria um cenário","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioInput"}}}},"responses":{"201":{"description":"Cenário criado.","content":{"application/json":{"schema":{"type":"object","required":["scenario"],"properties":{"scenario":{"$ref":"#/components/schemas/ManagementScenario"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/scenarios/{scenarioId}":{"parameters":[{"name":"scenarioId","in":"path","required":true,"schema":{"type":"string"}}],"patch":{"tags":["Management"],"operationId":"updateScenario","summary":"Atualiza um cenário","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioUpdate"}}}},"responses":{"200":{"description":"Cenário atualizado.","content":{"application/json":{"schema":{"type":"object","required":["scenario"],"properties":{"scenario":{"$ref":"#/components/schemas/ManagementScenario"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Management"],"operationId":"deleteScenario","summary":"Exclui um cenário","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"responses":{"204":{"description":"Cenário excluído."},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/features/{featureId}/evidences":{"parameters":[{"name":"featureId","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Management"],"operationId":"listEvidences","summary":"Lista evidências da feature","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Evidências.","content":{"application/json":{"schema":{"type":"object","required":["evidences"],"properties":{"evidences":{"type":"array","items":{"$ref":"#/components/schemas/ManagementEvidence"}}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"createEvidence","summary":"Cria uma evidência explicada","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceInput"}}}},"responses":{"201":{"description":"Evidência criada.","content":{"application/json":{"schema":{"type":"object","required":["evidence"],"properties":{"evidence":{"$ref":"#/components/schemas/ManagementEvidence"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/evidences/{evidenceId}":{"parameters":[{"name":"evidenceId","in":"path","required":true,"schema":{"type":"string"}}],"patch":{"tags":["Management"],"operationId":"updateEvidence","summary":"Atualiza metadados da evidência","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceUpdate"}}}},"responses":{"200":{"description":"Evidência atualizada.","content":{"application/json":{"schema":{"type":"object","required":["evidence"],"properties":{"evidence":{"$ref":"#/components/schemas/ManagementEvidence"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Management"],"operationId":"deleteEvidence","summary":"Exclui uma evidência","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"responses":{"204":{"description":"Evidência excluída."},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/features/{featureId}/risks":{"parameters":[{"name":"featureId","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Management"],"operationId":"listRisks","summary":"Lista riscos da feature","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Riscos.","content":{"application/json":{"schema":{"type":"object","required":["risks"],"properties":{"risks":{"type":"array","items":{"$ref":"#/components/schemas/ManagementRisk"}}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"createRisk","summary":"Cria um risco","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskInput"}}}},"responses":{"201":{"description":"Risco criado.","content":{"application/json":{"schema":{"type":"object","required":["risk"],"properties":{"risk":{"$ref":"#/components/schemas/ManagementRisk"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/risks/{riskId}":{"parameters":[{"name":"riskId","in":"path","required":true,"schema":{"type":"string"}}],"patch":{"tags":["Management"],"operationId":"updateRisk","summary":"Atualiza um risco","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskUpdate"}}}},"responses":{"200":{"description":"Risco atualizado.","content":{"application/json":{"schema":{"type":"object","required":["risk"],"properties":{"risk":{"$ref":"#/components/schemas/ManagementRisk"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Management"],"operationId":"deleteRisk","summary":"Exclui um risco","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"responses":{"204":{"description":"Risco excluído."},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/portfolios/{portfolioId}/documents":{"parameters":[{"name":"portfolioId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"tags":["Management"],"operationId":"listDocuments","summary":"Lista documentos, versões e análises","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Centro documental do portfólio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentationCenter"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Management"],"operationId":"uploadDocument","summary":"Cria documento e versão 1","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"},"title":{"type":"string","maxLength":160},"description":{"type":"string","maxLength":1000}}}}}},"responses":{"201":{"description":"Documento criado.","content":{"application/json":{"schema":{"type":"object","required":["document"],"properties":{"document":{"$ref":"#/components/schemas/PortfolioDocument"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/documents/{documentId}/versions":{"parameters":[{"name":"documentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"tags":["Management"],"operationId":"addDocumentVersion","summary":"Adiciona versão e calcula diff","security":[{"personalBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"},"versionNote":{"type":"string","maxLength":1000}}}}}},"responses":{"201":{"description":"Versão criada.","content":{"application/json":{"schema":{"type":"object","required":["version"],"properties":{"version":{"$ref":"#/components/schemas/DocumentVersion"}}}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/management/document-versions/{versionId}/content":{"parameters":[{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"tags":["Management"],"operationId":"downloadDocumentVersion","summary":"Baixa uma versão preservando o MIME","security":[{"personalBearer":[]}],"responses":{"200":{"description":"Bytes do documento.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/version":{"get":{"tags":["System"],"operationId":"getVersion","summary":"Consulta versões e compatibilidade do deploy","security":[],"responses":{"200":{"description":"Matriz de versões da aplicação, APIs, CLI, SDKs e Docker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionInfo"}}}}}}},"/api/health":{"get":{"tags":["System"],"operationId":"getHealth","summary":"Verifica aplicação, banco e modo de execução","security":[],"responses":{"200":{"description":"Serviço pronto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"503":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/auth/github":{"post":{"tags":["Identity"],"operationId":"exchangeGitHubOidcToken","summary":"Troca um JWT OIDC do GitHub por um token curto","description":"O token emitido expira em dez minutos. Escopos e trust level dependem da política do repositório, evento, ref e workflow.","security":[{"githubOidc":[]}],"responses":{"200":{"description":"Credencial efêmera emitida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OidcCredential"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/catalog":{"put":{"tags":["Catalog"],"operationId":"syncCatalogV2","summary":"Reconcilia um catálogo completo","description":"Exige catalog:write e trust level trusted. O contrato inteiro é validado antes da primeira escrita.","security":[{"ciBearer":[]}],"x-required-scope":"catalog:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}},"responses":{"200":{"description":"Catálogo reconciliado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogSyncReceipt"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Contrato semanticamente inconsistente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogError"}}}}}}},"/api/v1/test-results":{"post":{"tags":["Tests"],"operationId":"createTestResult","summary":"Importa um relatório de teste por feature","security":[{"ciBearer":[]}],"x-required-scope":"test-runs:write","parameters":[{"name":"featureId","in":"query","required":true,"schema":{"type":"string","maxLength":100},"example":"LBP-PIX-001"},{"$ref":"#/components/parameters/ReportFormat"},{"$ref":"#/components/parameters/GitSha"},{"$ref":"#/components/parameters/Environment"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/xml":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"Reenvio idempotente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestRunReceipt"}}}},"201":{"description":"Execução criada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestRunReceipt"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/test-runs":{"post":{"tags":["Tests"],"operationId":"createContextualTestRun","summary":"Importa uma execução ligada ao repositório e revisão Git","security":[{"ciBearer":[]}],"x-required-scope":"test-runs:write","parameters":[{"name":"project","in":"query","required":true,"schema":{"type":"string","maxLength":100},"example":"lb-pay"},{"name":"application","in":"query","required":true,"schema":{"type":"string","maxLength":100},"example":"pix-automatico"},{"name":"repository","in":"query","required":true,"schema":{"type":"string","maxLength":300},"example":"conta-facil/lb-pay"},{"name":"featureId","in":"query","required":false,"schema":{"type":"string","maxLength":100},"example":"LBP-PIX-001"},{"$ref":"#/components/parameters/ReportFormat"},{"name":"X-Run-ID","in":"header","required":true,"description":"Identificador externo usado na idempotência.","schema":{"type":"string","maxLength":300}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":500}},{"$ref":"#/components/parameters/GitSha"},{"$ref":"#/components/parameters/Environment"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/xml":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"Reenvio idempotente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestRunReceipt"}}}},"201":{"description":"Execução criada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestRunReceipt"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/test-results/{executionId}/coverage":{"post":{"tags":["Tests"],"operationId":"attachCoverage","summary":"Anexa cobertura a uma execução existente","security":[{"ciBearer":[]}],"x-required-scope":"test-runs:write","parameters":[{"name":"executionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["auto","istanbul","cobertura"],"default":"auto"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/xml":{"schema":{"type":"string"}}}},"responses":{"201":{"description":"Cobertura armazenada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageReceipt"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/gates/evaluate":{"post":{"tags":["Gates"],"operationId":"evaluateGate","summary":"Avalia o gate sem alterar estado","security":[{"ciBearer":[]}],"x-required-scope":"rollout:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GateInput"}}}},"responses":{"200":{"description":"Gate aprovado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GateResult"}}}},"400":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Erro de validação, autenticação ou processamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Gate bloqueado; o corpo lista todos os bloqueadores.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GateResult"}}}}}}}},"components":{"securitySchemes":{"ciBearer":{"type":"http","scheme":"bearer","bearerFormat":"fr_ci_*","description":"Chave de CI ou token efêmero emitido pelo fluxo OIDC."},"githubOidc":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT OIDC fornecido pelo GitHub Actions."},"personalBearer":{"type":"http","scheme":"bearer","bearerFormat":"fr_pat_*","description":"Token pessoal emitido por fr login. Escopos management:read/write são combinados com o papel no workspace."}},"parameters":{"ReportFormat":{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["auto","ctrf","junit","playwright","cypress"],"default":"auto"}},"GitSha":{"name":"X-Git-SHA","in":"header","required":false,"schema":{"type":"string","maxLength":100}},"Environment":{"name":"X-Environment","in":"header","required":false,"schema":{"type":"string","maxLength":100},"example":"homologation"}},"schemas":{"Error":{"type":"object","required":["error","code","details","requestId","retryable","docUrl"],"properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"requestId":{"type":"string"},"retryable":{"type":"boolean"},"docUrl":{"type":"string","format":"uri"},"violations":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"Workspace":{"type":"object","required":["id","slug","name","role"],"properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"},"role":{"type":"string","enum":["owner","admin","member"]}}},"Project":{"type":"object","required":["id","workspaceId","slug","name","description"],"properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"portfolioCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Portfolio":{"type":"object","required":["id","workspaceId","projectId","slug","name","description"],"properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"repository":{"type":["object","null"],"additionalProperties":true},"repositories":{"type":"array","items":{"type":"object","additionalProperties":true}},"features":{"type":"array","items":{"$ref":"#/components/schemas/ManagementFeature"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ManagementFeature":{"type":"object","required":["id","applicationId","useCase","name","description","status","score","deployWindow"],"properties":{"id":{"type":"string"},"workspaceId":{"type":"string","format":"uuid"},"applicationId":{"type":"string","format":"uuid"},"useCase":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"deployWindow":{"type":"string"},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ManagementScenario"}},"evidences":{"type":"array","items":{"$ref":"#/components/schemas/ManagementEvidence"}},"risks":{"type":"array","items":{"$ref":"#/components/schemas/ManagementRisk"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ManagementScenario":{"type":"object","required":["id","title","result","meta","position"],"properties":{"id":{"type":"string"},"featureId":{"type":["string","null"]},"applicationId":{"type":"string","format":"uuid"},"title":{"type":"string"},"result":{"type":"string"},"meta":{"type":"string"},"position":{"type":"integer"}}},"ManagementEvidence":{"type":"object","required":["id","featureId","kind","title","description","doubleChecked"],"properties":{"id":{"type":"integer"},"featureId":{"type":"string"},"origin":{"type":"string"},"kind":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"doubleChecked":{"type":"boolean"},"scenarioRef":{"type":"string"},"meta":{"type":"string"},"payloadType":{"type":"string","enum":["image","text"]},"contentType":{"type":"string"},"content":{"type":["string","null"]},"contentUrl":{"type":["string","null"],"format":"uri"},"encoding":{"type":"string","enum":["utf8","base64"]},"sourcePath":{"type":["string","null"]},"position":{"type":"integer"}}},"ManagementRisk":{"type":"object","required":["id","featureId","title","severity","mitigation","meta","position"],"properties":{"id":{"type":"integer"},"featureId":{"type":"string"},"title":{"type":"string"},"severity":{"type":"string","enum":["CRÍTICO","ALTO","MÉDIO","BAIXO"]},"mitigation":{"type":"string"},"meta":{"type":"string"},"position":{"type":"integer"}}},"DocumentDiff":{"type":["object","null"],"properties":{"previousVersion":{"type":"integer"},"currentVersion":{"type":"integer"},"addedLines":{"type":"integer"},"removedLines":{"type":"integer"},"unified":{"type":"string"}}},"DocumentVersion":{"type":"object","required":["id","version","fileName","mimeType","sizeBytes","checksum","extractionStatus","contentHref"],"properties":{"id":{"type":"string","format":"uuid"},"version":{"type":"integer","minimum":1},"fileName":{"type":"string"},"mimeType":{"type":"string"},"extension":{"type":"string"},"sizeBytes":{"type":"integer"},"checksum":{"type":"string"},"extractionStatus":{"type":"string"},"extractionMessage":{"type":["string","null"]},"versionNote":{"type":["string","null"]},"diff":{"$ref":"#/components/schemas/DocumentDiff"},"createdAt":{"type":"string","format":"date-time"},"contentHref":{"type":"string"}}},"PortfolioDocument":{"type":"object","required":["id","currentVersion","versions"],"properties":{"id":{"type":"string","format":"uuid"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"currentVersion":{"type":"integer","minimum":1},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/DocumentVersion"}}}},"DocumentationCenter":{"type":"object","required":["portfolio","canManage","documents","analyses"],"properties":{"portfolio":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"canManage":{"type":"boolean"},"providers":{"type":"array","items":{"type":"object","additionalProperties":true}},"documents":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioDocument"}},"analyses":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"ProjectCreate":{"type":"object","required":["workspace","name"],"properties":{"workspace":{"type":"string","description":"Slug ou UUID do workspace."},"name":{"type":"string","minLength":2,"maxLength":100},"description":{"type":"string","maxLength":500,"default":""}}},"ProjectUpdate":{"type":"object","minProperties":1,"properties":{"name":{"type":"string","minLength":2,"maxLength":100},"description":{"type":"string","maxLength":500}}},"PortfolioCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":2,"maxLength":160},"description":{"type":"string","maxLength":1000,"default":""},"slug":{"type":"string","maxLength":100},"repository":{"type":"string","example":"conta-facil/lb-pay"},"defaultBranch":{"type":"string","default":"main"}}},"PortfolioUpdate":{"type":"object","minProperties":1,"properties":{"name":{"type":"string","minLength":2,"maxLength":160},"description":{"type":"string","maxLength":1000}}},"FeatureInput":{"type":"object","required":["id","useCase","name","description","status","score","deployWindow"],"properties":{"id":{"type":"string","minLength":3,"maxLength":100},"useCase":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":2000},"status":{"type":"string","maxLength":100},"score":{"type":"integer","minimum":0,"maximum":100},"deployWindow":{"type":"string","maxLength":300}}},"FeatureUpdate":{"type":"object","minProperties":1,"properties":{"useCase":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"deployWindow":{"type":"string"}}},"ScenarioInput":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","maxLength":200},"title":{"type":"string","maxLength":1000},"result":{"type":"string","default":"PEND"},"meta":{"type":"string","default":"Aguardando execução"}}},"ScenarioUpdate":{"type":"object","minProperties":1,"properties":{"title":{"type":"string"},"result":{"type":"string"},"meta":{"type":"string"}}},"EvidenceInput":{"type":"object","required":["kind","title"],"properties":{"kind":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","default":""},"doubleChecked":{"type":"boolean","default":false},"scenarioRef":{"type":"string","default":"—"},"meta":{"type":"string","default":""},"payloadType":{"type":"string","enum":["image","text"],"default":"text"},"contentType":{"type":"string","default":"text/plain"},"content":{"type":"string"},"contentUrl":{"type":"string","format":"uri"},"encoding":{"type":"string","enum":["utf8","base64"],"default":"utf8"},"sourcePath":{"type":"string"}}},"EvidenceUpdate":{"type":"object","minProperties":1,"properties":{"title":{"type":"string"},"description":{"type":"string"},"doubleChecked":{"type":"boolean"},"scenarioRef":{"type":"string"},"meta":{"type":"string"}}},"RiskInput":{"type":"object","required":["title","severity","mitigation"],"properties":{"title":{"type":"string"},"severity":{"type":"string","enum":["CRÍTICO","ALTO","MÉDIO","BAIXO"]},"mitigation":{"type":"string"},"meta":{"type":"string","default":""}}},"RiskUpdate":{"type":"object","minProperties":1,"properties":{"title":{"type":"string"},"severity":{"type":"string","enum":["CRÍTICO","ALTO","MÉDIO","BAIXO"]},"mitigation":{"type":"string"},"meta":{"type":"string"}}},"Confirmation":{"type":"object","required":["confirmation"],"properties":{"confirmation":{"type":"string","description":"Nome ou ID atual exigido pela operação destrutiva."}}},"Health":{"type":"object","required":["status","database"],"properties":{"status":{"type":"string","enum":["ok","error"]},"database":{"type":"string","enum":["connected","unavailable"]},"auth":{"type":"string","enum":["configured","local-bypass"]},"mode":{"type":"string","enum":["hosted","local"]}}},"VersionInfo":{"type":"object","required":["application","api","catalog","cli","sdk","docker","downloads","support"],"properties":{"application":{"type":"string"},"api":{"type":"object","additionalProperties":true},"catalog":{"type":"integer"},"cli":{"type":"string"},"sdk":{"type":"object","additionalProperties":{"type":"string"}},"docker":{"type":"object","additionalProperties":true},"downloads":{"type":"object","additionalProperties":{"type":"string"}},"support":{"type":"object","additionalProperties":{"type":"string"}},"commit":{"type":["string","null"]}}},"CoverageReceipt":{"type":"object","required":["coverageId","executionId","format","metrics"],"properties":{"coverageId":{"type":"string","format":"uuid"},"executionId":{"type":"string","format":"uuid"},"format":{"type":"string","enum":["istanbul","cobertura"]},"metrics":{"type":"object","required":["lines","functions","branches","statements"],"properties":{"lines":{"type":["number","null"]},"functions":{"type":["number","null"]},"branches":{"type":["number","null"]},"statements":{"type":["number","null"]}}}}},"OidcCredential":{"type":"object","required":["token","tokenType","expiresAt","trustLevel","repository"],"properties":{"token":{"type":"string","writeOnly":true},"tokenType":{"const":"Bearer"},"expiresAt":{"type":"string","format":"date-time"},"trustLevel":{"type":"string","enum":["trusted","untrusted"]},"repository":{"type":"string"}}},"Catalog":{"type":"object","required":["version","project","application","repository","features"],"properties":{"version":{"const":2},"project":{"type":"string","minLength":1,"maxLength":100},"application":{"type":"string","minLength":1,"maxLength":100},"repository":{"type":"string","minLength":3,"maxLength":300},"replaceApplicationCatalog":{"type":"boolean","default":true},"features":{"type":"array","minItems":1,"maxItems":200,"items":{"$ref":"#/components/schemas/Feature"}}}},"Feature":{"type":"object","required":["id","useCase","name","description","status","score","deployWindow","tasks","scenarios"],"properties":{"id":{"type":"string","minLength":3,"maxLength":100},"useCase":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":2000},"status":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"deployWindow":{"type":"string"},"dimensions":{"type":"array","maxItems":50,"items":{"type":"object","required":["label","score","position"],"properties":{"label":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"position":{"type":"integer","minimum":1}}}},"checklist":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":true}},"tasks":{"type":"array","maxItems":200,"items":{"$ref":"#/components/schemas/Task"}},"scenarios":{"type":"array","maxItems":1000,"items":{"$ref":"#/components/schemas/Scenario"}},"evidences":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":true}},"risks":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":true}},"rollout":{"type":"array","maxItems":50,"items":{"type":"object","additionalProperties":true}},"signoffs":{"type":"array","maxItems":50,"items":{"type":"object","additionalProperties":true}}}},"Task":{"type":"object","required":["id","title","description","implementationDetails","acceptanceCriteria","scenarioRefs","readinessWeight","progress","area","status","position"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"implementationDetails":{"type":"string"},"acceptanceCriteria":{"type":"array","minItems":1,"items":{"type":"string"}},"scenarioRefs":{"type":"array","minItems":1,"items":{"type":"string"}},"testRefs":{"type":"array","items":{"type":"string"}},"readinessWeight":{"type":"integer","minimum":1,"maximum":100},"progress":{"type":"integer","minimum":0,"maximum":100},"remainingWork":{"type":"string"},"area":{"type":"string"},"status":{"type":"string"},"tests":{"type":"string"},"updatedLabel":{"type":"string"},"position":{"type":"integer","minimum":1}}},"Scenario":{"type":"object","required":["id","title","result","position"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"result":{"type":"string"},"meta":{"type":"string"},"position":{"type":"integer","minimum":1}}},"CatalogSyncReceipt":{"type":"object","required":["kind","applicationId","featureCount","taskCount","scenarioCount","riskCount","rolloutCount"],"properties":{"kind":{"const":"synced"},"applicationId":{"type":"string","format":"uuid"},"featureCount":{"type":"integer"},"taskCount":{"type":"integer"},"scenarioCount":{"type":"integer"},"riskCount":{"type":"integer"},"rolloutCount":{"type":"integer"}}},"CatalogError":{"allOf":[{"$ref":"#/components/schemas/Error"}],"properties":{"code":{"enum":["CATALOG_VERSION_UNSUPPORTED","CATALOG_COMPLETENESS_FAILED"]}}},"TestRunReceipt":{"type":"object","required":["executionId","format","tool","summary","duplicate"],"properties":{"executionId":{"type":"string","format":"uuid"},"format":{"type":"string"},"tool":{"type":"string"},"duplicate":{"type":"boolean"},"summary":{"type":"object","required":["total","passed","failed"],"properties":{"total":{"type":"integer"},"passed":{"type":"integer"},"failed":{"type":"integer"},"skipped":{"type":"integer"},"pending":{"type":"integer"},"other":{"type":"integer"},"flaky":{"type":"integer"}}},"revision":{"type":"object","additionalProperties":true}}},"GateInput":{"type":"object","required":["project","application","repository","environment"],"properties":{"project":{"type":"string","maxLength":100},"application":{"type":"string","maxLength":100},"repository":{"type":"string","maxLength":300},"environment":{"type":"string","enum":["homologation","production"]}}},"GateResult":{"type":"object","required":["passed","environment","evaluatedAt","blockers"],"properties":{"passed":{"type":"boolean"},"environment":{"type":"string","enum":["homologation","production"]},"evaluatedAt":{"type":"string","format":"date-time"},"blockers":{"type":"array","items":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string"},"featureId":{"type":["string","null"]},"feature":{"type":["string","null"]},"message":{"type":"string"}}}}}}}}}