Skip to content

Variantes de Produto ​

As variantes permitem oferecer versões diferentes de um mesmo produto — como tamanhos, cores ou acabamentos — cada uma com preço, preço de custo, estoque, SKU e imagem próprios.

Cada variante pertence a um produto (shopProductId) e recebe automaticamente um hash único e um slug gerado a partir do nome.

Endpoints administrativos

Todos os endpoints desta página são protegidos e exigem autenticação de usuário da loja (shopUser), além do header X-Shop-Id (UUID) com o identificador da loja.


Estrutura de Dados Principal ​

Uma variante de produto contém as seguintes informações principais:

CampoTipoDescrição
shopProductIdNumberID do produto ao qual a variante pertence.
nameStringNome da variante (máx. 150 caracteres).
slugStringURL amigável gerada a partir do nome.
hashUUIDIdentificador único gerado automaticamente.
priceNumberPreço de venda (maior que zero).
promotionalPriceNumberPreço promocional (opcional).
costPriceNumberPreço de custo (opcional).
stockQuantityNumberQuantidade em estoque (maior que zero).
skuStringCódigo SKU (máx. 200 caracteres).
tagsStringTags separadas por vírgula (máx. 200 caracteres).
descriptionStringDescrição (máx. 10000 caracteres).
isActiveBooleanIndica se a variante está ativa.
shopImageIdNumberID da imagem da variante.

Listar Variantes ​

Lista todas as variantes da loja, com paginação, busca e filtro por produto.

http
GET /v1/shop/user/product-variants

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100, padrão: 25).
searchstringNãoBusca por termo no nome.
orderByenumNãoOrdena por id, name, sku, price ou createdAt.
orderDirectionenumNãoDireção da ordenação: asc ou desc.
shopProductIdnumberNãoFiltra variantes de um produto específico.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/shop/user/product-variants?shopProductId=2&page=1&perPage=25" \
  -H "X-Shop-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna um objeto de paginação contendo a lista de variantes.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 25
  },
  "data": [
    {
      "id": "3",
      "workspaceId": "1",
      "shopId": "9",
      "shopProductId": "2",
      "shopImageId": "2",
      "name": "Camiseta Básica Preta - G",
      "price": "49.90",
      "costPrice": "22.50",
      "description": "Camiseta 100% algodão, modelagem unissex.",
      "sku": null,
      "promotionalPrice": null,
      "stockQuantity": 500,
      "createdAt": "2026-06-27T16:15:09.404+00:00",
      "updatedAt": "2026-06-27T16:15:09.405+00:00",
      "deletedAt": null,
      "hash": "123e4567-e89b-42d3-a456-426614174000",
      "slug": "Camiseta-Basica-Preta-G",
      "tags": "camiseta, básica",
      "isActive": true,
      "shopImage": {
        "id": "2",
        "uri": "https://cdn.exemplo.com/images/123e4567-e89b-42d3-a456-426614174000.jpg"
      }
    }
  ]
}

Criar Nova Variante ​

Cria uma nova variante vinculada a um produto existente.

http
POST /v1/shop/user/product-variants

Payload (Body) ​

AtributoTipoObrigatórioDescrição
shopProductIdnumberSimID do produto (deve existir na loja).
namestringSimNome da variante (máx. 150 caracteres).
pricenumberSimPreço de venda (maior que zero).
stockQuantitynumberSimQuantidade em estoque (maior que zero).
isActivebooleanSimVariante ativa ou não.
shopImageIdnumberNãoID da imagem da variante.
costPricenumberNãoPreço de custo.
promotionalPricenumberNãoPreço promocional.
skustringNãoCódigo SKU (máx. 200 caracteres).
descriptionstringNãoDescrição (máx. 10000 caracteres).
tagsstringNãoTags separadas por vírgula (máx. 200 caracteres).

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/shop/user/product-variants" \
  -H "X-Shop-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "shopProductId": 2,
    "shopImageId": null,
    "name": "Camiseta Básica Preta - G",
    "price": 49.9,
    "costPrice": 22.5,
    "description": "Camiseta 100% algodão, modelagem unissex.",
    "sku": null,
    "promotionalPrice": null,
    "stockQuantity": 500,
    "tags": "camiseta, básica",
    "isActive": true
  }'

Respostas ​

200 OK

Retorna o ID da variante criada.

json
{
  "id": "2"
}

422 Unprocessable Entity

Erro de validação nos campos enviados.

json
{
  "errors": [
    {
      "message": "ID do produto não encontrado",
      "rule": "database.exists",
      "field": "shopProductId"
    }
  ]
}

Obter Variante por ID ​

Recupera os detalhes de uma variante, incluindo o produto ao qual ela pertence.

http
GET /v1/shop/user/product-variants/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO ID da variante.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/shop/user/product-variants/2" \
  -H "X-Shop-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna a variante com os dados do produto em shopProduct.

json
{
  "id": "2",
  "shopProductId": "2",
  "shopImageId": null,
  "name": "Camiseta Básica Preta - M",
  "price": "49.90",
  "costPrice": "22.50",
  "description": "Camiseta 100% algodão, modelagem unissex.",
  "sku": null,
  "promotionalPrice": null,
  "stockQuantity": 500,
  "createdAt": "2026-06-27T16:11:04.283+00:00",
  "updatedAt": "2026-06-27T16:11:04.283+00:00",
  "shopImage": null,
  "shopProduct": {
    "id": "2",
    "shopImageId": null,
    "name": "Camiseta Básica Preta",
    "price": "49.90",
    "costPrice": "22.50",
    "description": "Camiseta 100% algodão, modelagem unissex.",
    "sku": null,
    "promotionalPrice": null,
    "stockQuantity": 500,
    "shopImage": null
  }
}

404 Not Found

Ocorre quando a variante não existe na loja.


Atualizar Variante ​

Atualiza os dados de uma variante existente.

http
PUT /v1/shop/user/product-variants/:id

Payload (Body) ​

Aceita os mesmos campos da criação.

Exemplo de Requisição ​

bash
curl -X PUT "https://api.us.basis.tavares.in/v1/shop/user/product-variants/3" \
  -H "X-Shop-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "shopProductId": 2,
    "shopImageId": 2,
    "name": "Camiseta Básica Preta - GG",
    "price": 54.9,
    "costPrice": 24.5,
    "description": "Camiseta 100% algodão, modelagem unissex.",
    "sku": null,
    "promotionalPrice": null,
    "stockQuantity": 500,
    "tags": "camiseta, básica",
    "isActive": true
  }'

Respostas ​

204 No Content

Atualização concluída com sucesso.


Remover Variante ​

Exclui uma variante da loja.

http
DELETE /v1/shop/user/product-variants/:id

Exemplo de Requisição ​

bash
curl -X DELETE "https://api.us.basis.tavares.in/v1/shop/user/product-variants/4" \
  -H "X-Shop-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}"

Respostas ​

204 No Content

Remoção concluída com sucesso.