Axuz Developers

POST /invite/{token}

— POST /invite/{token}.

  • Access: Signed in
  • Service: https://api-workspace.axuz.net

Accepted authentication

  • 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.

Parameters

NameInTypeRequiredDescription
tokenpathstringyes

Request body

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

application/json

NameTypeRequiredDescription
(corpo)objectno
{}

Responses

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

NameTypeRequiredDescription
errorstringyes

401

Sem credencial valida

NameTypeRequiredDescription
errorstringyes

429

Limite de requisições excedido.

NameTypeRequiredDescription
errorstringyes

500

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

NameTypeRequiredDescription
errorstringyes

Examples

"Try it" is turned off in this reference. Use the examples with your test credential.

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())