Axuz Developers

POST /invite/{token}

— POST /invite/{token}.

  • Acesso: Login
  • Serviço: https://api-workspace.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`.

— POST /invite/{token}.

Motivo: consome token (revoked/expired/max_uses check), promove user a team member (via memberJoin cross-service) e adiciona a timeline_members.

Idempotência (O-010): o resgate é idempotente POR RESGATADOR. O used_count contava REQUISIÇÕES, então num convite max_uses=1 o duplo-clique queimava o link e a segunda resposta era 409 exhausted DEPOIS de o usuário já ter entrado — a UI dizia "esgotado" pra quem tinha acabado de aceitar. Agora o segundo resgate do MESMO usuário devolve 200 com o mesmo destino e o header Idempotent-Replay: true (mesma convenção da guarda do M-028 no POST de convite), sem incrementar nada; usuários DISTINTOS continuam contando, senão max_uses viraria decoração.

Retorno: 200 {team_id,timeline_id}; 400/401/404 not_found/409 exhausted/ 410 expired|revoked/502 axuz_api membership/500. Efeito: 1 transação (SELECT + reserva + UPDATE) + 1 POST axuz_api + 1 UPSERT member. As duas últimas rodam também no replay, de propósito: são convergentes (UPSERT/EnsureMembership) e é o que faz um duplo-clique depois de uma falha parcial terminar de entrar.

Parâmetros

NomeEmTipoObrigatórioDescrição
tokenpathstringsim

Corpo da requisição

Corpo JSON. O schema detalhado deste endpoint ainda não está tipado na spec; veja a descrição da operação.

application/json

NomeTipoObrigatórioDescrição
(corpo)objectnão
{}

Respostas

200

TBD

400

/401/404 not_found/409 exhausted/ 410 expired|revoked/502 axuz_api membership/500. Efeito: 1 transação (SELECT + reserva + UPDATE) + 1 POST axuz_api + 1 UPSERT member. As duas últimas rodam também no replay, de propósito: são convergentes (UPSERT/EnsureMembership) e é o que faz um duplo-clique depois de uma falha parcial terminar de entrar

NomeTipoObrigatórioDescrição
errorstringsim

401

Sem credencial valida

NomeTipoObrigatórioDescrição
errorstringsim

429

Limite de requisições excedido.

NomeTipoObrigatórioDescrição
errorstringsim

500

Erro interno. Tente de novo com backoff; reporte o X-Request-Id.

NomeTipoObrigatórioDescrição
errorstringsim

Exemplos

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

curl

curl -sS -X POST 'https://api-workspace.axuz.net/invite/TOKEN' \
  -H "Authorization: Bearer $AXUZ_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Node.js

const res = await fetch("https://api-workspace.axuz.net/invite/TOKEN", {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.AXUZ_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});
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://api-workspace.axuz.net/invite/TOKEN",
    headers={
        "Authorization": f"Bearer {os.environ['AXUZ_TOKEN']}",
    },
    json={},
    timeout=30,
)
res.raise_for_status()
print(res.json())