Este método é responsável por receber todas as mensagens que o Commercehub ira processar.

  • Endpoint: 
    • /api/fila/publish
    • /api/fila/v1/publish
  • Método: Post
  • Autenticação: Bearer token
  • Permissão: Retaguarda
  • Microserviço: PDVSync.Core.Fila


Funcionamento

Este endpoint aceita uma lista de mensagens de qualquer tipo e as envia para os microserviços responsáveis. Para garantir flexibilidade, você pode passar os atributos necessários tanto por query params quanto no body da requisição.


1. Via query params

Use quando não for possível ou não fizer sentido incluir esses campos no payload.

Exemplo:

POST /api/fila/v1/publish?
  idInquilino=VOModa&
  idProprietario=1&
  codigoTipoLote=1&
  versaoTipoDado=2&

  tipo='Generico'
Content-Type: application/json
Authorization: Bearer <token>
[]


2. Via body

Use quando o payload já contém todos os atributos e não há necessidade de expô-los na URL.

POST /api/fila/v1/publish
Content-Type: application/json
Authorization: Bearer <token>

{
  "idInquilino": "VOModa",
  "idProprietario": 1,
  "conteudo": [...],
  "hashConteudo": "...",
  "codigoTipoLote": 1,       
  "versaoTipoDado": 2,       
  "tipo": "abobrinha"        
}

Parâmetros obrigatórios

  • idInquilino
  • idProprietario
  • codigoTipoLote ou tipo 


Parâmetros condicionais

  • versaoTipoDado - caso nao seja enviado, será incluido 1 quando codigoTipoLote preenchido.


Regras de enfileiramento

  1. Tipo de lote conhecido
    • codigoTipoLote 
    • versaoTipoDado 
  1. Contrato novo ou tipo desconhecido
    • Enviar apenas tipo.
    • Uma nova fila será criada com esse nome.

Dessa forma, integradores têm total liberdade para escolher o formato de envio que melhor se encaixa em sua necessidade.

Requisição

Exemplo de body da requisição

[
    {
        "tipo": "GENERICO",
        "chave": "",
        "tabela": "",
        "conteudo": "W3siSWRJbnF1aWxpbm8iOiIyMTIiLCJJZFByb3ByaWV0YXJpbyI6IjEiLCJJZFJldGFndWFyZGEiOiIxMTA3MjAyNSIsIkxvdGVPcmlnZW0iOiIyMDI1MDcxNjIwMDg0ODA5NyIsIk5vbWUiOiJBZHJpYW5hIEFwYXJlY2lkYSBEdWFydGUiLCJFbmRlcmVjbyI6IlJ1YSBFdXJvcGEiLCJOdW1lcm8iOiI3NjQiLCJDb21wbGVtZW50byI6IkNhc2EiLCJCYWlycm8iOiJQb2xvY2VudHJvIEkiLCJDaWRhZGUiOiJBbsOhcG9saXMiLCJFc3RhZG8iOiJHTyIsIkNlcCI6Ijc1MTMwMTgwIiwiVGVsZWZvbmUiOiI2MjM1NDM0NTk4IiwiQ2VsdWxhciI6IjYyOTk1MzY1NjcxIiwiRW1haWwiOiJhZHJpYW5hX2R1YXJ0ZUB0YW0uY29tLmJyIiwiRGF0YU5hc2NpbWVudG8iOiIxOTc0LTEwLTI1IiwiU2l0dWFjYW8iOjEsIlBlc3NvYUZpc2ljYSI6MCwiQ3BmQ25waiI6IjU2NzQ2Mjc3NDYxIiwiUmdJbnNjcmljYW8iOiI0NDkwNTM4NTQiLCJTZXhvIjoxLCJFc3RhZG9DaXZpbCI6MiwiQXZhdGFyVXJsIjoiIiwiRW52aWFycG5ldCI6MSwiQXRpdmlkYWRlIjoibWVkaWNhIiwiQ3JhY2hhIjoiIiwiSWRSZXRhZ3VhcmRhUHJvZmlzc2lvbmFsIjoiIiwiSWRSZXRhZ3VhcmRhQ2xpZW50ZVByaW5jaXBhbCI6IiIsIklkUmV0YWd1YXJkYVJhbW9BdGl2aWRhZGUiOiIiLCJJZFJldGFndWFyZGFSZWdpYW8iOiIiLCJJZFJldGFndWFyZGFQcmFjYSI6IiIsIklkUmV0YWd1YXJkYVJlZGVDbGllbnRlIjoiIn1d",
        "idInquilino": "PDVSyncDanilo",
        "HASHConteudo": "f10b7aa70ac7d2ff01a241037b644df8",
        "codigoTipoLote": null,
        "idProprietario": "1",
        "versaoTipoDado": 1
    }
]

Definições dos campos do body

Campo

Tipo

Descrição

Obrigatorio

Observações

tipo

string

Tipo do Dado (Descrição)

Sim
chavestringChave da tabela ERPNão
tabeladatetimeTabela do ERPNão
conteudostringconteudo do dado NãoConteudo em 64bytes do dados 
idProprietariostringIdentificador do proprietárioSim

Enviar apenas o proprietário da loja. 

Este campo não é uma lista e não aceita mais de um proprietário.

idInquilinostringIdentificador do inquilino Sim
HASHConteudostringHash md5 do conteudoSim
codigoTipoLoteintCodigo Tipo LoteSimCodigo especifico (FrontEnd)
versaoTipoDadointVersao do Tipo Dado NãoVersao especifica (FrontEnd)"

Retorno

Exemplo de body de retorno

{
    "success": true,
    "message": "Requisição inserida com sucesso!",
    "data": null,
    "errors": null,
    "totalTime": 0,
    "numberOfRecords": 0
}

Definições dos campos do retorno

Campo

Tipo

Descrição

SuccessboolIndica se a criação do compartilhamento foi feita com sucesso
MessagestringCaso ocorra erros durante a criação do compartilhamento eles serão enviados nesse campo
DataobjetoObjeto compartilhamento criado
ErrorsListaListas com os erros encontrados no processo
TotalTimeinttempo da requisição
NumberOfRecordsintnúmero de dados inseridos

Exemplo de body de retorno

{
    "code": "string",
    "message": "string",
    "detailedMessage": "string",
    "helpUrl": "string",
    "details": [
        {
            "guid": "string",
            "code": "string",
            "message": "string",
            "detailedMessage": "string"
        }
    ]
}

Definições dos campos do retorno

Campo

Tipo

Descrição

codestringCódigo de erro
messagestringMensagem do erro
detailedMessagestringDetalhamento do erro
helpUrlstringurl de ajuda
TotalTimestringTempo total de busca
detailslista de objetoLista de objeto de erros
details.guidstringIdentificador do erro
details.codestringCódigo do erro
details.messagestringMensagem do erro 
details.detailedMessagestringDetalhamento do erro