Skip to content
Back to skills

Marcas

ASecurity

API de Marcas da Tray. Utilize quando o desenvolvedor precisar gerenciar as marcas (fabricantes) dos produtos da loja, incluindo listagem, consulta individual, criação, atualização e exclusão. Inclui os campos da marca (brand, slug), paginação e filtros.

  • 14 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 11, 2026
developmentgonodeapi

Works with

  • claude code
  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned June 11, 2026

npx -y skills add tray-tecnologia/tray-api-ai-plugin --skill marcas --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Marcas?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Marcas
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tray-tecnologia-marcas/badge)](https://www.skillsdirectory.com/skills/tray-tecnologia-marcas)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tray-marcas
description: >
  API de Marcas da Tray. Utilize quando o desenvolvedor precisar gerenciar
  as marcas (fabricantes) dos produtos da loja, incluindo listagem, consulta individual,
  criação, atualização e exclusão. Inclui os campos da marca (brand, slug),
  paginação e filtros.
when_to_use: >
  Use quando o desenvolvedor mencionar: marca, fabricante, brand, GET /brands,
  POST /brands, PUT /brands, brand_id, filtrar por marca ou cadastrar fabricante.
when_not_to_use: >
  Não use para categorias da loja (use tray-categorias) nem para características de
  produto como cor ou material (use tray-caracteristicas).
---

## MANDATORY: Tool Call(s) Required Before Answering

- **OBRIGATÓRIO:** `node skills/tray-dev/scripts/search_docs.mjs "<termo>"` — confirme o comportamento da API antes de gerar código.
- **OBRIGATÓRIO:** `node skills/marcas/scripts/validate.mjs '<payload_json>'` — valide a estrutura do payload de marca antes de retornar código ao usuário.

## Antes de responder

> Execute estas verificações antes de gerar qualquer payload ou código:

1. Confirme o método HTTP e endpoint correto para a operação solicitada.
2. Identifique os campos obrigatórios listados neste documento — não omita nenhum.
3. Verifique que `access_token` não aparece como literal string no código gerado.
4. Confirme que esta é a skill correta para o recurso (leia `when_not_to_use` no frontmatter).
5. Execute `node skills/marcas/scripts/validate.mjs '<payload_json>'`
   para confirmar a estrutura do payload que vai gerar. O validador checa
   apenas **estrutura** (campos obrigatórios, tipos e campos desconhecidos),
   nunca valores reais — então monte um payload sintético com placeholders
   sempre que os valores vierem de variáveis de ambiente, da entrada do
   usuário ou de outras chamadas. Exemplo:
   `node skills/marcas/scripts/validate.mjs '{"Brand":{"brand":"<nome>"}}'`.
   Corrija todos os erros antes de retornar o código ao usuário. Até 3
   tentativas — se persistir, explique o problema ao usuário.

# API de Marcas — Tray

Documentação oficial: https://developers.tray.com.br/#api-de-marca-do-produto

## Endpoints

| Método | Endpoint | Descrição |
|:--|:--|:--|
| GET | `/products/brands` | Listagem de marcas com paginação e filtros |
| GET | `/products/brands/:id` | Consultar dados de uma marca por ID |
| POST | `/products/brands` | Cadastrar nova marca |
| PUT | `/products/brands/:id` | Atualizar dados da marca |
| DELETE | `/products/brands/:id` | Excluir marca |

**Autenticação:** `?access_token={token}` em todas as chamadas.

> **Alias não oficial:** a rota `/brands` (sem o prefixo `/products/`) também retorna HTTP 200 nesta API, mas não é documentada oficialmente pela Tray. Use sempre `/products/brands` para garantir compatibilidade e aderência à documentação oficial.

## Campos da Marca

| Campo | Tipo | Obrigatório | Descrição |
|:--|:--|:--|:--|
| `id` | number | — | ID da marca (retornado pela API) |
| `brand` | string | **Sim** | Nome da marca |
| `slug` | string | Não | Slug para URL amigável (gerado automaticamente se não informado) |

> ⚠️ **O campo do nome da marca é `brand`, NÃO `name`.** Enviar `name` resulta
> em `"Invalid data provided"` (HTTP 400) — a API ignora o campo desconhecido e
> falha por `brand` ausente. Os campos aceitos no payload são apenas `brand` e
> `slug`. Os campos `description` e `image` **não** existem nesta API de marcas.

## Paginação

| Parâmetro | Descrição |
|:--|:--|
| `limit` | Itens por página (máximo **50**, padrão **30**) |
| `page` | Número da página |

**Resposta inclui:** `total`, `page`, `offset`, `limit`, `maxLimit`

## Filtros de Listagem

| Filtro | Tipo | Descrição |
|:--|:--|:--|
| `id` | number | Filtrar por ID da marca |
| `brand` | string | Filtrar por nome da marca |

## Corpo da Requisição (POST/PUT)

```json
{
  "Brand": {
    "brand": "Nike",
    "slug": "nike"
  }
}
```

## Respostas

| Operação | Código | Mensagem |
|:--|:--|:--|
| Criação | 201 | `{"message": "Created", "id": 10, "code": 201}` |
| Atualização | 200 | `{"message": "Saved", "id": 10, "code": 200}` |
| Exclusão | 200 | `{"message": "Deleted", "id": 10, "code": 200}` |

## Exemplo de Resposta — Listar Marcas

```json
{
  "paging": {
    "total": 25,
    "page": 1,
    "offset": 0,
    "limit": 30,
    "maxLimit": 50
  },
  "Brands": [
    {
      "Brand": {
        "id": "1",
        "brand": "Nike",
        "slug": "nike"
      }
    }
  ]
}
```

## Exemplo de Resposta — Consultar Marca por ID

```json
{
  "Brand": {
    "id": "1",
    "brand": "Nike",
    "slug": "nike"
  }
}
```

## Boas Práticas

1. **Crie marcas antes dos produtos** — ao cadastrar produtos, o `brand_id` deve referenciar uma marca existente
2. **Use slugs descritivos** — o slug é usado na URL da página de marca na vitrine; mantenha-o limpo e legível
3. **Evite duplicidade** — consulte a listagem antes de criar para evitar marcas duplicadas
4. **Campo correto** — use sempre `brand` para o nome da marca; `name` é ignorado e causa erro
5. **Exclusão segura** — não exclua marcas que possuam produtos associados; reatribua os produtos antes

## Como Usar no Claude Code

### Exemplos de Prompt

- "cadastra as marcas Nike, Adidas e Puma"
- "lista todas as marcas disponíveis na loja"
- "verifica se a marca Samsung já existe antes de criar"
- "atualiza o slug da marca ID 10"

### O que o Claude faz

1. Gera o código de criação com wrapper `Brand`, usando o campo `brand` (e slug automático)
2. Inclui verificação de duplicidade via `GET /products/brands?brand=...` antes de criar
3. Monta o payload apenas com os campos aceitos (`brand`, `slug`)
4. Explica que o `brand_id` retornado deve ser usado ao cadastrar produtos

### O que você recebe

- Código de criação de marca com wrapper `{"Brand": {...}}` correto e campo `brand`
- Verificação de duplicidade antes de criar
- `brand_id` extraído da resposta para uso em produtos
- Código de listagem com paginação

### Pré-requisitos

- `access_token` configurado

Files in this skill

  • SKILL.md6 KB
  • assets/schema.json518 B
  • scripts/validate.mjs411 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.