GET /api/products
Retorna a lista paginada de produtos internalizados para o fornecedor autenticado. Apenas produtos pertencentes ao supplier_id do token são retornados — nenhum dado de outros fornecedores é acessível.
Autenticação
Requer header Authorization: Bearer <access_token> emitido pelo endpoint POST /api/external-auth/token.
Request
Headers
| Header | Valor |
|---|---|
Authorization | Bearer <access_token> |
Query Parameters
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
status | string | — | — | Filtra por status. Valores possíveis: pending, synced, error. |
page | int | — | 1 | Número da página (começa em 1). |
page_size | int | — | 50 | Itens por página. Máximo: 200. |
# Todos os produtos (página 1, 50 itens)
curl -s "https://<host>/api/products" \
-H "Authorization: Bearer <access_token>"
# Apenas produtos sincronizados — segunda página
curl -s "https://<host>/api/products?status=synced&page=2&page_size=20" \
-H "Authorization: Bearer <access_token>"
Response
200 OK
{
"Total": 0,
"Page": 1,
"PageSize": 50,
"Items": [
{
"Id": 0,
"ExternalId": "<material_id>",
"Name": "<material> - <material_variant>",
"Sku": "<sku>",
"Description": "material_variant_id=<id> | dimensions=<w>x<h>x<d> | weight=<kg>",
"Price": 0.00,
"Stock": 0,
"Category": "<material_variant>",
"Status": "synced",
"ErrorMessage": null,
"SyncedAt": "<iso8601>",
"CreatedAt": "<iso8601>",
"UpdatedAt": "<iso8601>"
}
]
}
Campos do item
| Campo | Tipo | Descrição |
|---|---|---|
Id | int | ID interno gerado pelo worker. |
ExternalId | string | material_id enviado no payload de sync. |
Name | string | material + material_variant concatenados. |
Sku | string | SKU do produto. |
Description | string | Dimensões e peso extraídos do payload de sync. |
Price | decimal | Preço (padrão 0.00). |
Stock | int | Quantidade (quantity) do último sync. |
Category | string | material_variant do payload. |
Status | string | pending, synced ou error. |
ErrorMessage | string? | Preenchido quando status = error. |
SyncedAt | datetime? | Data/hora da última sincronização bem-sucedida (UTC). |
CreatedAt | datetime | Data/hora de criação (UTC). |
UpdatedAt | datetime | Data/hora da última atualização (UTC). |
401 Unauthorized
Token ausente, expirado ou inválido.
{ "message": "Invalid token." }