Referência

Promoções

As promoções: criar, aprovar, pausar, terminar, simular o que acontece a uma venda e ver o que renderam e custaram.

As promoções: criar, aprovar, pausar, terminar, simular o que acontece a uma venda e ver o que renderam e custaram.

OperaçãoO que faz
GET /api/promocoesLista as promoções.
GET /api/promocoes/relatorioO que as promoções renderam e custaram num período, com o período anterior ao lado, por operador e por caixa, e os alertas.
GET /api/promocoes/pdvA descarga das promoções para um ponto de venda.
GET /api/promocoes/{id}Uma promoção, com as regras.
POST /api/promocoesCria uma promoção (fica em rascunho).
PUT /api/promocoes/{id}Altera uma promoção em rascunho.
POST /api/promocoes/{id}/aprovarAprova uma promoção: passa a valer.
POST /api/promocoes/{id}/pausarPausa uma promoção (com um motivo, opcional).
POST /api/promocoes/{id}/retomarRetoma uma promoção pausada.
POST /api/promocoes/{id}/reabrirReabre uma promoção como rascunho, para a poder alterar.
POST /api/promocoes/{id}/terminarTermina uma promoção (com um motivo, opcional).
POST /api/promocoes/{id}/duplicarDuplica uma promoção, como rascunho.
POST /api/promocoes/simularSimula o que as promoções fazem a uma venda: as linhas, os descontos e o total, sem emitir nada.
GET/api/promocoes#

Lista as promoções.

  • Permissão Promocoes.Ler

situacao e pesquisa filtram.

Parâmetros

NomeOndeTipoObrigatório
situacaona pesquisauma de: «Rascunho», «Agendada», «Activa», «Pausada», «Terminada», «null»
pesquisana pesquisatexto

Pedido

curl
curl 'https://<endereço-da-API>/api/promocoes' \
  -H 'X-Api-Key: <a-sua-chave>'
GET/api/promocoes/relatorio#

O que as promoções renderam e custaram num período, com o período anterior ao lado, por operador e por caixa, e os alertas.

  • Permissão Promocoes.Ler

dataInicio e dataFim obrigatórias; lojaId limita a um estabelecimento.

Parâmetros

NomeOndeTipoObrigatório
dataIniciona pesquisadata (AAAA-MM-DD)sim
dataFimna pesquisadata (AAAA-MM-DD)sim
lojaIdna pesquisaidentificador (UUID)

Pedido

curl
curl 'https://<endereço-da-API>/api/promocoes/relatorio' \
  -H 'X-Api-Key: <a-sua-chave>'
GET/api/promocoes/pdv#

A descarga das promoções para um ponto de venda.

  • Permissão Documentos.Emitir

Funciona como os catálogos: com If-None-Match e a versão que já tem, a resposta é 304 sem corpo enquanto nada mudou.

Pedido

curl
curl 'https://<endereço-da-API>/api/promocoes/pdv' \
  -H 'X-Api-Key: <a-sua-chave>'
GET/api/promocoes/{id}#

Uma promoção, com as regras.

  • Permissão Promocoes.Ler

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Pedido

curl
curl 'https://<endereço-da-API>/api/promocoes/<id>' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/promocoes#

Cria uma promoção (fica em rascunho).

  • Permissão Promocoes.Editar
  • Idempotência aceita Idempotency-Key

Devolve o id.

Corpo do pedido (JSON · DadosPromocao)

CampoTipoObrigatórioSignificado
nometextosimO nome.
nomeCurtotextosim
descricaotexto ou nuloA descrição.
tipouma de: «LeveXPagueY», «PercentagemDesconto», «DescontoValor», «PrecoEspecial», «PrecoPorQuantidade», «Conjunto», «OfertaArtigo», «DescontoCompraTotal», «PrecoCliente»sim
todosOsArtigosverdadeiro/falso
produtoIdslista de identificador (UUID)
categoriaIdslista de identificador (UUID)
produtosExcluidosIdslista de identificador (UUID)
categoriasExcluidasIdslista de identificador (UUID)
unidadesuma de: «Ambas», «SoBase», «SoAlternativas»
leveXnúmero inteiro ou nulo
pagueYnúmero inteiro ou nulo
percentagemnúmero ou nulo
valorDescontonúmero ou nuloO valor do desconto.
preconúmero ou nulo
escaloeslista de objectos
escaloes[].quantidadeMinimanúmerosim
escaloes[].precoUnitarionúmerosimO preço de uma unidade, sem imposto.
itensPacklista de objectos
itensPack[].produtoIdidentificador (UUID)simO artigo.
itensPack[].quantidadenúmerosimA quantidade.
precoPacknúmero ou nulo
produtoOferecidoIdidentificador (UUID) ou nulo
quantidadeOferecidanúmero ou nulo
iniciodata e hora (ISO 8601)sim
fimdata e hora (ISO 8601) ou nulo
diasSemananúmero inteiro
horaIniciotexto ou nulo
horaFimtexto ou nulo
clienteIdslista de identificador (UUID)
quantidadeMinimanúmero ou nulo
valorMinimonúmero ou nulo
metodoPagamentoIdslista de identificador (UUID)
lojaIdslista de identificador (UUID)
limiteUsosTotalnúmero inteiro ou nulo
limiteUsosPorClientenúmero inteiro ou nulo
limiteAplicacoesPorVendanúmero inteiro ou nulo
stockPromocionalnúmero ou nulo
prioridadenúmero inteiro
acumulaverdadeiro/falso
permiteDescontoManualverdadeiro/falso

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "nome": "texto",
  "nomeCurto": "texto",
  "tipo": "LeveXPagueY",
  "inicio": "2026-10-12T09:00:00Z"
}'
PUT/api/promocoes/{id}#

