Logo da Plataforma Yep
API REST · Plataforma Yep Documentação técnica para integrações homologadas

Atributos

Atributos globais, opções pontuais, attribute sets e groups do catálogo. A separação permite reutilizar atributos em múltiplos sets, organizar a leitura no admin e atualizar uma opção isolada sem reenviar todas as opções do atributo.

REST JSON Bearer Token Novo em 2026

Visão geral

Esta página cobre três blocos da API de atributos: o atributo global (catálogo inteiro), as opções pontuais dele e a estrutura organizacional de sets e groups. Endpoints de listagem aceitam paginação determinística e filtros por frontend_input. Endpoints de escrita seguem o padrão de respostas da API REST Yep.

3
BlocosAtributos globais, opções pontuais e sets/groups.
17
EndpointsCRUD completo de atributos, opções, sets, groups e vinculação.
+3
Novos em 2026Opções pontuais: adicionar, editar e remover sem reenviar tudo.
200
Limite por páginaListagens paginadas com page, limit e include_pagination.

Regras gerais

Convenções comuns aos endpoints de atributos. Base URL nos exemplos: /api2. Endpoints protegidos exigem Authorization: Bearer {{token}} e Content-Type: application/json nos verbos POST/PATCH/DELETE com body.

  • Listagens aceitam filtros por query string ou por JSON body. Quando o mesmo campo aparecer nos dois lugares, o valor da query string prevalece.
  • Paginação padrão: page=1, limit=20, limite máximo 200. Use include_pagination=true para receber total, last_page e has_next.
  • O gerenciamento pontual de opções (/api2/attribute/option) só é permitido para atributos cujo frontend_input é select ou multiselect e que não usam um source_model próprio. Atributos com source customizado (por exemplo, boolean nativo) retornam 400.
  • Erros seguem o padrão da API: {"error": "mensagem"} com o status HTTP correspondente.
StatusUso
200Consulta, atualização ou remoção concluída.
201Atributo, opção, set ou group criados.
400Parâmetro inválido, JSON inválido ou operação incompatível com o atributo.
401Token ausente ou inválido.
404Atributo, opção, set ou group não encontrados.
409Duplicidade ou tentativa de remover opção em uso por produtos.

Atributos globais — Listagem

Consulta os atributos cadastrados no catálogo. Quando o atributo possui opções, a resposta inclui options com option_id, value, label, sort_order e is_default.

GET/api2/attribute

Listar atributos com paginação e filtros.

ListagemFiltros
page, limit, include_pagination Opcional
Paginação padrão.
frontend_input Opcional
Filtra por tipo (text, select, multiselect etc.). Aceita string ou lista.
store_id Opcional
Escopo de store usado para resolver labels traduzidos das opções.

Listagem paginada

GET /api2/attribute
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "page": 1,
  "limit": 20,
  "include_pagination": true,
  "frontend_input": ["select", "multiselect"],
  "store_id": 0
}
GET/api2/attribute

Obter um atributo específico por código ou por ID.

Consulta singular
attribute_code Obrigatório*
Código do atributo. Alternativo a id.
id Obrigatório*
ID interno do atributo. Alternativo a attribute_code.
store_id Opcional
Escopo de store para labels traduzidos.

Por código

{
  "attribute_code": "tipo_material",
  "store_id": 0
}

Por ID

{
  "id": 123,
  "store_id": 0
}

Atributos globais — Criação e atualização

Atributos reutilizáveis em múltiplos sets. Suportam tipos diferentes (texto, select, multiselect etc.) e configurações como is_filterable, used_in_product_listing, is_searchable e apply_to. Campos obrigatórios na criação: attribute_code, frontend_input e frontend_label.

POST/api2/attribute

Criar atributo global do tipo texto.

CriaçãoTipo text
{
  "attribute_code": "codigo_fabricante",
  "frontend_input": "text",
  "frontend_label": "Código do Fabricante",
  "is_global": 1,
  "is_required": 0,
  "is_unique": 0,
  "default_value": null,
  "position": 0,
  "is_searchable": 1,
  "is_visible": 1,
  "is_visible_on_front": 1,
  "is_visible_in_advanced_search": 0,
  "is_comparable": 0,
  "is_filterable": 0,
  "is_filterable_in_search": 0,
  "is_used_for_promo_rules": 0,
  "used_in_product_listing": 1,
  "used_for_sort_by": 0,
  "is_html_allowed_on_front": 0,
  "is_wysiwyg_enabled": 0,
  "apply_to": ["simple", "configurable"]
}
POST/api2/attribute

Criar atributo select com lista inicial de opções. Cada opção aceita admin (label), position e default.

