Produtos

Listar produtos

A API oferece duas formas de listar produtos:

A API oferece duas formas de listar produtos:

EndpointFormatoUso
GET /v1/productspaginado (envelope)Listagens com paginação/filtros
GET /v1/products/listallarray direto (sem paginação)Carregar o catálogo inteiro de uma vez (ex.: selects)

Ambos exigem o escopo products:list e retornam produtos completos (com variants).

Filtros (querystring)

Aceitos por ambos os endpoints:

ParâmetroTipoDescrição
idstringFiltra por id do produto (prd_... / pro_...)
slugstringFiltra por slug (1–100 caracteres)
namestringFiltra por nome (1–40 caracteres)
languagestringFiltra por idioma
categorystringFiltra por categoria
enabledbooleanFiltra por ativo/inativo
externalreferencestringFiltra por referência externa
daterange (e daterangegt/gte/lt/lte)stringFiltra por intervalo de datas

Paginação (GET /v1/products): limit default 20, máx. 100; offset default 0. Em listall, limit default é 999999 e há sort (ascending | descending, default ascending).


Lista paginada

GET /v1/products

curl -X GET "https://api.selectwin.io/v1/products?limit=20&offset=0" \
  -H "SelectKey: sk_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"
{
  "offset": 0,
  "limit": 20,
  "total": 1,
  "page": { "offset": { "first": 0, "prev": 0, "next": 0, "last": 0 }, "current": 1, "total": 1 },
  "hasMore": false,
  "data": [
    {
      "id": "prd_01hqzvabc",
      "name": "Plano Premium",
      "slug": "plano-premium",
      "salesPage": "https://example.com/sales",
      "description": "Full access plan",
      "language": "pt-BR",
      "enabled": true,
      "salesQty": 42,
      "type": "digital",
      "category": "saas",
      "externalReference": null,
      "warrantyDays": 7,
      "images": ["https://example.com/img1.png"],
      "imageAssetIds": null,
      "createdAt": "2026-04-12T17:56:33.000Z",
      "updatedAt": "2026-04-12T17:56:33.000Z",
      "variants": [
        {
          "id": "var_01hqzvabc",
          "productId": "prd_01hqzvabc",
          "name": "Mensal",
          "slug": "mensal",
          "description": "Monthly billing",
          "sku": "SKU-M",
          "primary": true,
          "enabled": true,
          "pricing": { "unitPrice": 9900, "oldPrice": null, "costPerItem": null, "currency": "BRL", "schema": "unit", "type": "recurring", "billingType": "prepaid", "billingFrequency": "monthly", "billingFrequencyCount": 1 },
          "images": null,
          "metadata": null,
          "attributes": null,
          "externalReference": null,
          "checkoutUrl": null,
          "createdAt": "2026-04-12T17:56:33.000Z",
          "updatedAt": "2026-04-12T17:56:33.000Z"
        }
      ]
    }
  ]
}

Cada item de data é o produto completo (incluindo variants) — o mesmo objeto de Consultar. A lista paginada de produtos não inclui merchant/_links. Os campos de page.offset (first, prev, next, last) são sempre inteiros (nunca null). Mais detalhes em Paginação.


Lista completa (array direto)

GET /v1/products/listall

Retorna um array com todos os produtos (sem envelope de paginação), cada item com o objeto completo do produto (incluindo variants):

[
  {
    "id": "prd_01hqzvabc",
    "name": "Plano Premium",
    "slug": "plano-premium",
    "salesPage": "https://example.com/sales",
    "description": "Full access plan",
    "language": "pt-BR",
    "enabled": true,
    "salesQty": 42,
    "type": "digital",
    "category": "saas",
    "externalReference": null,
    "warrantyDays": 7,
    "images": ["https://example.com/img1.png"],
    "imageAssetIds": null,
    "createdAt": "2026-04-12T17:56:33.000Z",
    "updatedAt": "2026-04-12T17:56:33.000Z",
    "variants": [ /* ... */ ]
  }
]

listall é sempre um array no nível raiz — não há offset/limit/total/data. Use-o para popular seletores ou caches locais; para volumes grandes, prefira a lista paginada.

How is this guide?

On this page