interno — Brabo API

Brabo API

Cria a PRIMEIRA conta de uma instalação, já verificada

Request

Para o instalador de uma linha, que roda onde nenhum transporte de e-mail está configurado: o .env gerado não traz variável de e-mail, MAIL_TRANSPORT cai em log, e o cadastro normal espera um e-mail que nunca chega. A conta nasce verificada porque quem roda o instalador já provou algo MAIS FORTE que controlar uma caixa de e-mail — controla a máquina, o .env e o daemon do Docker. O cadastro normal não muda. Recusa com 409 quando a instalação tem QUALQUER usuário: a condição é sobre a instalação, não sobre este e-mail, então a restauração de uma migração silencia o passo pelo mesmo teste. A senha nunca é gerada aqui e nunca é guardada em lugar nenhum senão como hash argon2id; o workspace pessoal (RN-410) nasce na mesma transação.

Security
service-token
Bodyapplication/jsonrequired
emailstringrequired

O e-mail do owner, digitado no TTY. Normalizado antes de qualquer gravação; é o que o instalador grava no marcador dele, já que e-mail identifica e não é segredo.

Example:"voce@exemplo.dev"
senhastringrequired

Lida sem eco e confirmada pelo instalador. Usada e descartada — nunca gravada no .env, no marcador nem em log, e nunca gerada por código nenhum: não há caminho em que uma conta nasça com senha escolhida pelo script. O mínimo é a política do DOMÍNIO, o mesmo código que o cadastro usa; o tamanho máximo aqui é proteção do argon2id, não política.

Example:"uma frase longa e minha"
nomestring

Nome de exibição. Omitido: o nome do workspace pessoal cai na parte local do e-mail (RN-410) — nada é inventado.

Example:"Fulana de Tal"
POST
/internal/first-account
Payload
{ "email": "voce@exemplo.dev", "senha": "uma frase longa e minha", "nome": "Fulana de Tal" }

Responses

Bodyapplication/json
userIdstring, (uuid)required

O usuário que foi criado.

Example:"01JC4Z0000USUARIO0000000001"
emailstringrequired

O e-mail NORMALIZADO — o que foi de fato gravado, que pode diferir do digitado. É o que o instalador grava no marcador dele.

Example:"voce@exemplo.dev"
workspaceIdstring, (uuid)required

O workspace pessoal nascido na MESMA transação (RN-410), com a conta como owner. Sem ele a instalação fecharia com um login que funciona e um painel onde "Novo projeto" não tem onde criar.

Example:"01JC4Z0000WORKSPACE00000001"
Response
{ "userId": "01JC4Z0000USUARIO0000000001", "email": "voce@exemplo.dev", "workspaceId": "01JC4Z0000WORKSPACE00000001" }