CriaçãoTipo selectCom opções
{
  "attribute_code": "tipo_material",
  "frontend_input": "select",
  "frontend_label": "Tipo de Material",
  "is_global": 1,
  "is_required": 1,
  "is_configurable": 1,
  "is_filterable": 1,
  "is_searchable": 1,
  "used_in_product_listing": 1,
  "options": [
    {"admin": "Resina", "position": 0, "default": 1},
    {"admin": "Cerâmica", "position": 1},
    {"admin": "Zircônia", "position": 2}
  ]
}
PATCH/api2/attribute

Atualizar configurações do atributo (flags, posição, escopo). Envie só os campos que mudaram.

Atualização parcial
{
  "attribute_code": "tipo_material",
  "is_required": 1,
  "is_filterable": 0,
  "used_for_sort_by": 1
}
PATCH/api2/attribute

Sincronizar a lista completa de opções do atributo. Opções ausentes no payload podem ser removidas. Para mexer em uma opção isolada, use o bloco Opções pontuais.

Sincronização totalCuidado
{
  "attribute_code": "tipo_material",
  "options": [
    {"admin": "Resina", "position": 0},
    {"admin": "Cerâmica Premium", "position": 1, "default": 1}
  ]
}

Sincronização vs. pontual

Este PATCH com options reescreve a lista do atributo. Para adicionar, editar ou remover uma única opção sem afetar as demais (e sem risco de remoção em cascata), prefira os endpoints /api2/attribute/option.

DELETE/api2/attribute

Excluir atributo global.

Remoção
{
  "attribute_code": "tipo_material"
}

Opções pontuais Novo em 2026

Gerencia uma opção de cada vez, sem reenviar toda a lista do atributo. Disponível apenas para atributos select/multiselect sem source_model próprio. Em qualquer outro caso, retorna 400.

POST/api2/attribute/option

Adicionar uma opção ao atributo. Retorna 409 se já existir opção com o mesmo label (case-sensitive) no atributo.

Novo em 2026Atômico
attribute_code Obrigatório
Código do atributo alvo.
admin Obrigatório
Label da nova opção (visível no admin).
position Opcional
Posição de ordenação. Padrão: final da lista.
default Opcional
Marca a opção como padrão. Aceita true/1.

Request

{
  "attribute_code": "tipo_material",
  "admin": "Zircônia",
  "position": 2,
  "default": false
}

Resposta

{
  "success": true,
  "option": {
    "option_id": 12345,
    "value": "12345",
    "label": "Zircônia",
    "sort_order": 2,
    "is_default": false
  }
}
PATCH/api2/attribute/option

Atualizar label, posição ou flag de default de uma opção. O option_id precisa pertencer ao atributo informado.

Novo em 2026Atômico
attribute_code Obrigatório
Código do atributo alvo.
option_id Obrigatório
Identificador da opção (vem em option.option_id da consulta do atributo).
admin Opcional
Novo label.
position Opcional
Nova posição.
default Opcional
Marca/desmarca como padrão.
{
  "attribute_code": "tipo_material",
  "option_id": 12345,
  "admin": "Zircônia Premium",
  "position": 3,
  "default": true
}
DELETE/api2/attribute/option

Remover uma opção. Bloqueia a remoção se a opção estiver em uso por produtos — nesse caso retorna 409 e os produtos permanecem inalterados.

Novo em 2026AtômicoConflito 409
{
  "attribute_code": "tipo_material",
  "option_id": 12345
}

Resposta

{
  "success": true,
  "message": "Opção removida com sucesso."
}

Attribute Sets

Sets agrupam atributos aplicáveis a um tipo de produto. A criação parte sempre de um skeleton existente — todos os grupos e atributos do skeleton são clonados no novo set.

POST/api2/catalog/attributeSet

Criar novo Attribute Set a partir de um skeleton.

Criação
attribute_set_name Obrigatório
Nome único do novo set.
skeleton_set_id Obrigatório
ID do attribute set existente a usar como molde.
{
  "attribute_set_name": "Equipamentos Odontológicos",
  "skeleton_set_id": 4
}
DELETE/api2/catalog/attributeSet

Remover Attribute Set. Use force_products_remove com cautela — quando true, os produtos vinculados são removidos junto.

RemoçãoCuidado
attribute_set_name Obrigatório
Nome do set a remover.
force_products_remove Opcional
Quando true, remove também os produtos do set. Padrão: false (retorna 409 se houver produtos vinculados).
{
  "attribute_set_name": "Equipamentos Odontológicos",
  "force_products_remove": true
}

Attribute Groups

Groups organizam os atributos dentro de um set para exibição no admin (abas do formulário de produto). Cada grupo é identificado pelo par attribute_set_id + group_name.

POST/api2/catalog/attributegroup

Criar grupo dentro de um Attribute Set.

Criação
{
  "attribute_set_id": 10,
  "group_name": "Dados Técnicos"
}
PATCH/api2/catalog/attributegroup

Renomear grupo. Identifique pelo nome atual (group_name) e informe o new_group_name.

