Axuz Developers

POST /accounts

Cria uma conta e seeda as 5 folders sistêmicas

  • Acesso: Membro da equipe
  • Serviço: https://mail-api.axuz.net

Autenticação aceita

  • sessionCookie — Sessão plena Axuz (cookie de sessão da casa). Sessão restrita é 403 enrollment_required.
  • bearerSession — JWT de acesso da sessão em `Authorization: Bearer`.

Cria a row em mail_accounts e as folders inbox/sent/drafts/ archive/trash na mesma tx. Rollback total se qualquer folder falhar (invariante: toda account tem as 5 folders).

user_id vem SEMPRE do JWT — nunca do payload. Quando team_id é informado, ele é validado contra memberships (status active) antes de qualquer escrita: quem não é membro ativo do team recebe 403 e nada é gravado (H-002, fail-closed — falha na checagem vira 500, nunca permissão). team_id ausente cria conta pessoal, sem checagem de tenant.

Parâmetros

Sem parâmetros.

Corpo da requisição

application/json · Obrigatório

NomeTipoObrigatórioDescrição
emailstring<email>sim
display_namestringnão
signature_htmlstringnão
team_idstring<uuid> | nullnão
{
  "email": "pessoa@example.test",
  "display_name": "string",
  "signature_html": "string",
  "team_id": "00000000-0000-0000-0000-000000000000"
}

Respostas

201

Conta criada

NomeTipoObrigatórioDescrição
idstring<uuid>sim
user_idstring<uuid>sim
team_idoneOfnão
emailstring<email>sim
display_namestringnão
signature_htmlstringnão
created_atstring<date-time>sim

400

Email inválido ou payload malformado

401

Sessão inválida

403

team_id informado não corresponde a um team do qual o usuário é membro ativo

429

Limite de requisições excedido.

NomeTipoObrigatórioDescrição
errorstringsim

500

Falha na checagem de membership (fail-closed) ou erro de banco

Exemplos

O "Try it" está desligado nesta referência. Use os exemplos com a sua credencial de teste.

curl

curl -sS -X POST 'https://mail-api.axuz.net/accounts' \
  -H "Authorization: Bearer $AXUZ_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":"pessoa@example.test","display_name":"string","signature_html":"string","team_id":"00000000-0000-0000-0000-000000000000"}'

Node.js

const res = await fetch("https://mail-api.axuz.net/accounts", {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.AXUZ_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "email": "pessoa@example.test",
    "display_name": "string",
    "signature_html": "string",
    "team_id": "00000000-0000-0000-0000-000000000000"
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
console.log(await res.json());

Python

import os
import requests

res = requests.request(
    "POST",
    "https://mail-api.axuz.net/accounts",
    headers={
        "Authorization": f"Bearer {os.environ['AXUZ_TOKEN']}",
    },
    json={
        "email": "pessoa@example.test",
        "display_name": "string",
        "signature_html": "string",
        "team_id": "00000000-0000-0000-0000-000000000000",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())