Criar e sincronizar variações

Crie tipos, opções e combinações de variação (ex.: Cor × Tamanho) diretamente pela API — sem o lojista precisar montar nada no painel.

O modelo de variações

Na Sellit, um produto tem tipos de variação (ex.: COR, TAMANHO), cada tipo tem opções (ex.: AZUL, P) e o cruzamento delas forma as combinações — cada combinação (ex.: AZUL - P) tem SKU, preço e estoque próprios.

O PUT /api/v1/products/{id}/variants cria tudo isso de uma vez: tipos e opções que ainda não existem são criados automaticamente a partir do que você envia. É um upsert em lote — nada é apagado por omissão.

  1. 1. Crie as variações com o PUT

    Com escopo products:write, envie os attributes (os tipos, na ordem) e a lista de variants. O attributes no nível do produto vale para todos os itens:

    PUT /api/v1/products/{id}/variants
    curl -X PUT https://app.sellitbr.com/api/v1/products/PROD_ID/variants \
      -H "Authorization: Bearer SEU_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "attributes": "COR - TAMANHO",
        "variants": [
          { "combination": "AZUL - P", "sku": "CAM-AZ-P", "price": 99.90, "quantity": 10 },
          { "combination": "AZUL - M", "sku": "CAM-AZ-M", "price": 99.90, "quantity": 5 },
          { "combination": "VERMELHO - P", "sku": "CAM-VM-P", "price": 109.90, "quantity": 8 }
        ]
      }'

    A resposta traz quantas combinações foram criadas, quantas atualizadas e os erros por item (se houver):

    200 OK
    { "created": 3, "updated": 0, "errors": [] }
  2. 2. (Alternativa) attributes por variação

    Se preferir, omita o attributes do produto e repita-o em cada item — o resultado é idêntico. Útil quando itens diferentes têm conjuntos de tipos diferentes.

    PUT /api/v1/products/{id}/variants
    {
      "variants": [
        { "attributes": "COR - TAMANHO", "combination": "AZUL - P", "sku": "CAM-AZ-P", "price": 99.90 },
        { "attributes": "COR - TAMANHO", "combination": "AZUL - M", "sku": "CAM-AZ-M", "price": 99.90 }
      ]
    }
  3. 3. Sincronize estoque depois pelo SKU

    Uma vez criadas (com SKU), sincronize o saldo de cada variação diretamente pelo SKU — caso típico de ERP/dropshipping:

    PATCH /api/v1/products/{id}/variants/{sku}/stock
    curl -X PATCH https://app.sellitbr.com/api/v1/products/PROD_ID/variants/CAM-AZ-P/stock \
      -H "Authorization: Bearer SEU_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{ "quantity": 20 }'

Regras de upsert

  • Casamento: cada item é casado com uma combinação existente por sku ou, na falta dele, pela combination (comparação sem diferenciar maiúsculas/minúsculas). Se casar, é atualizado; se não, é criado.
  • Criação: attributes só é obrigatório para criar uma combinação nova. A quantidade de partes de attributes tem que bater com a de combination (2 tipos → 2 valores, separados por - ).
  • Atualização: ao atualizar uma combinação já existente você não precisa repetir attributes — basta enviar os campos a mudar (price, quantity, sku).
  • Não destrutivo: combinações que você não enviar no payload permanecem intactas — o PUT nunca apaga variações por omissão.
  • Campos por item: combination (obrigatório para criar), sku, attributes, price (em reais) e quantity (inteiro ≥ 0).
Para apenas atualizar combinações já existentes (sem criar nada), você também pode usar o PATCH /api/v1/products/{id}/variants, casando por id (vindo do GET .../variants) ou sku. Use o PUT quando precisar criar a estrutura.