projetos — Brabo API

Brabo API

Devolve um projeto pelo id

Request

Security
bearer
Path
projectIdstringrequired
GET
/projects/{projectId}
Payload
// No request payload

Responses

Bodyapplication/json
idstringrequired
Example:"01JC4Z0000PROJETO0000000001"
workspaceIdstringrequired
Example:"01JC4Z0000WORKSPACE00000001"
namestringrequired
Example:"Checkout"
slugstringrequired

Único dentro do workspace.

Example:"checkout"
workspaceDirNamestringrequired

Nome da pasta física do workspace deste projeto em PROJECT_WORKSPACES_ROOT (RN-109). <slug>-<8 id chars> (8 caracteres do id) em projeto novo; o UUID cru em projeto criado antes de esta coluna existir. Congelado na criação — editar slug depois não o recalcula.

Example:"checkout-3f2b1c8e"
executionModestringrequired

ONDE o comando executa (RN-169/RN-421 — ADR 0072/0104). container: a pasta gerenciada em PROJECT_WORKSPACES_ROOT. mounted: a pasta do usuário em workspacePath, dentro de BRABO_PROJECTS_BASE e alcançada pelo bind-mount da base (ADR 0141). runner: a pasta do usuário confirmada pelo runner. mounted e runner relatam a confirmação em workspaceVerifiedAt.

Enum:"container""mounted""runner"
Example:"container"
workspacePathobject or nullrequired

O caminho absoluto da pasta do usuário — preenchido em mounted/runner, sempre null no modo container.

Example:null
workspaceVerifiedAtobject or nullrequired

Quando o caminho foi confirmado em disco. null = ainda não verificado. Em runner a confirmação vem do CLI conectando (RN-423); em mounted é carimbada quando a Infra sobe o container e a pasta é materializada (RN-501, ADR 0142). container nunca preenche este campo. Registra UMA confirmação, nunca um batimento.

Example:null
mirrorPathobject or nullrequired

O destino de espelho na máquina do USUÁRIO — a pasta FORA da base montada para onde o agente local copia o trabalho (RN-515, ADR 0147). null quer dizer que o projeto não tem espelho, e esse é o estado NORMAL, nunca um erro. Só mounted/runner podem ter. Definido por PUT /projects/:projectId/mirror-path; vem junto em toda leitura do projeto para nada precisar de endpoint dedicado para conhecê-lo. O valor foi validado só LEXICAMENTE — se a pasta existe quem sabe é o agente local, não esta API.

Example:null
languagestringrequired

O idioma do PROJETO (RN-619): o idioma de tudo o que não tem autor humano — artefatos compartilhados (product brief, regras de negócio, ADRs) e turnos que ninguém digitou (kickoff, dev agents, gates, mensagens de commit, corpos de PR). Código BCP-47 canônico, lista aberta. Projeto novo começa com o idioma de resposta efetivo de quem o criou (RN-618). Definido por PATCH /projects/:projectId (maintainer). O engine o manda ao modelo como mensagem de sistema efêmera no fim de toda chamada de LLM de um turno sem autor humano (RN-622); artefato emitido durante o turno de uma pessoa continua seguindo o idioma de resposta dessa pessoa.

Example:"pt-BR"
createdBystringrequired
Example:"01JC4Z0000USUARIO0000000001"
taskBudgetMicrosobject or nullrequired

Teto de tokens por tarefa de dev agent, em micro-USD. null usa o padrão do domínio.

Example:500000
maxConsecutiveBlockedobject or nullrequired

Circuit breaker por dev agent (Fase 12b — RN-047): tarefas consecutivas terminando bloqueadas antes de parar em idle_tripped. null usa o padrão do domínio.

Example:3
storyPromotionstringrequired

Quem promove uma história para ready (Fase 12c — RN-048). manual: o PO propõe e o usuário decide. auto: promoção automática na criação — o padrão de projeto novo desde a RN-659; projetos criados antes mantêm o valor que tinham.

Enum:"manual""auto"
Example:"auto"
createdAtstring, (date-time)required
Example:"2026-07-21T11:00:00.000Z"
updatedAtstring, (date-time)required
Example:"2026-07-21T11:00:00.000Z"
Response
{ "id": "01JC4Z0000PROJETO0000000001", "workspaceId": "01JC4Z0000WORKSPACE00000001", "name": "Checkout", "slug": "checkout", "workspaceDirName": "checkout-3f2b1c8e", "executionMode": "container", "workspacePath": null, "workspaceVerifiedAt": null, "mirrorPath": null, "language": "pt-BR", "createdBy": "01JC4Z0000USUARIO0000000001", "taskBudgetMicros": 500000, "maxConsecutiveBlocked": 3, "storyPromotion": "auto", "createdAt": "2026-07-21T11:00:00.000Z", "updatedAt": "2026-07-21T11:00:00.000Z" }