Editar e apagar variações
Altera e apaga variações simples e variações unificadas de um produto, e apaga exceções de combinação de opções.
Estas cinco rotas agem sobre um item pelo id dele. Antes de usar, confirme em qual dos três modelos de variação está o seu dado (veja a página da seção): variação simples tem id UUID, variação unificada tem id inteiro. Todas exigem manage_catalog.
Variação simples
/api/v1/admin/variations/{id}AdminAlterar uma variação simples
Atualização parcial: só os campos enviados mudam. Devolve a variação já atualizada.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
skustring"" para limpar.priceinteger4990 = R$ 49,90).quantityintegeroptionsobject{"cor":"vermelho","tamanho":"M"}. Substitui o mapa inteiro, não mescla.image_urlstringcurl -X PUT "$BASE_URL/api/v1/admin/variations/7e4d2b10-95a3-4c6f-8e21-0b9d5a3c7f48" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"price":4990,"quantity":25}'{
"id": "7e4d2b10-95a3-4c6f-8e21-0b9d5a3c7f48",
"product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
"sku": "CAM-VERM-M",
"price": 4990,
"quantity": 25,
"options": { "cor": "vermelho", "tamanho": "M" },
"image_url": "",
"created_at": "2026-09-01T10:00:00Z"
}Campos da resposta
iduuidproduct_iduuidskustringpriceintegerquantityintegeroptionsobjectimage_urlstringcreated_atstring/api/v1/admin/variations/{id}AdminApagar uma variação simples
Remove a variação definitivamente.
Parâmetros de caminho
iduuidobrigatóriocurl -X DELETE "$BASE_URL/api/v1/admin/variations/7e4d2b10-95a3-4c6f-8e21-0b9d5a3c7f48" \
-H "Authorization: Bearer $TOKEN"{ "message": "variation deleted" }Variação unificada
A variação unificada vive dentro de um grupo e guarda a combinação de valores ({"Cor":"Vermelho","Tamanho":"M"}) e a diferença de preço em relação ao produto pai.
/api/v1/admin/unified-variations/{id}AdminAlterar uma variação unificada
Atualização parcial. Ao marcar is_default: true, as outras variações do mesmo grupo deixam de ser a padrão. Devolve a variação atualizada.
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
combinationobjectprice_modifierintegerstockintegerskustring"" limpa o código.image_urlstring"" limpa a imagem.is_defaultbooleantrue torna esta a variação selecionada por padrão no grupo.sort_orderintegercurl -X PUT "$BASE_URL/api/v1/admin/unified-variations/42" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"price_modifier":500,"stock":12,"is_default":true}'{
"id": 42,
"group_id": 7,
"product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
"combination": { "Cor": "Vermelho", "Tamanho": "M" },
"price_modifier": 500,
"stock": 12,
"sku": "CAM-VERM-M",
"image_url": "",
"is_default": true,
"sort_order": 0,
"created_at": "2026-09-01T10:00:00Z",
"updated_at": "2026-10-11T21:40:00Z"
}Campos da resposta
idintegergroup_idintegerproduct_iduuidcombinationobjectprice_modifierintegerstockintegerskustringimage_urlstringis_defaultbooleansort_orderintegercreated_atstringupdated_atstring/api/v1/admin/unified-variations/{id}AdminApagar uma variação unificada
Remove a variação do grupo.
Parâmetros de caminho
idintegerobrigatóriocurl -X DELETE "$BASE_URL/api/v1/admin/unified-variations/42" \
-H "Authorization: Bearer $TOKEN"{ "message": "variation deleted" }Exceção de opção
/api/v1/admin/option-exceptions/{id}AdminApagar uma exceção de combinação de opções
Remove uma regra que proibia (ou permitia) uma combinação de opções do produto.
Parâmetros de caminho
iduuidobrigatóriocurl -X DELETE "$BASE_URL/api/v1/admin/option-exceptions/5b2f8c61-0d34-4e97-a1c8-3f6e9b7d2a05" \
-H "Authorization: Bearer $TOKEN"{ "message": "option exception deleted" }Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | PUT com corpo que não é JSON. | {"error":"invalid request body","detail":"..."} |
| 400 | Unificada: o {id} não é um inteiro. | {"error":"invalid variation ID","detail":"must be an integer"} |
| 401 | Sem token ou token expirado. | {"error":"invalid or expired token"} |
| 403 | Sem manage_catalog. | {"error":"insufficient privileges","required":"manage_catalog"} |
| 404 | Unificada: id que não existe no PUT, ou PUT sem nenhum campo. | {"error":"variation not found"} |
| 404 | Exceção que não existe. | {"error":"exception not found"} |
| 500 | Simples: id que não existe, PUT sem campos, ou id que não é UUID. | {"error":"failed to update variation","detail":"variation not found"} |
| 500 | Unificada: DELETE de id que não existe. | {"error":"failed to delete variation","detail":"get variation product_id: sql: no rows in result set"} |