Axuz Developers

POST /v1/teams/{teamId}/billing/portal-session

Cria sessão do Stripe Billing Portal (Fase 125c)

  • Acesso: Admin da equipe
  • Serviço: https://api-billing.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`.

— Fase 125c. POST body opcional:

{ "return_url": "https://workspace.axuz.net/{teamId}/settings/billing" }

Default: FRONTEND_URL/{teamId}/settings/billing (back-compat com quem chamar sem body). 503 quando Stripe não está configurado; 404 quando o team ainda não tem stripe_customer_id (Checkout não rodou nem add-card foi feito).

Parâmetros

NomeEmTipoObrigatórioDescrição
teamIdpathstringsim

Corpo da requisição

application/json

NomeTipoObrigatórioDescrição
return_urlstring<uri>não

Fallback FRONTEND_URL/{teamId}/settings/billing

{
  "return_url": "https://example.test/"
}

Respostas

200

url

NomeTipoObrigatórioDescrição
urlstring<uri>não

400

input inválido

NomeTipoObrigatórioDescrição
errorstringsim

401

Sem credencial valida

NomeTipoObrigatórioDescrição
errorstringsim

403

Sem permissao (nao e owner/admin; token sem escopo; token de integracao em rota nao permitida)

NomeTipoObrigatórioDescrição
errorstringsim

404

team sem stripe customer

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

502

falha do Stripe

NomeTipoObrigatórioDescrição
errorstringsim

503

Stripe não configurado

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-billing.axuz.net/v1/teams/TEAM_ID/billing/portal-session' \
  -H "Authorization: Bearer $AXUZ_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"return_url":"https://example.test/"}'

Node.js

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