Valores de opção
Lista, cria, altera e exclui os valores de uma opção (P, M, G), com acréscimo de preço e peso e sufixo de SKU.
Os valores são as escolhas dentro de uma opção: na opção "Tamanho", os valores P, M e GG. O valor se chama variant no caminho e value no corpo. Cada valor pode:
- somar ao preço do produto (um valor fixo em centavos ou um percentual);
- somar ao peso, que entra no cálculo do frete;
- acrescentar um sufixo ao SKU (
-GG), útil para o ERP identificar a combinação.
Não confunda com "variação" (produto filho): aqui o valor não tem estoque, imagem nem produto próprios.
Listar valores
/api/v1/admin/products/{id}/options/{optionId}/variantsAdminLista os valores de uma opção
Devolve os valores ordenados por position e depois por texto. Os valores também vêm dentro de cada opção em Listar opções, no objeto variants.
Path parameters
iduuidobrigatóriooptionIduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/options/$OPTION_ID/variants" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"variants": [
{
"id": "8770ee09-1b35-418e-bac1-60b4435ca24c",
"option_id": "d89e2489-1661-423e-9cda-dc2c2903fcf4",
"value": "GG",
"price_modifier": 500,
"price_modifier_type": "absolute",
"weight_modifier": 50,
"weight_modifier_type": "absolute",
"sku_suffix": "-GG",
"position": 3
}
]
}Response fields
variants[].iduuidvariants[].option_iduuidvariants[].valuestringvariants[].price_modifierintegervariants[].price_modifier_typestringabsolutepercentageprice_modifier.variants[].weight_modifierintegervariants[].weight_modifier_typestringabsolutepercentageweight_modifier.variants[].sku_suffixstringvariants[].positionintegerErros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 404 | A opção não existe | {"error":"option not found"} |
| 401 / 403 | Sem login / sem privilégio de ver o catálogo | veja Opções |
Criar valor
/api/v1/admin/products/{id}/options/{optionId}/variantsAdminCria um valor de opção
Acrescenta um valor à opção. Responde 201 com o valor criado.
Path parameters
iduuidobrigatóriooptionIduuidobrigatórioCorpo da requisição
valuestringobrigatórioprice_modifierintegerpadrão: 0price_modifier_typestringpadrão: absoluteabsolutepercentageweight_modifierintegerpadrão: 0weight_modifier_typestringpadrão: absoluteabsolutepercentagesku_suffixstringpositionintegerpadrão: 0Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/options/$OPTION_ID/variants" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"value":"GG","price_modifier":500,"weight_modifier":50,"sku_suffix":"-GG","position":3}'Resposta
{
"id": "8770ee09-1b35-418e-bac1-60b4435ca24c",
"option_id": "d89e2489-1661-423e-9cda-dc2c2903fcf4",
"value": "GG",
"price_modifier": 500,
"price_modifier_type": "absolute",
"weight_modifier": 50,
"weight_modifier_type": "absolute",
"sku_suffix": "-GG",
"position": 3
}Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | Corpo não é JSON | {"error":"invalid request body","detail":"..."} |
| 400 | value vazio | {"error":"variant value is required"} |
| 500 | optionId que não é UUID ou opção inexistente | {"error":"failed to create variant","detail":"..."} |
| 401 / 403 | Sem login / sem privilégio de gerenciar o catálogo | veja Opções |
Atualizar valor
/api/v1/admin/products/{id}/options/{optionId}/variants/{variantId}AdminAtualiza um valor de opção
Atualização parcial. Envie só os campos que mudam; pelo menos um é obrigatório.
Path parameters
iduuidobrigatóriooptionIduuidobrigatóriovariantIduuidobrigatórioCorpo da requisição
valuestringprice_modifierintegerprice_modifier_typestringabsolutepercentageweight_modifierintegerweight_modifier_typestringabsolutepercentagesku_suffixstringpositionintegerExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/options/$OPTION_ID/variants/$VARIANT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"price_modifier":700}'Resposta
{
"id": "8770ee09-1b35-418e-bac1-60b4435ca24c",
"option_id": "d89e2489-1661-423e-9cda-dc2c2903fcf4",
"value": "GG",
"price_modifier": 700,
"price_modifier_type": "absolute",
"weight_modifier": 50,
"weight_modifier_type": "absolute",
"sku_suffix": "-GG",
"position": 3
}Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | Corpo {} | {"error":"no fields to update"} |
| 400 | Valor não existe | {"error":"option value not found"} |
| 401 / 403 | Sem login / sem privilégio | veja acima |
Excluir valor
/api/v1/admin/products/{id}/options/{optionId}/variants/{variantId}AdminExclui um valor de opção
Remove um valor. As outras escolhas da opção continuam como estão.
Path parameters
iduuidobrigatóriooptionIduuidobrigatóriovariantIduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/options/$OPTION_ID/variants/$VARIANT_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
{ "message": "variant deleted" }Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 404 | O valor não existe (inclusive se já foi excluído) | {"error":"variant not found"} |
| 401 / 403 | Sem login / sem privilégio | veja acima |