Altera uma promoção em rascunho.

  • Permissão Promocoes.Editar

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · DadosPromocao)

CampoTipoObrigatórioSignificado
nometextosimO nome.
nomeCurtotextosim
descricaotexto ou nuloA descrição.
tipouma de: «LeveXPagueY», «PercentagemDesconto», «DescontoValor», «PrecoEspecial», «PrecoPorQuantidade», «Conjunto», «OfertaArtigo», «DescontoCompraTotal», «PrecoCliente»sim
todosOsArtigosverdadeiro/falso
produtoIdslista de identificador (UUID)
categoriaIdslista de identificador (UUID)
produtosExcluidosIdslista de identificador (UUID)
categoriasExcluidasIdslista de identificador (UUID)
unidadesuma de: «Ambas», «SoBase», «SoAlternativas»
leveXnúmero inteiro ou nulo
pagueYnúmero inteiro ou nulo
percentagemnúmero ou nulo
valorDescontonúmero ou nuloO valor do desconto.
preconúmero ou nulo
escaloeslista de objectos
escaloes[].quantidadeMinimanúmerosim
escaloes[].precoUnitarionúmerosimO preço de uma unidade, sem imposto.
itensPacklista de objectos
itensPack[].produtoIdidentificador (UUID)simO artigo.
itensPack[].quantidadenúmerosimA quantidade.
precoPacknúmero ou nulo
produtoOferecidoIdidentificador (UUID) ou nulo
quantidadeOferecidanúmero ou nulo
iniciodata e hora (ISO 8601)sim
fimdata e hora (ISO 8601) ou nulo
diasSemananúmero inteiro
horaIniciotexto ou nulo
horaFimtexto ou nulo
clienteIdslista de identificador (UUID)
quantidadeMinimanúmero ou nulo
valorMinimonúmero ou nulo
metodoPagamentoIdslista de identificador (UUID)
lojaIdslista de identificador (UUID)
limiteUsosTotalnúmero inteiro ou nulo
limiteUsosPorClientenúmero inteiro ou nulo
limiteAplicacoesPorVendanúmero inteiro ou nulo
stockPromocionalnúmero ou nulo
prioridadenúmero inteiro
acumulaverdadeiro/falso
permiteDescontoManualverdadeiro/falso

Pedido

curl
curl -X PUT 'https://<endereço-da-API>/api/promocoes/<id>' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Content-Type: application/json' \
  -d '{
  "nome": "texto",
  "nomeCurto": "texto",
  "tipo": "LeveXPagueY",
  "inicio": "2026-10-12T09:00:00Z"
}'
POST/api/promocoes/{id}/aprovar#

Aprova uma promoção: passa a valer.

  • Permissão Promocoes.Aprovar

Precisa da permissão de aprovar promoções.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/<id>/aprovar' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/promocoes/{id}/pausar#

Pausa uma promoção (com um motivo, opcional).

  • Permissão Promocoes.Aprovar
  • Idempotência aceita Idempotency-Key

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON)

CampoTipoObrigatório
motivotexto ou nulo

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/<id>/pausar' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{}'
POST/api/promocoes/{id}/retomar#

Retoma uma promoção pausada.

  • Permissão Promocoes.Aprovar

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/<id>/retomar' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/promocoes/{id}/reabrir#

Reabre uma promoção como rascunho, para a poder alterar.

  • Permissão Promocoes.Editar

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/<id>/reabrir' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/promocoes/{id}/terminar#

Termina uma promoção (com um motivo, opcional).

  • Permissão Promocoes.Aprovar
  • Idempotência aceita Idempotency-Key

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON)

