POST /merchant/v3/{merchantId}/merchantUpsert cria os objetos cujo id ainda não existe na loja e altera os que já existem. Objetos que você não enviar ficam como estão. É a rota para cadastrar produtos, opções e categorias e para manter o catálogo em dia, um tipo por chamada.
Corpo da requisição
string
AVAILABLE abre a loja, UNAVAILABLE fecha. Obrigatório quando não houver entityType.string
Tipo dos objetos em
upsertObjects: SERVICE, PAYMENT_METHOD, OPTION, OPTION_GROUP, CATEGORY ou ITEM. Um tipo por chamada.object[]
Objetos a criar ou alterar, no formato do
entityType (veja abaixo). Obrigatório e não pode ser vazio quando houver entityType.Ordem do cadastro
Um objeto só pode apontar para outro que já existe. Na primeira carga, envie um tipo por chamada nesta ordem:OPTION
As opções individuais, como sabores e bordas.
OPTION_GROUP
Os grupos, com
optionIds apontando para as opções do passo anterior.CATEGORY
As seções do cardápio.
ITEM
Os produtos, com
categoryId e, se tiverem, os modificadores apontando para os grupos.SERVICE e PAYMENT_METHOD não dependem de nada e podem ir a qualquer momento.
Requisição
Cadastrar uma categoria:204 No Content, sem corpo. Veja os erros possíveis.
Objetos por entityType
Em um objeto que já existe, só os campos enviados são alterados. Opções, grupos, categorias e produtos removidos por um force voltam ao catálogo se forem enviados de novo com o mesmoid.
SERVICE
string
obrigatório
DELIVERY (entrega) ou TAKEOUT (retirada).integer
obrigatório
Tempo do serviço, em minutos.
string
AVAILABLE ativa o serviço, UNAVAILABLE desativa. Sem o campo, a disponibilidade atual é mantida.Exemplo
Exemplo
PAYMENT_METHOD
uuid
obrigatório
ID da forma de pagamento.
string
obrigatório
Nome exibido ao cliente.
string
obrigatório
CASH, CREDIT, DEBIT, PIX, MEAL_VOUCHER, FOOD_VOUCHER ou OTHER.integer
Posição na lista, a partir de
1.string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.Exemplo
Exemplo
OPTION
uuid
obrigatório
ID da opção.
string
obrigatório
Nome da opção.
string
Descrição da opção.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.object
Imagem da opção. Veja as regras de imagem.
Exemplo
Exemplo
OPTION_GROUP
uuid
obrigatório
ID do grupo de opções.
string
obrigatório
Nome do grupo.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.uuid[]
Lista completa das opções do grupo. Substitui a lista atual. Todas as opções precisam existir na loja.
Um grupo pode ser usado por vários produtos. Mudar
optionIds muda as opções do grupo em todos os modificadores que o usam. Um array vazio ("optionIds": []) remove todas as opções do grupo. Sem o campo, as opções atuais são mantidas.Exemplo
Exemplo
CATEGORY
uuid
obrigatório
ID da categoria.
string
obrigatório
Nome da categoria.
integer
Posição no cardápio, a partir de
1.string
Descrição da categoria.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.Exemplo
Exemplo
ITEM
uuid
obrigatório
ID do produto.
string
obrigatório
Nome do produto.
uuid
obrigatório
Categoria do produto. Precisa existir na loja.
Onde o produto é vendido:
DELIVERY, TAKEOUT e INDOOR. Um tipo que não vier na lista deixa de valer. DELIVERY_TAKEOUT ainda é aceito por retrocompatibilidade e vira DELIVERY + TAKEOUT. Prefira os tipos individuais.object
obrigatório
integer
Posição dentro da categoria, a partir de
1.string
Descrição do produto.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.string
Código de barras EAN.
object
url (https://) e checksum da imagem, como em OPTION. Veja as regras de imagem.object[]
Lista completa de modificadores do produto. Substitui a atual.
Como os modificadores são gravados
Como os modificadores são gravados
"modifiers": []remove todos os modificadores do produto. Um modificador que existia e não veio na lista é apagado. Sem o campomodifiers, os modificadores atuais são mantidos."optionGroups": []remove todos os grupos do modificador. Sem o campo, os grupos atuais são mantidos.- Todas as opções do grupo entram no modificador automaticamente. A lista
optionssó ajusta preço, posição e status de cada uma. Uma opção que não faz parte do grupo é ignorada.
Exemplo: trocar os modificadores de um produto
Exemplo: trocar os modificadores de um produto
"modifiers": [].Exemplo completo de ITEM
Exemplo completo de ITEM
Próximos passos
Update
Mudanças pontuais em objetos que já existem.
Force
Reescreva o catálogo inteiro em uma chamada.