Regras de desconto da compra programada
Define o modo e os descontos por frequência da compra programada no seller, na categoria e no produto.
O desconto que o cliente ganha ao programar uma compra não é um número único: ele vem de uma cascata de regras. Para cada produto a plataforma procura, nesta ordem, e para na primeira que decidir:
- Produto: se o produto está
custom(tem descontos próprios) oudisabled(proibido), vale ele. - Categoria: o mesmo, olhando a categoria do produto.
- Seller: se o seller tem uma regra gravada e ela não está
disabled, vale a regra dele; caso contrário a compra programada fica indisponível. Um seller que nunca gravou uma regra não entra na cascata: semcustomno produto ou na categoria, o produto dele não oferece compra programada.
Quando o produto ou a categoria estão inherit (a regra "herdar"), a decisão sobe para o nível de baixo. Os descontos são porcentagens inteiras de 0 a 99, por frequência:
| Chave | Ciclo | Desconto padrão do seller |
|---|---|---|
semanal | 7 dias | 5 |
quinzenal | 14 dias | 7 |
mensal | 30 dias | 10 |
bimestral | 60 dias | 12 |
trimestral | 90 dias | 15 |
quadrimestral | 120 dias | 17 |
semestral | 180 dias | 20 |
anual | 365 dias | 25 |
Exigem o módulo recurring-payments; ler exige manage_content ou view_content e gravar exige manage_content. Os erros desta página seguem o formato {"error": "<código>", "message": "<texto em português>"}; os textos de message vêm do servidor em português.
Ler a regra de um seller
Devolve o modo e os descontos do seller. Seller sem regra gravada recebe os padrões acima, com modo allows, mas isso é só a leitura: enquanto nenhuma regra for gravada com o PUT, o seller não entra na cascata.
/api/v1/admin/recurring/sellers/{vendorId}AdminLê a regra de compra programada de um seller
Parâmetros de caminho
vendorIduuidobrigatórioExemplo de requisição
Resposta
Campos da resposta
vendor_iduuidmodestringallowsmandatorydisableddiscountsobjectErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Id que não é UUID ou falha de consulta | {"error":"recurring_failed","message":"Não foi possível concluir a operação. Tente novamente."} |
Um UUID válido que não corresponde a nenhum seller devolve os padrões, sem erro.
Gravar a regra de um seller
/api/v1/admin/recurring/sellers/{vendorId}AdminGrava a regra de compra programada de um seller
Parâmetros de caminho
vendorIduuidobrigatórioCorpo da requisição
modestringpadrão: allowsallowsmandatorydisabledallows: o cliente pode programar. mandatory: o modo é repassado à vitrine como obrigatório. disabled: sem compra programada, a não ser que o produto ou a categoria ligue de novo com custom. Vazio vira allows.discountsobjectExemplo de requisição
Resposta
A resposta é a regra relida depois de gravar. Os descontos enviados substituem o mapa inteiro: as frequências que você não enviou deixam de ter desconto.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"invalid_json","message":"Corpo da requisição inválido."} |
| 422 | mode fora da lista | {"error":"mode_invalid","message":"Modo inválido: use permite, obrigatório ou desativado."} |
| 422 | Chave de frequência desconhecida ou desconto fora de 0 a 99 | {"error":"discount_invalid","message":"Desconto inválido para a compra programada (0 a 99%)."} |
Gravar a regra de uma categoria
A categoria usa um conjunto de modos diferente do seller: decide se sobrepõe a regra de baixo.
/api/v1/admin/recurring/categories/{id}AdminGrava a regra de compra programada de uma categoria
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
modestringpadrão: inheritinheritcustomdisabledinherit: não decide, vale a regra do seller. custom: usa os descontos desta categoria. disabled: proíbe a compra programada nesta categoria. Os valores allows e mandatory são aceitos e tratados como inherit. Um custom sem nenhum desconto vira disabled.discountsobjectcustom; nos outros modos é descartado. Valores fracionados são arredondados para o inteiro mais próximo.Exemplo de requisição
Resposta
A resposta não devolve a regra gravada, só a confirmação. Não há rota de leitura da regra de categoria neste grupo.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"invalid_json","message":"Corpo da requisição inválido."} |
| 422 | mode fora da lista | {"error":"mode_invalid","message":"Modo inválido: use herdar, personalizado ou desativado."} |
| 422 | Chave de frequência desconhecida | {"error":"discount_invalid","message":"Frequência desconhecida na compra programada."} |
| 422 | Desconto fora de 0 a 99 | {"error":"discount_invalid","message":"O desconto deve estar entre 0 e 99%."} |
| 500 | Id que não é UUID ou falha ao gravar | {"error":"recurring_failed","message":"Não foi possível concluir a operação. Tente novamente."} |
Gravar a regra de um produto
A regra do produto é a de maior precedência. Usa os mesmos modos e descontos da categoria.
/api/v1/admin/recurring/products/{id}AdminGrava a regra de compra programada de um produto
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
modestringpadrão: inheritinheritcustomdisabledinherit: vale a categoria e depois o seller. custom: usa os descontos do produto. disabled: proíbe a compra programada neste produto. allows e mandatory são tratados como inherit; custom sem descontos vira disabled.discountsobjectcustom.Exemplo de requisição
Resposta
Campos da resposta
okbooleantrue quando gravou.iduuidmodestringinheritcustomdisabledcustom sem descontos volta como disabled.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"invalid_json","message":"Corpo da requisição inválido."} |
| 404 | Produto inexistente ou id que não é UUID | {"error":"product_not_found","message":"Produto não encontrado."} |
| 422 | mode fora da lista, frequência desconhecida ou desconto fora de 0 a 99 | {"error":"mode_invalid","message":"Modo inválido: use herdar, personalizado ou desativado."} |
| 422 | O produto já é uma assinatura e você tentou custom | {"error":"mutually_exclusive","message":"Um produto não pode ser assinatura e compra programada ao mesmo tempo."} |