Assinaturas
Cria, lista e cancela assinaturas de produtos.
Assinatura é o produto que o cliente recebe e paga a cada ciclo até cancelar (um plano de café, um refil). Exige o token do cliente e o módulo recurring-payments. Para uma recompra com desconto, sem cobrança automática, veja Compras programadas.
Listar minhas assinaturas
Devolve todas as assinaturas do cliente, inclusive canceladas, da mais nova para a mais antiga. Sem paginação.
/api/v1/storefront/recurring/subscriptionsClienteAssinaturas do cliente logado
Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/recurring/subscriptions" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"subscriptions": [
{
"id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"user_id": "e0d4f8a1-5b2c-4d7e-9a31-6c8f0b2d4e6a",
"vendor_id": "7c1e5d3a-2b4f-4a6e-9c8d-1f0a3b5c7d9e",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"status": "active",
"cycle_days": 30,
"price_cents": 2241,
"next_billing_date": "2026-11-10T00:00:00Z"
}
]
}Campos da resposta
subscriptionsarrayLista vazia se não há assinaturas.
iduuiduser_iduuidvendor_iduuidproduct_iduuidstatusstringactivepausedcancelledcycle_daysintegerprice_centsintegernext_billing_datestringcard_last_fourstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token de cliente no cabeçalho Authorization. | {"error":"missing authorization header"} |
| 403 | O módulo recurring-payments está desligado nesta loja. | {"error":"module_disabled","module":"recurring-payments"} |
Assinar um produto
Uma assinatura cobra o cliente automaticamente a cada cycle_days. Ao criar, a plataforma confere se o produto aceita recorrência, calcula o preço do ciclo com o desconto da frequência, agenda a primeira cobrança para cycle_days dias depois e registra o aceite dos termos vigentes. Nada é cobrado nesta chamada.
/api/v1/storefront/recurring/subscriptionsClienteCria uma assinatura com cobrança a cada ciclo
Corpo da requisição
product_iduuidobrigatóriocycle_daysintegerpadrão: 3030.price_centsinteger0, usa o preço atual do produto. Prefira omitir.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/storefront/recurring/subscriptions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"cycle_days": 30
}'Resposta
{
"id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"user_id": "e0d4f8a1-5b2c-4d7e-9a31-6c8f0b2d4e6a",
"vendor_id": "7c1e5d3a-2b4f-4a6e-9c8d-1f0a3b5c7d9e",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"status": "active",
"cycle_days": 30,
"price_cents": 2241,
"next_billing_date": "2026-11-10T00:00:00Z"
}Campos da resposta
iduuiduser_iduuidvendor_iduuidproduct_iduuidstatusstringactivepausedcancelledcycle_daysintegerprice_centsintegernext_billing_datestringcard_last_fourstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON válido. | {"error":"invalid json","detail":"..."} |
| 401 | Sem token de cliente no cabeçalho Authorization. | {"error":"missing authorization header"} |
| 403 | O módulo recurring-payments está desligado nesta loja. | {"error":"module_disabled","module":"recurring-payments"} |
| 400 | Produto sem recorrência habilitada, desabilitada para o produto, ou dados faltando. A causa vem em detail. | {"error":"failed to create subscription","detail":"recurringpayments: disabled for product"} |
Cancelar uma assinatura
Marca a assinatura como cancelled, com um motivo opcional, e para as cobranças futuras. Só atinge assinaturas do próprio cliente.
/api/v1/storefront/recurring/subscriptions/{id}/cancelClienteEncerra a assinatura do cliente
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
reasonstringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/storefront/recurring/subscriptions/6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "Estoque cheio, volto a pedir em dezembro"
}'Resposta
{
"ok": true
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token de cliente no cabeçalho Authorization. | {"error":"missing authorization header"} |
| 403 | O módulo recurring-payments está desligado nesta loja. | {"error":"module_disabled","module":"recurring-payments"} |
| 500 | id que não é um UUID válido, ou falha de gravação. | {"error":"failed to cancel","detail":"..."} |