Pular para o conteúdo

Produtos

CRUD do catálogo de produtos via API Key — para sincronizar com ERP/e-commerce. Mesmos dados e regras do cadastro feito no painel; paginação por página (não por cursor).

Requer scope READ_PRODUCTS.

Query:

CampoTipoObrigatórioRegras / Default
qstringnãobusca em name, description e externalRef
statusenumnãoACTIVE | INACTIVE
pageintnãodefault 1
pageSizeintnãomáx 100, default 20

Resposta (200):

{
"items": [
{
"id": "uuid",
"externalRef": "SKU-123",
"name": "Camiseta azul P",
"description": "string | null",
"unitPriceCents": 4990,
"currency": "BRL",
"status": "ACTIVE",
"createdAt": "2026-07-16T12:00:00.000Z",
"updatedAt": "2026-07-16T12:00:00.000Z"
}
],
"page": 1,
"pageSize": 20,
"totalCount": 1
}

Requer scope WRITE_PRODUCTS.

Body:

CampoTipoObrigatórioRegras / Default
externalRefstringnãomáx 255; único por empresa — repetido gera 409
namestringsim1–255
descriptionstringnãomáx 500
unitPriceCentsintsim≥ 0
currencystringnão3 chars; default "BRL"
metadataobjectnãopares chave/valor arbitrários

Resposta (201): o produto criado, no formato de detalhe (item de listagem + metadata).

Exemplo — criar (ou reconhecer via 409) um produto do seu catálogo:

Criar produto
curl -s -X POST https://goldpay-goldpay-api.f0czp0.easypanel.host/api/merchant/products \
-H "X-Api-Key: <SECRET_KEY>" \
-H "Content-Type: application/json" \
-d '{
"externalRef": "SKU-123",
"name": "Camiseta azul P",
"unitPriceCents": 4990
}'

Requer scope READ_PRODUCTS. De outra empresa ou inexistente → 404.

Requer scope WRITE_PRODUCTS. Todos os campos do body são opcionais (mesmas regras do POST), mas ao menos um precisa ser enviado (400 se o body estiver vazio). externalRef continua único por empresa (409 em conflito). Não encontrado → 404.

Exemplo — reajustar preço e desativar um produto:

Atualizar produto
curl -s -X PATCH https://goldpay-goldpay-api.f0czp0.easypanel.host/api/merchant/products/<PRODUCT_ID> \
-H "X-Api-Key: <SECRET_KEY>" \
-H "Content-Type: application/json" \
-d '{ "unitPriceCents": 5490, "status": "INACTIVE" }'