CampoTipoObrigatório
motivotexto ou nulo

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/<id>/terminar' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{}'
POST/api/promocoes/{id}/duplicar#

Duplica uma promoção, como rascunho.

  • Permissão Promocoes.Editar

Devolve o id da cópia.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/<id>/duplicar' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/promocoes/simular#

Simula o que as promoções fazem a uma venda: as linhas, os descontos e o total, sem emitir nada.

  • Permissão Promocoes.Ler
  • Idempotência aceita Idempotency-Key

Corpo do pedido (JSON · SimularPromocoesQuery)

CampoTipoObrigatórioSignificado
linhaslista de objectossim
linhas[].produtoIdidentificador (UUID)simO artigo.
linhas[].quantidadenúmerosimA quantidade.
linhas[].unidadeVendaIdidentificador (UUID) ou nulo
linhas[].precoUnitarionúmero ou nuloO preço de uma unidade, sem imposto.
linhas[].descontoManualPercentualnúmero
clienteIdidentificador (UUID) ou nuloO cliente do documento.
lojaIdidentificador (UUID) ou nuloO estabelecimento.
metodosPagamentolista de identificador (UUID) ou nulo
agoradata e hora (ISO 8601) ou nulo
promocaoEmTesteobjecto ou nulo
promocaoEmTeste.nometextosimO nome.
promocaoEmTeste.nomeCurtotextosim
promocaoEmTeste.descricaotexto ou nuloA descrição.
promocaoEmTeste.tipouma de: «LeveXPagueY», «PercentagemDesconto», «DescontoValor», «PrecoEspecial», «PrecoPorQuantidade», «Conjunto», «OfertaArtigo», «DescontoCompraTotal», «PrecoCliente»sim
promocaoEmTeste.todosOsArtigosverdadeiro/falso
promocaoEmTeste.produtoIdslista de identificador (UUID)
promocaoEmTeste.categoriaIdslista de identificador (UUID)
promocaoEmTeste.produtosExcluidosIdslista de identificador (UUID)
promocaoEmTeste.categoriasExcluidasIdslista de identificador (UUID)
promocaoEmTeste.unidadesuma de: «Ambas», «SoBase», «SoAlternativas»
promocaoEmTeste.leveXnúmero inteiro ou nulo
promocaoEmTeste.pagueYnúmero inteiro ou nulo
promocaoEmTeste.percentagemnúmero ou nulo
promocaoEmTeste.valorDescontonúmero ou nuloO valor do desconto.
promocaoEmTeste.preconúmero ou nulo
promocaoEmTeste.escaloeslista de objectos
promocaoEmTeste.escaloes[].quantidadeMinimanúmerosim
promocaoEmTeste.escaloes[].precoUnitarionúmerosimO preço de uma unidade, sem imposto.
promocaoEmTeste.itensPacklista de objectos
promocaoEmTeste.itensPack[].produtoIdidentificador (UUID)simO artigo.
promocaoEmTeste.itensPack[].quantidadenúmerosimA quantidade.
promocaoEmTeste.precoPacknúmero ou nulo
promocaoEmTeste.produtoOferecidoIdidentificador (UUID) ou nulo
promocaoEmTeste.quantidadeOferecidanúmero ou nulo
promocaoEmTeste.iniciodata e hora (ISO 8601)sim
promocaoEmTeste.fimdata e hora (ISO 8601) ou nulo
promocaoEmTeste.diasSemananúmero inteiro
promocaoEmTeste.horaIniciotexto ou nulo
promocaoEmTeste.horaFimtexto ou nulo
promocaoEmTeste.clienteIdslista de identificador (UUID)
promocaoEmTeste.quantidadeMinimanúmero ou nulo
promocaoEmTeste.valorMinimonúmero ou nulo
promocaoEmTeste.metodoPagamentoIdslista de identificador (UUID)
promocaoEmTeste.lojaIdslista de identificador (UUID)
promocaoEmTeste.limiteUsosTotalnúmero inteiro ou nulo
promocaoEmTeste.limiteUsosPorClientenúmero inteiro ou nulo
promocaoEmTeste.limiteAplicacoesPorVendanúmero inteiro ou nulo
promocaoEmTeste.stockPromocionalnúmero ou nulo
promocaoEmTeste.prioridadenúmero inteiro
promocaoEmTeste.acumulaverdadeiro/falso
promocaoEmTeste.permiteDescontoManualverdadeiro/falso
substituiPromocaoIdidentificador (UUID) ou nulo

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/promocoes/simular' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "linhas": [
    {
      "produtoId": "00000000-0000-0000-0000-000000000000",
      "quantidade": 0
    }
  ]
}'