MUTATION insertProduct
Cria um novo produto na loja. Requer permissão products:write.
Assinatura
mutation {
insertProduct(input: OfficeApiInsertProductInput!): OfficeApiProductResult
Parâmetros de Input
| Campo | Tipo | Obrigatório | Descrição |
title | String! | Sim | Nome do produto. |
description | String | Não | Descrição do produto (aceita HTML). |
price | Float | Não | Preço de venda em reais (ex: 49.90). |
category | String | Não | Categoria do produto. Default: "product". |
base64Images | [String] | Não | Imagens codificadas em base64. Formato: data:image/jpeg;base64,.... Veja Upload de Imagens. |
filenames | [String] | Não | Nome dos arquivos de imagem (correspondente ao base64Images). |
section | [String] | Não | Seção/departamento do produto (ex: ["Roupas", "Masculino"]). |
availableQuantity | Int! | Sim | Quantidade disponível em estoque. |
isActive | Boolean | Não | Se o produto está ativo na loja. Default: true. |
brand | String | Não | Marca do produto. |
shippingInfo | ShippingInfoInput | Não | Dados de envio: peso, dimensões, formato. |
menu | [String!] | Não | IDs dos menus onde o produto aparece. |
groups | [String] | Não | Grupos/tags do produto. |
seo | SeoInput | Não | Meta tags para SEO. |
| Campo | Tipo | Descrição |
weight | Float! | Peso em kg (ex: 0.5). |
format | String | "box" ou "packageByMerchant". |
length | Int! | Comprimento em cm. |
height | Int! | Altura em cm. |
width | Int! | Largura em cm. |
fragile | Boolean! | Se o produto é frágil. |
individualPacking | Boolean! | Se requer embalagem individual. |
| Campo | Tipo | Descrição |
metaTitle | String | Título para metatag (SEO). |
metaDescription | String | Descrição para metatag (SEO). |
keywords | String | Palavras-chave (SEO). |
Retorno
| Campo | Tipo | Descrição |
success | Boolean | Se a operação foi bem sucedida. |
productId | ID | ID global do produto criado. |
product | Product | Produto criado completo. |
Exemplo Básico
mutation {
insertProduct(input: {
title: "Camiseta Azul"
description: "100% algodão"
price: 49.90
availableQuantity: 100
isActive: true
menu: []
}) {
success
productId
product {
id
title
price
}
}
}
Exemplo Completo com Imagens
mutation($input: OfficeApiInsertProductInput!) {
insertProduct(input: $input) {
success
productId
product {
id
title
price
images {
url
}
availableQuantity
}
}
}
Variables
{
"input": {
"title": "Tênis Running",
"description": "Tênis esportivo",
"price": 299.90,
"availableQuantity": 30,
"isActive": true,
"base64Images": [
"data:image/jpeg;base64,..."
],
"filenames": ["tenis-frente.jpg"],
"section": ["Calçados"],
"brand": "Nike",
"menu": [],
"shippingInfo": {
"weight": 0.8,
"format": "box",
"length": 35,
"height": 15,
"width": 25,
"fragile": false,
"individualPacking": true
},
"seo": {
"metaTitle": "Tênis Running",
"metaDescription": "Tênis esportivo"
}
}
}