MobiariDocs

Produtos

Conceitos, endpoints e modelo de mídia para gerenciar o seu catálogo.

Um produto no Mobiari é algo que você vende na sua loja. Todo produto tem uma ou mais variantes. Até um produto "simples" tem uma variante padrão oculta por baixo dos panos, então preço e estoque ficam sempre na variante, nunca no próprio produto.

Modelo mental

product                              ← title, description, brand, SEO
├── variants[]                       ← sku, price_cents, stock, fulfillment_mode
│   ├── option_values[]              ← e.g. size=M, color=blue
│   └── shipping_box                 ← physical box for freight calc
├── product_images[]                 ← gallery items (images and videos)
│   └── image_variants[]             ← srcset sizes (thumbnail/small/medium/large)
├── highlight_video                  ← one short video → bottom-left widget on PDP
├── product_specs[]                  ← long-form specs (key/value, grouped)
└── reviews[]

Alguns termos importantes:

  • product_type: "single" (uma única configuração) ou "variable" (várias variantes com opções). Define como o painel administrativo se comporta.
  • fulfillment_mode na variante: stocked, on_demand ou stocked_or_on_demand. Decide se a disponibilidade é calculada a partir do estoque ou se o item é sempre tratado como "em estoque".
  • media_type em um item da galeria: "image" (padrão) ou "video". Itens de imagem passam pelo pipeline de redimensionamento; itens de vídeo pulam essa etapa e apontam direto para a URL.

Endpoints

Todos os caminhos abaixo são relativos a https://api.mobiari.com/v1/stores/{store_id}.

MétodoCaminhoFinalidade
GET/productsLista paginada. Veja Listagem.
POST/productsCria. Retorna o novo id, o title e o slug.
GET/products/{id}Um produto com variantes e estoque.
PUT/products/{id}Atualiza. Os campos que você omitir não são alterados.
DELETE/products/{id}Exclusão definitiva. Remove também variantes e galeria.
GET/products/{id}/imagesGaleria completa com as variações (tamanhos).
POST/products/{id}/imagesEnvia uma imagem (multipart).
POST/products/{id}/images/associateVincula um arquivo que já está na biblioteca.
POST/products/{id}/videosVincula um vídeo por URL (próxima seção).
PATCH/products/{id}/images/{img_id}Reordena, define como principal, troca o texto alternativo.
DELETE/products/{id}/images/{img_id}Remove um item da galeria.

Criar um produto

curl -X POST "https://api.mobiari.com/v1/stores/$STORE_ID/products" \
  -H "Authorization: Bearer $BP_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "title": "Iced Matcha",
    "description": "Stone-ground ceremonial grade.",
    "product_type": "single",
    "default_price_cents": 1890
  }'

Quando você envia default_price_cents, produtos simples ganham uma variante "Default" oculta, criada na mesma transação. Para produtos variáveis, omita default_price_cents e crie cada variante com POST /v1/product-variants, enviando product_id, sku, title e price_cents no corpo.

Envie um Idempotency-Key nas criações para que uma requisição repetida não crie o produto duas vezes. Veja Idempotência.

Vincular um vídeo de destaque

Um produto pode ter um vídeo de destaque: um clipe curto que a loja virtual exibe como um pequeno widget flutuante no canto inferior esquerdo da página do produto. Ao clicar, ele abre em tela cheia com som.

Defina o vídeo no próprio produto, não na galeria:

curl -X PUT "https://api.mobiari.com/v1/stores/$STORE_ID/products/$PRODUCT_ID" \
  -H "Authorization: Bearer $BP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "highlight_video_url": "https://youtu.be/abc123",
    "highlight_video_poster_url": "https://files.example.com/poster.jpg"
  }'

O provedor (youtube, vimeo, upload, external) é detectado automaticamente a partir da URL. Você pode sobrescrevê-lo definindo highlight_video_provider explicitamente.

Os vídeos da galeria ficam ao lado das imagens da galeria e são úteis para apresentar o produto, mostrar "como é feito" ou demonstrar caimento e tamanhos. Diferente do vídeo de destaque, eles tocam ao clicar dentro da galeria, em vez de aparecer em um widget com reprodução automática.

curl -X POST "https://api.mobiari.com/v1/stores/$STORE_ID/products/$PRODUCT_ID/videos" \
  -H "Authorization: Bearer $BP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://files.example.com/video.mp4",
    "poster_url": "https://files.example.com/poster.jpg",
    "position": 2
  }'

Se você definir product_variant_id na requisição, o vídeo só aparece quando essa variante está selecionada na página do produto, a mesma regra das imagens vinculadas a uma variante.

Listagem

Os produtos são ordenados por priority (crescente) e, em seguida, pelos atualizados mais recentemente. Filtros:

Parâmetro de querySignificado
searchTrecho do título ou do sku_prefix, sem diferenciar maiúsculas e minúsculas.
statusSomente produtos neste status.
include_draftsRascunhos ficam ocultos, a menos que seja true (ou que você filtre por status).
limit, offsetPaginação. limit vai de 1 a 200, padrão 50.
curl "https://api.mobiari.com/v1/stores/$STORE_ID/products?search=matcha" \
  -H "Authorization: Bearer $BP_TOKEN"

Migração para o envelope Page

A listagem de produtos está sendo migrada para a resposta padrão Page (data, has_more, next_cursor) com paginação por cursor. Até Produtos aparecer na referência da API, ela responde {"products": [...], "total": ..., "page": ...}.

Resumo de permissões

AçãoPermissão
Listar, consultarproducts.read
Criarproducts.write
Atualizar, vincular mídiaproducts.edit
Excluirproducts.delete
Publicar (status → ativo)products.publish

Nesta página