Assinatura
/api/v1/subscriptionConsulta plano, status, quotas e uso
Responde 404 se a organização nunca teve entitlements provisionados (não deveria acontecer em uso normal). portal_available diz se já existe cliente de cobrança criado — quando true, POST /api/v1/subscription/portal abre o autoatendimento.
- Autenticação
- Sessão do painel, Chave de API
- Escopo
- billing:read
- Limite
- 120 requisições por minuto por organização e credencial
curl https://crprohub.com/api/v1/subscription \ -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
{
"data": {
"subscription": {
"subscription_id": "f5a6b7c8-9d0e-4f1a-2b3c-4d5e6f7a8b9c",
"plan": "pro",
"status": "active",
"extra_channels": 2,
"amount_cents": 20600,
"next_due_date": "2026-09-01",
"portal_available": true,
"usage": {
"channels": { "used": 3, "limit": 7 },
"webhooks": { "used": 1, "limit": 5 }
}
}
}
}/api/v1/subscription/checkoutAbre o checkout da Stripe; a quota só libera após o pagamento
O header Idempotency-Key é obrigatório, para evitar cobrança duplicada em caso de retentativa. Só o proprietário da organização (role owner) autenticado por sessão consegue chamar esta rota — mesmo uma chave de API com escopo billing:read responde 403 OWNER_REQUIRED. Devolve a URL de uma sessão do Stripe Checkout: redirecione o cliente para lá. O pagamento é por cartão de crédito, e a quota do plano só é liberada quando o pagamento é confirmado, via webhook de cobrança — não nesta resposta.
- Autenticação
- Sessão do painel
- Escopo
- billing:read
- Limite
- 120 requisições por minuto por organização e credencial
Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| plan | enum | Sim | starter ou pro. |
curl -X POST https://crprohub.com/api/v1/subscription/checkout \
-H "Cookie: <cookie de sessao do painel, dono da organizacao>" \
-H "Idempotency-Key: 7c1e9a2d-4b3f-4e5a-8d6c-9f0a1b2c3d4e" \
-H "Content-Type: application/json" \
-d '{"plan":"pro"}'{
"data": {
"checkout_url": "https://checkout.stripe.com/c/pay/EXEMPLO123"
}
}/api/v1/subscription/portalAbre o portal de cobrança para autoatendimento
Devolve uma URL de uso único do Customer Portal da Stripe, onde o cliente troca o cartão, consulta as faturas e cancela a assinatura. Só o proprietário da organização (role owner) autenticado por sessão consegue chamar esta rota — mesmo uma chave de API com escopo billing:read responde 403 OWNER_REQUIRED. Responde 404 CUSTOMER_NOT_FOUND se a organização nunca iniciou uma cobrança. A URL expira sozinha; gere uma nova a cada acesso.
- Autenticação
- Sessão do painel
- Escopo
- billing:read
- Limite
- 120 requisições por minuto por organização e credencial
curl -X POST https://crprohub.com/api/v1/subscription/portal \ -H "Cookie: <cookie de sessao do painel, dono da organizacao>"
{
"data": {
"portal_url": "https://billing.stripe.com/p/session/EXEMPLO123"
}
}/api/v1/subscription/addonsDefine quantas conexões adicionais a assinatura tem
O header Idempotency-Key é obrigatório, para evitar cobrança duplicada em caso de retentativa. Só o proprietário da organização (role owner) autenticado por sessão consegue chamar esta rota — mesmo uma chave de API com escopo billing:read responde 403 OWNER_REQUIRED. Exige uma assinatura paga ativa; sem isso responde 402 ACTIVE_SUBSCRIPTION_REQUIRED. extra_channels é o total desejado, não o incremento — enviar o mesmo número duas vezes não cobra duas vezes. A Stripe cobra a proporção dos dias restantes do ciclo automaticamente, e a quota só muda quando a alteração é confirmada pelo webhook de cobrança.
- Autenticação
- Sessão do painel
- Escopo
- billing:read
- Limite
- 120 requisições por minuto por organização e credencial
Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| extra_channels | número inteiro | Sim | Total de conexões adicionais que a assinatura deve passar a ter, de 0 a 100. |
curl -X POST https://crprohub.com/api/v1/subscription/addons \
-H "Cookie: <cookie de sessao do painel, dono da organizacao>" \
-H "Idempotency-Key: 9d2f0b3e-5c4a-4f6b-9e7d-0a1b2c3d4e5f" \
-H "Content-Type: application/json" \
-d '{"extra_channels":2}'{
"data": {
"extra_channels_requested": 2,
"monthly_amount_after_cents": 20600,
"warning": "A quota e atualizada assim que a Stripe confirmar a alteracao."
}
}/api/v1/subscription/addons/previewSimula o valor proporcional de alterar as conexões adicionais
Não cobra nem altera nada — pergunta à Stripe quanto sairia a alteração agora. Só o proprietário da organização (role owner) autenticado por sessão consegue chamar esta rota — mesmo uma chave de API com escopo billing:read responde 403 OWNER_REQUIRED. Exige uma assinatura paga ativa; sem isso responde 402 ACTIVE_SUBSCRIPTION_REQUIRED. proration_amount_cents é o valor que a próxima fatura cobrará pela mudança no meio do ciclo.
- Autenticação
- Sessão do painel
- Escopo
- billing:read
- Limite
- 120 requisições por minuto por organização e credencial
Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| extra_channels | número inteiro | Sim | Total de conexões adicionais a simular, de 0 a 100. |
curl -X POST https://crprohub.com/api/v1/subscription/addons/preview \
-H "Cookie: <cookie de sessao do painel, dono da organizacao>" \
-H "Content-Type: application/json" \
-d '{"extra_channels":2}'{
"data": {
"preview": {
"current_extra_channels": 0,
"extra_channels_after": 2,
"proration_amount_cents": 3267,
"monthly_amount_after_cents": 20600,
"limits_after": { "channels": 7, "webhooks": 21 }
}
}
}