Exceções de opções
Proíbe (ou permite somente) certas combinações das opções de um produto, como "gravação indisponível no tamanho GG".
Quando um produto tem várias opções, nem toda combinação faz sentido: a gravação a laser pode não caber no tamanho GG, ou a cor "dourado" só existir no tamanho P. As exceções são as regras que dizem isso.
Cada regra é uma combinação: pares "opção = valor". O produto tem um modo que define como ler todas as regras:
Modo (exceptions_type) | Significado | Efeito na vitrine |
|---|---|---|
F (proibidas), o padrão | Cada regra cadastrada é uma combinação proibida. | Os valores que completariam uma combinação proibida ficam indisponíveis. |
A (permitidas) | Cada regra é uma combinação permitida; o que não está em nenhuma regra não pode ser comprado. | Só ficam disponíveis os valores que aparecem em alguma regra compatível com o que o cliente já escolheu. |
Cada par pode usar o id do valor, ou a palavra any para valer "qualquer valor" daquela opção.
Listar regras
/api/v1/admin/products/{id}/option-exceptionsAdminLista as regras de exceção de um produto
Devolve as regras na ordem de criação. Produto sem regras devolve lista vazia.
Path parameters
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/option-exceptions" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"total": 1,
"exceptions": [
{
"id": "84931b5d-277c-448a-ad56-93d76a408b3a",
"product_id": "07635228-fcac-442e-9a0c-caa7c1c89a97",
"combination": {
"d89e2489-1661-423e-9cda-dc2c2903fcf4": "8770ee09-1b35-418e-bac1-60b4435ca24c",
"83019681-c7aa-41c6-827a-0e4385adab9f": "any"
}
}
]
}Response fields
totalintegerexceptions[].iduuidexceptions[].product_iduuidexceptions[].combinationobjectid da opção para id do valor (ou any).Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 500 | id que não é UUID | {"error":"failed to get option exceptions","detail":"..."} |
| 401 / 403 | Sem login / sem privilégio de ver o catálogo | veja Opções |
Criar regra
/api/v1/admin/products/{id}/option-exceptionsAdminCria uma regra de exceção
Cadastra uma combinação. No modo F, é uma combinação proibida; no modo A, uma permitida. Os ids de opção e de valor não são conferidos contra o produto: envie ids que existam nele.
Path parameters
iduuidobrigatórioCorpo da requisição
combinationobjectobrigatórioid da opção para id do valor, ou any para qualquer valor. Pelo menos um par. No exemplo, "tamanho GG com qualquer gravação".Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/option-exceptions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"combination":{"d89e2489-1661-423e-9cda-dc2c2903fcf4":"8770ee09-1b35-418e-bac1-60b4435ca24c","83019681-c7aa-41c6-827a-0e4385adab9f":"any"}}'Resposta
{
"id": "84931b5d-277c-448a-ad56-93d76a408b3a",
"product_id": "07635228-fcac-442e-9a0c-caa7c1c89a97",
"combination": {
"83019681-c7aa-41c6-827a-0e4385adab9f": "any",
"d89e2489-1661-423e-9cda-dc2c2903fcf4": "8770ee09-1b35-418e-bac1-60b4435ca24c"
}
}Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | Corpo não é JSON | {"error":"invalid request body","detail":"..."} |
| 400 | combination vazio ou ausente | {"error":"combination is required"} |
| 500 | id de produto inválido ou inexistente | {"error":"failed to create option exception","detail":"..."} |
| 401 / 403 | Sem login / sem privilégio de gerenciar o catálogo | veja Opções |
Escolher o modo
/api/v1/admin/products/{id}/exceptions-typeAdminDefine o modo das exceções (proibido ou permitido)
Define se as regras do produto são lidas como proibidas (F) ou permitidas (A). Trocar o modo muda o sentido de todas as regras já cadastradas, então revise-as depois.
Path parameters
iduuidobrigatórioCorpo da requisição
exceptions_typestringobrigatórioFAF (proibidas) ou A (permitidas).Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/exceptions-type" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"exceptions_type":"A"}'Resposta
{ "exceptions_type": "F", "message": "exceptions type updated" }Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | Valor diferente de F ou A | {"error":"exceptions_type must be F (forbidden) or A (allowed)"} |
| 404 | Produto não existe | {"error":"product not found"} |
| 401 / 403 | Sem login / sem privilégio | veja Opções |