Opções de compra
Cria, lista, altera e exclui as opções de compra (tamanho, cor, texto livre, arquivo) de um produto do seller.
Uma opção é um campo que o cliente preenche ao comprar o produto. Opções de seleção (select, radio, checkbox, color) têm valores com ajuste de preço e peso, gerenciados em Valores de opção. Se cada versão precisa de estoque próprio, use variações em vez de opções.
Listar
/api/v1/vendor/products/{id}/optionsSellerListar as opções do produto
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do produto.
Exemplo de requisição (listar)
bash
curl "$BASE_URL/api/v1/vendor/products/$PRODUCT_ID/options" \
-H "Authorization: Bearer $TOKEN"Resposta (listar)
200Opções
json
{
"options": [
{
"id": "a1b2c3d4-0001-4aaa-8bbb-111122223333",
"product_id": "7bc1d5e9-a9a4-457b-866f-bbb3879d258d",
"name": "Tamanho",
"type": "select",
"required": true,
"position": 0,
"settings": {},
"values": [
{
"id": "a1b2c3d4-0002-4aaa-8bbb-111122223333",
"option_id": "a1b2c3d4-0001-4aaa-8bbb-111122223333",
"value": "M",
"price_modifier": 0,
"price_modifier_type": "absolute",
"weight_modifier": 0,
"weight_modifier_type": "absolute",
"sku_suffix": "-M",
"position": 0
}
]
}
]
}Campos da resposta
optionsarrayOpções em ordem de posição, cada uma com seus values. Vem null (e não lista vazia) quando o produto não tem opções.
idstring (uuid)Id da opção.
product_idstring (uuid)Produto dono.
namestringNome mostrado ao cliente.
typestringselectradiocheckboxtextcolortextareafileTipo do campo.
requiredbooleanSe o cliente precisa escolher.
positionintegerOrdem de exibição.
settingsobjectAjustes do tipo:
max_length, max_file_size_mb, allowed_types, min_select, max_select.valuesarrayValores escolhíveis (veja Valores de opção).
Erros (listar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_catalog"]} |
| 403 | O produto existe mas é de outro seller (ou da loja). | {"error":"you do not have access to this product"} |
| 404 | Produto não existe. | {"error":"product not found"} |
Criar
/api/v1/vendor/products/{id}/optionsSellerCriar uma opção
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do produto.
Corpo da requisição
namestringobrigatórioNome mostrado ao cliente.
typestringpadrão: selectselectradiocheckboxtextcolortextareafileTipo do campo.
select e radio: uma escolha; checkbox: várias; text e textarea: texto livre; color: cor; file: envio de arquivo.requiredbooleanpadrão: falseSe o cliente é obrigado a escolher.
positionintegerpadrão: 0Ordem de exibição.
settingsobjectAjustes por tipo:
max_length (textarea, padrão 5000), max_file_size_mb (file, padrão 10), allowed_types (file, padrão jpg, jpeg, png, pdf, doc, docx, ai, eps, svg), min_select e max_select (checkbox, 0 = sem limite).Exemplo de requisição (criar)
bash
curl -X POST "$BASE_URL/api/v1/vendor/products/$PRODUCT_ID/options" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Tamanho",
"type": "select",
"required": true,
"position": 0
}'Resposta (criar)
201Opção criada
json
{
"id": "a1b2c3d4-0001-4aaa-8bbb-111122223333",
"product_id": "7bc1d5e9-a9a4-457b-866f-bbb3879d258d",
"name": "Tamanho",
"type": "select",
"required": true,
"position": 0,
"settings": {},
"values": []
}Campos da resposta
idstring (uuid)Id da opção.
product_idstring (uuid)Produto dono.
namestringNome mostrado ao cliente.
typestringselectradiocheckboxtextcolortextareafileTipo do campo.
requiredbooleanSe o cliente precisa escolher.
positionintegerOrdem de exibição.
settingsobjectAjustes do tipo:
max_length, max_file_size_mb, allowed_types, min_select, max_select.valuesarrayValores escolhíveis (veja Valores de opção).
Erros (criar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_catalog"]} |
| 400 | name vazio, ou type fora da lista. | {"error":"invalid option type: foo","detail":"allowed: select, radio, checkbox, text, color, textarea, file"} |
| 403 | O produto existe mas é de outro seller (ou da loja). | {"error":"you do not have access to this product"} |
| 404 | Produto não existe. | {"error":"product not found"} |
Alterar
/api/v1/vendor/products/{id}/options/{optionId}SellerAlterar uma opção
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do produto.
optionIdstring (uuid)obrigatórioId da opção.
Corpo da requisição
namestringNovo nome.
typestringselectradiocheckboxtextcolortextareafileNovo tipo.
requiredbooleanObrigatória ou não.
positionintegerNova ordem.
settingsobjectNovos ajustes do tipo.
Exemplo de requisição (alterar)
bash
curl -X PUT "$BASE_URL/api/v1/vendor/products/$PRODUCT_ID/options/$OPTION_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"required": false,
"position": 1
}'Resposta (alterar)
200Opção alterada
json
{
"id": "a1b2c3d4-0001-4aaa-8bbb-111122223333",
"product_id": "7bc1d5e9-a9a4-457b-866f-bbb3879d258d",
"name": "Tamanho",
"type": "select",
"required": false,
"position": 1,
"settings": {},
"values": [
{
"id": "a1b2c3d4-0002-4aaa-8bbb-111122223333",
"option_id": "a1b2c3d4-0001-4aaa-8bbb-111122223333",
"value": "M",
"price_modifier": 0,
"price_modifier_type": "absolute",
"weight_modifier": 0,
"weight_modifier_type": "absolute",
"sku_suffix": "-M",
"position": 0
}
]
}Campos da resposta
idstring (uuid)Id da opção.
product_idstring (uuid)Produto dono.
namestringNome mostrado ao cliente.
typestringselectradiocheckboxtextcolortextareafileTipo do campo.
requiredbooleanSe o cliente precisa escolher.
positionintegerOrdem de exibição.
settingsobjectAjustes do tipo:
max_length, max_file_size_mb, allowed_types, min_select, max_select.valuesarrayValores escolhíveis (veja Valores de opção).
Erros (alterar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_catalog"]} |
| 400 | Opção inexistente, tipo inválido ou corpo sem campo para alterar. | {"error":"no fields to update"} |
| 403 | O produto existe mas é de outro seller (ou da loja). | {"error":"you do not have access to this product"} |
| 404 | Produto não existe. | {"error":"product not found"} |
Excluir
/api/v1/vendor/products/{id}/options/{optionId}SellerExcluir uma opção
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do produto.
optionIdstring (uuid)obrigatórioId da opção.
Exemplo de requisição (excluir)
bash
curl -X DELETE "$BASE_URL/api/v1/vendor/products/$PRODUCT_ID/options/$OPTION_ID" \
-H "Authorization: Bearer $TOKEN"Resposta (excluir)
200Opção excluída
json
{
"message": "option deleted"
}Campos da resposta
messagestringConfirmação fixa.
Erros (excluir)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_catalog"]} |
| 403 | O produto existe mas é de outro seller (ou da loja). | {"error":"you do not have access to this product"} |
| 404 | A opção não existe. | {"error":"option not found"} |