Cria ou executa cancel
POST/api/subscriptions/{id}/cancel
- Auth
- Exige token
- X-CommunityId
X-CommunityIdEnvie o X-CommunityId da comunidade em que a operação acontece.
Corpo: `immediate` (boolean, opcional) e `cancelReason` (texto, opcional). O assinante cancela a própria assinatura; owner e admin da comunidade do `X-CommunityId` (e SuperAdmin) cancelam qualquer assinatura dela. **Contrato (F-35):** quando o assinante cancela uma assinatura `ACTIVE` antes de `commitmentEndsAt`, o cancelamento fica agendado para o fim do contrato, mesmo com `immediate: true`: `status` continua `ACTIVE`, `nextBillingDate` continua preenchido e as cobranças seguem até lá. Owner e admin não ficam presos ao contrato: com `immediate: true` encerram na hora, inclusive um cancelamento já agendado (é o único caso em que uma assinatura com `canceledAt` aceita novo cancelamento). **Anual (F-36):** o assinante que cancela uma assinatura `YEARLY` fica com o acesso até o fim do ano pago, mesmo com `immediate: true`, e ela não renova; não há reembolso. Owner e admin continuam podendo encerrar na hora. **`allowCancellation: false`** no produto: o assinante recebe 400 (`cancellationNotAllowed`); owner e admin podem cancelar. A resposta traz, além dos campos de antes, `commitmentEndsAt` (fim do contrato vigente, ou `null`) e `cancelEffectiveAt` (quando a assinatura de fato termina: agora, no fim do período, ou no fim do período em que o contrato acaba). Um cancelamento no fim do período é encerrado pelo job horário quando o período acaba (FIN-43): `status` vira `CANCELED` e o acesso termina.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | path | string |
Headers
| Nome | Tipo | Descrição |
|---|---|---|
X-CommunityIdopcional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Corpo da requisição application/json
| Nome | Tipo | Descrição |
|---|---|---|
cancelReasonopcional | string | min 3, max 500 |
immediateopcional | boolean | `true` encerra agora; ausente ou `false`, ao fim do período pago. |
Respostas
| Código | Descrição |
|---|---|
201 | Operação realizada com sucesso. |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado. |
404 | Recurso não encontrado. |
500 | Erro interno do servidor. |
Exemplo com curl
curl -X POST "https://api.memberfy.net/api/subscriptions/<id>/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{}'