VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Preço e estoque

POSTRegras de opção

Diz quais valores de opção (cor, tamanho) continuam disponíveis dada a escolha atual do comprador.

Um produto com opções (cor, tamanho, voltagem) pode ter combinações que não existem: "azul só vem em P e M". O lojista cadastra essas regras, e esta rota aplica-as à seleção atual do comprador. Chame-a a cada escolha para desabilitar na tela os valores que levariam a uma combinação indisponível.

É uma consulta (POST só para aceitar o corpo); nada é gravado.

POST/api/v1/storefront/products/{id}/apply-exceptionsPública

Aplica as regras de combinação à seleção atual

Parâmetros de caminho

iduuidobrigatório
Id do produto (UUID completo).

Corpo da requisição

selected_optionsobject
Seleção atual: mapa de id da opção para id do valor escolhido. Pode ser \{\} ou omitido (nada escolhido ainda).

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/products/5e833a7f-1a77-402c-835a-32594350d7a7/apply-exceptions" \
  -H "Content-Type: application/json" \
  -d '{"selected_options": {"c1f0a6e2-0000-4000-8000-000000000001": "d2a1b7f3-0000-4000-8000-0000000000a1"}}'

Resposta

200Estado das opções
json
{
  "product_id": "5e833a7f-1a77-402c-835a-32594350d7a7",
  "exceptions_type": "F",
  "options": [
    {
      "id": "c1f0a6e2-0000-4000-8000-000000000001",
      "product_id": "5e833a7f-1a77-402c-835a-32594350d7a7",
      "name": "Cor",
      "type": "select",
      "required": true,
      "position": 0,
      "settings": {},
      "values": [
        {"id": "d2a1b7f3-0000-4000-8000-0000000000a1", "option_id": "c1f0a6e2-0000-4000-8000-000000000001", "value": "Azul", "price_modifier": 0, "price_modifier_type": "absolute", "weight_modifier": 0, "weight_modifier_type": "absolute", "sku_suffix": "-AZ", "position": 0}
      ],
      "disabled": false,
      "value_states": {"d2a1b7f3-0000-4000-8000-0000000000a1": true}
    },
    {
      "id": "c1f0a6e2-0000-4000-8000-000000000002",
      "product_id": "5e833a7f-1a77-402c-835a-32594350d7a7",
      "name": "Tamanho",
      "type": "select",
      "required": true,
      "position": 1,
      "settings": {},
      "values": [
        {"id": "d2a1b7f3-0000-4000-8000-0000000000b1", "option_id": "c1f0a6e2-0000-4000-8000-000000000002", "value": "GG", "price_modifier": 500, "price_modifier_type": "absolute", "weight_modifier": 0, "weight_modifier_type": "absolute", "sku_suffix": "-GG", "position": 0}
      ],
      "disabled": false,
      "value_states": {"d2a1b7f3-0000-4000-8000-0000000000b1": false}
    }
  ]
}

Produto sem opções (resposta real da loja de teste):

200Sem opções
json
{"product_id":"5e833a7f-1a77-402c-835a-32594350d7a7","exceptions_type":"F","options":null}

Campos da resposta

product_iduuid
Id do produto.
exceptions_typestring
FA
Como as regras do produto funcionam: F (proibidas: as combinações cadastradas não podem ser compradas) ou A (permitidas: só as combinações cadastradas podem ser compradas).
optionsarray
Opções do produto, ou null quando ele não tem. Cada item traz os campos da opção (id, name, type, required, position, settings, values) mais o estado abaixo.
options[].disabledboolean
true quando a opção inteira está indisponível para a seleção atual.
options[].value_statesobject
Mapa de id do valor para true (pode escolher) ou false (leva a uma combinação indisponível).
options[].values[].price_modifierinteger
Ajuste de preço do valor: centavos quando price_modifier_type é absolute; pontos-base quando é percentage. Vem 0 para visitante em loja que esconde preço.

Erros

StatusQuandoCorpo de exemplo
400O corpo não é um JSON válido.{"error":"invalid request body","detail":"invalid character 'x' looking for beginning of value"}
404O produto não existe.{"error":"product not found"}
Exceções não calculam preço

Esta rota só informa disponibilidade. O ajuste de preço das opções entra no total quando o item é colocado no carrinho; antes disso, some price_modifier ao preço exibido apenas como estimativa.

Veja também

  • Preço por quantidade
  • Aviso de volta ao estoque
Anterior
Preço B2B do cliente
Próxima
Aviso de volta ao estoque
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também