Rename
{
  "attribute_set_id": 10,
  "group_name": "Dados Técnicos",
  "new_group_name": "Informações Técnicas"
}
DELETE/api2/catalog/attributegroup

Remover grupo. Grupos do sistema (criados na instalação do set) podem não ser removíveis.

Remoção
{
  "attribute_set_id": 10,
  "group_name": "Informações Técnicas"
}

Vinculação de atributos a grupos

Após criar o atributo global e o grupo, vincule-os para que o atributo apareça na aba correspondente do set. Use sort_order para controlar a posição dentro do grupo.

POST/api2/catalog/attribute

Vincular atributo a um grupo dentro de um set.

Vinculação
attribute_code Obrigatório
Código do atributo global.
attribute_set_id Obrigatório
ID do set destino.
attribute_group_name Obrigatório
Nome do grupo destino dentro do set.
sort_order Opcional
Posição do atributo dentro do grupo.
{
  "attribute_code": "codigo_fabricante",
  "attribute_set_id": 10,
  "attribute_group_name": "Informações Técnicas",
  "sort_order": 10
}
DELETE/api2/catalog/attribute

Desvincular atributo de um set. O atributo global continua existindo; só o vínculo com o set é removido.

Desvinculação
{
  "attribute_code": "codigo_fabricante",
  "attribute_set_id": 10
}

Formas de uso suportadas

Combinações testadas e homologadas para a API de atributos.

Listar atributos paginadosGET /api2/attribute + page, limit, include_pagination
Listar apenas selects e multiselectsGET /api2/attribute + frontend_input: ["select","multiselect"]
Consultar atributo por códigoGET /api2/attribute + attribute_code
Consultar atributo por IDGET /api2/attribute + id
Criar atributo textoPOST /api2/attribute + frontend_input: "text"
Criar atributo select com opçõesPOST /api2/attribute + options: [...]
Atualizar flagsPATCH /api2/attribute + campos a alterar
Sincronizar lista completa de opçõesPATCH /api2/attribute + options: [...]
Adicionar opção pontualPOST /api2/attribute/option + admin, position
Editar opção pontualPATCH /api2/attribute/option + option_id
Remover opção pontualDELETE /api2/attribute/option + option_id
Criar attribute set a partir de skeletonPOST /api2/catalog/attributeSet
Criar/renomear/remover grupoPOST/PATCH/DELETE /api2/catalog/attributegroup
Vincular atributo a grupoPOST /api2/catalog/attribute

Recomendações para integração

Recomendado

  • Use os endpoints /api2/attribute/option para alterações cirúrgicas em opções já existentes — eles eliminam o risco de remoção em cascata que o PATCH com options completo introduz.
  • Cachear a listagem de atributos do tipo select/multiselect no ERP/PIM — o cadastro muda pouco e cada consulta de produto pode reaproveitar a tabela.
  • Antes de remover uma opção, valide se ela está em uso por produtos. O DELETE /api2/attribute/option já bloqueia (409), mas a mensagem é mais clara para o operador se o aviso vier do seu lado.
  • Para criar atributos select com muitas opções (>100), prefira criar o atributo vazio e usar POST /api2/attribute/option em paralelo — é mais previsível para auditoria e rollback.

Evitar

  • Reenviar a lista options inteira em PATCH /api2/attribute para alterar uma única opção — opções ausentes podem ser removidas e disparar reescrita de produtos vinculados.
  • Tentar criar opções para atributos com source_model próprio (boolean nativo, status etc.). Retorna 400.
  • Excluir um attribute set com produtos sem ter um plano de migração — o force_products_remove: true é destrutivo.

Sincronização incremental com PIM

O fluxo recomendado para um PIM é: (1) sincronizar atributos globais via GET /api2/attribute + frontend_input cacheado; (2) detectar opções novas/alteradas/removidas no PIM e aplicar POST/PATCH/DELETE /api2/attribute/option uma por uma; (3) consultar atributos novamente e validar a tabela final. Essa abordagem mantém a auditoria limpa e evita perdas acidentais.

Erros comuns

StatusExemplo de bodyQuando ocorre
400{"error": "attribute_code is required"}Campo obrigatório ausente na criação.
400{"error": "Attribute does not support pointwise options"}Tentativa de usar /api2/attribute/option em atributo com source_model próprio ou tipo diferente de select/multiselect.
400{"error": "Invalid JSON body"}Payload mal formado.
401{"error": "Unauthorized"}Authorization ausente ou token expirado.
404{"error": "Attribute not found"}attribute_code ou id inexistente.
404{"error": "Option not found"}option_id não pertence ao atributo informado.
409{"error": "Option label already exists"}POST de opção com label duplicado no mesmo atributo.
409{"error": "Option is in use by products"}DELETE de opção referenciada por produtos.
409{"error": "Attribute set has products"}DELETE de attribute set sem force_products_remove: true.