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:** 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:** 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: `status` vira `CANCELED` e o acesso termina. **Empresa:** o admin da empresa com vínculo vivo age como o assinante na assinatura da empresa (`companyId` na resposta); funcionário da empresa que não é admin recebe 403 (`monetization.company.adminOnly`); quem não tem relação com ela, 404.