Token de Cadastro/Autenticação

URL de homologação: https://hubagnostico-homologacao.linx.com.br/v1

URL de produção: 

Parâmetros do header:

ParâmetroTipoValor
Linx-CnpjStringCNPJ do cliente
Linx-TokenProdutoStringToken do produto (Microvix, Seta)
Linx-TokenParceiroStringToken do parceiro (Dito, Open Cashback)
Linx-IdParceiroStringID do parceiro (Obtido no endpoint de parceiros)
Estruturas Endpoints

Segue abaixo a lista de endpoints da API:

Para autenticação exclusiva deste endpoint, é necessário apenas o token do produto.

Endereço: Configuracao/BuscarParceiros

ParâmetroTipoValor
Linx-TokenProdutoStringToken do produto (Microvix, Seta)
Request - POST
{}
Response
{
  [
    "Id": 0,
    "Descricao": "string"
  ]
}
ParâmetroTipoValorObrigatoriedade
IdInteiroCódigo de identificação do parceiroObrigatório
DescricaoStringNome do parceiroObrigatório
Request - POST
{
  "IdentificadorTransacao": "string",
  "Nome": "string",
  "RG": "string",
  "CPF": "string",
  "EstadoCivil": 1,
  "DataNascimento": "2024-12-12T12:52:57.111Z",
  "Sexo": 0,
  "Profissao": "string",
  "NomeMae": "string",
  "NomePai": "string",
  "NomeConjuge": "string",
  "Naturalidade": "string",
  "Escolariedade": 0,
  "RendaMensal": 0,
  "NumeroDependentes": 0,
  "LocalDeTrabalho": "string",
  "TempoNoAtualEmprego": "string",
  "Endereco": {
    "Cep": "string",
    "Logradouro": "string",
    "Numero": "string",
    "Complemento": "string",
    "Bairro": "string",
    "Cidade": "string",
    "UF": "string",
    "Pais": "string"
  },
  "Contato": {
    "Telefone": "string",
    "Celular": "string",
    "Email": "string"
  }
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
NomeString
RGString
CPFString
EstadoCivilInteiroNaoInformado = 1,  Casado = 2, Solteiro = 3, Divorciado = 4, Viuvo = 5, Outros = 6, Concubinato = 7
DataNascimentoString
SexoInteiroNaoInformado = 0, Masculino = 1, Feminino = 2
ProfissaoString
NomeMaeString
NomePaiString
NomeConjugeString
NaturalidadeString
EscolariedadeInteiroNaoInformado = 0, EnsinoFundamentalIncompleto = 1, EnsinoFundamentalCompleto = 2, EnsinoMedioCompleto = 3, GraduacaoCompleto = 4, PosGraduacaoCompleto = 5
RendaMensalDecimal
NumeroDependentesInteiro
LocalDeTrabalhoString
TempoNoAtualEmpregoString
CepString
LogradouroString
NumeroString
ComplementoString
BairroString
CidadeString
UFString
PaisString
TelefoneString
CelularString
EmailString
Response
{
  "IdentificadorTransacao": "string",
  "SaldoAtual": 0,
  "SaldoDisponivel": 0,
  "UtilizaPin": true,
  "TipoPin": 1,
  "ClienteCadastrado": true
}
ParâmetroTipoValorObrigatoriedade
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
SaldoAtualDecimal
Obrigatório
SaldoDisponivelDecimal
Obrigatório
UtilizaPinBooleano
Obrigatório
TipoPinInteiroCelular = 1, Email = 2
ClienteCadastradoBooleano

Request - POST
{ 
  "IdentificadorTransacao": "string",
  "Venda": {
    "Cpf": "string",
    "Vendedor": {
      "Id": 0,
      "Nome": "string"
    },
    "DataHora": "2024-12-12T12:56:54.891Z",
    "ValorLiquido": 0,
    "ValorBruto": 0,   
    "DescontoTotalValor": 0,
	"QuantidadeTotalItens": 0,   
    "Itens": [
      {
        "ValorAcrescimo": 0,
        "ValorUnitario": 0,
        "Ordem": 0,
        "Codigo": 0,
        "Ean": "string",
        "Produto": "string",
        "QuantidadeTotal": 0,
        "ValorLiquido": 0,
        "ValorBruto": 0,
        "ValorDesconto": 0
      }
    ]
  }
} 
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CpfString
IdInteiro
NomeString
DataHoraString
ValorLiquidoDecimal
ValorBrutoDecimal
DescontoTotalValorDecimal
QuantidadeTotalItensInteiro
ValorAcrescimoDecimal
ValorUnitarioDecimal
OrdemInteiro
CodigoInteiro
EanString
ProdutoString
QuantidadeTotalInteiro
ValorLiquidoDecimal
ValorBrutoDecimal
ValorDescontoDecimal
Response
{
  "IdentificadorTransacao": "string",
  "SaldoAtual": 0,
  "SaldoDisponivel": 0,
  "UtilizaPin": true,
  "TipoPin": 1,
}
ParâmetroTipoValorObrigatoriedade
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
SaldoAtualDecimal
Obrigatório
SaldoDisponivelDecimal
Obrigatório
UtilizaPinBooleano
Obrigatório
TipoPinInteiroCelular = 1, Email = 2
Request - POST
{
  "IdentificadorTransacao": "string",
  "Celular": "string",
  "Email": "string",
  "Cpf": "string",
  "TipoPin": 1
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CelularString
EmailString
CpfString
TipoPinInteiroCelular = 1, Email = 2
Response
{
  "IdentificadorTransacao": "string"
}
Request - POST
{
  "IdentificadorTransacao": "string",
  "Cpf": "string",
  "Pin": "string"
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CpfString
Pin String
Response
{
  "IdentificadorTransacao": "string",
  "PinValido": true,
}
ParâmetroTipoValorObrigatoriedade
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
PinValidoBooleano
Obrigatório
Request - POST
{ 
  "IdentificadorTransacao": "string",
  "Venda": {
    "ValorLiquido": 0,
    "ValorBruto": 0,
    "ValorAcrescimo": 0,
    "DescontoTotalValor": 0,
    "ValorResgate": 0,
    "CupomDesconto": "string",
	"QuantidadeTotalItens": 0,     
    "FormasDePagamento": [
      {
        "Id": 1,
        "ValorPago": 0
      }
    ],     
    "Cpf": "string",
    "Vendedor": {
      "Id": 0,
      "Nome": "string"
    },
    "DataHora": "2024-12-12T12:55:46.129Z",
    "Itens": [
      {
        "Ordem": 0,
        "Codigo": 0,
        "Ean": "string",
        "Produto": "string",
        "QuantidadeTotal": 0,
        "ValorLiquido": 0,
        "ValorBruto": 0,
        "ValorDesconto": 0,
        "ValorAcrescimo": 0,
        "ValorUnitario": 0       
      }
    ]
  }
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
ValorLiquidoDecimal
ValorBrutoDecimal
ValorAcrescimoDecimal
DescontoTotalValorDecimal
ValorResgateDecimal
CupomDescontoString
QuantidadeTotalItensInteiro
FormasPagamentoInteiro
CpfInteiro
IdInteiro
NomeString
DataHoraString
OrdemInteiro
CodigoInteiro
EanString
ProdutoString
QuantidadeTotalInteiro
ValorLiquidoDecimal
ValorBrutoDecimal
ValorDescontoDecimal

Em relação ao parâmetro FormasPagamento, há diversas configurações de atributos disponíveis para utilização, contendo um número e uma descrição. Os atributos referentes a esse parâmetro são:

NúmeroDescrição
01Dinheiro
02Cheque 
03Cartão de Crédito
04Cartão de Débito
05Cartão da Loja (Private Label), Crediário Digital, Outros Crediários
10Vale Alimentação
11Vale Refeição
12Vale Presente
13Vale Combustível
14Duplicata Mercantil
15Boleto Bancário
16Depósito Bancário
17Pagamento Instantâneo (PIX) - Dinâmico
18Transferência bancária, Carteira Digital
19Programa de fidelidade, Cashback, Crédito Virtual
20Pagamento Instantâneo (PIX) - Estático
21Crédito em Loja 
22Pagamento Eletrônico não Informado - falha de hardware do sistema emissor
90Sem Pagamento
99Outros
Response
{
  "IdentificadorTransacao": "string",
  "Campanhas": [
    {
      "Id": 0,
      "Descricao": "string",
      "TextoComplementar": "string",
      "ValorDesconto": 0,
      "DataInicio": "2024-12-12T12:56:02.198Z",
      "DataFinal": "2024-12-12T12:56:02.198Z"
    }
  ],
  "HabilitaBotaoNaoBonificar": false
}
ParâmetroTipoValorObrigatoriedade
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CampanhasObjeto
Obrigatório
HabilitaBotaoNaoBonificarBooleano
Obrigatório

Nota

  • Caso não queira enviar campanhas, deixar propriedade vazia ([]).
  • Por padrão, a tela sempre será iniciada com a primeira campanha selecionada.
  • Conforme o valor enviado na propridade 'HabilitaBotaoNaoBonificar', na tela ficará disponível o botão "Não Bonificar" (localizado ao lado do botão "Finalizar"). 
    • Portanto se o valor enviado for:
      • Verdadeiro (true): O vendedor poderá decidir se irá bonificar ou não.
      • Falso (false): Se houver campanhas, o vendedor sempre irá escolher uma campanha obrigatoriamente.
  • As propriedades abaixo só serão obrigatórias se "Campanhas" não for vazio.
    • ParâmetroTipoValorObrigatoriedade
      IdInteiro
      Obrigatório
      DescricaoString
      Obrigatório
      ValorDescontoDecimal
      Obrigatório
      DataInicioString
      Obrigatório
      DataFinalString
      Obrigatório
      TextoComplementarString

Request - POST
{
  "IdentificadorTransacao": "string",
  "Cpf": "string",
  "VendaValorLiquido": 0,
  "ValorResgatado": 0
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CpfString
VendaValorLiquidoDecimal
ValorResgatadoDecimal
Response
{
  "IdentificadorTransacao": "string"
}

A propriedade "VendaValorLiquido" refere-se ao total líquido da venda, o mesmo enviado nas rotas "ConsultarCampanha" e "GerarBonus" no objeto "Venda", na propriedade "ValorLiquido"

Esta rota sempre será executada no fluxo de venda do Hub, mesmo que não tenha sido gerado bônus.

Request - POST
{
  "IdentificadorTransacao": "string",
  "Venda": {
    "Cpf": "string",
    "Vendedor": {
      "Id": 0,
      "Nome": "string"
    },
    "DataHora": "2024-12-12T12:56:54.891Z",
    "ValorLiquido": 0,
    "ValorBruto": 0,
    "DocumentoNF": "string",
    "SerieNF": "string",
    "DescontoTotalValor": 0,
    "ValorResgate": 0,
    "CupomDesconto": "string",
	"QuantidadeTotalItens": 0,      
    "FormasDePagamento": [
      {
        "Id": 1,
        "ValorPago": 0
      }
    ],          
    "Itens": [
      {
        "ValorAcrescimo": 0,
        "ValorUnitario": 0,
        "Ordem": 0,
        "Codigo": 0,
        "Ean": "string",
        "Produto": "string",
        "QuantidadeTotal": 0,
        "ValorLiquido": 0,
        "ValorBruto": 0,
        "ValorDesconto": 0
      }
    ]
  },
  "CampanhaId": 0
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CpfString
IdInteiro
NomeString
DataHoraString
ValorLiquidoDecimal
ValorBrutoDecimal
DocumentoNFString
SerieNFString
DescontoTotalValorDecimal
ValorResgateDecimal
CupomDescontoString
QuantidadeTotalItensInteiro
FormasPagamentoInteiro
ValorAcrescimoDecimal
ValorUnitarioDecimal
OrdemInteiro
CodigoInteiro
EanString
ProdutoString
QuantidadeTotalInteiro
ValorLiquidoDecimal
ValorBrutoDecimal
ValorDescontoDecimal
CampanhaIdInteiroEste campo poderá ser nulo

Em relação ao parâmetro FormasPagamento, há diversas configurações de atributos disponíveis para utilização, contendo um número e uma descrição. Os atributos referentes a esse parâmetro são:

NúmeroDescrição
01Dinheiro
02Cheque 
03Cartão de Crédito
04Cartão de Débito
05Cartão da Loja (Private Label), Crediário Digital, Outros Crediários
10Vale Alimentação
11Vale Refeição
12Vale Presente
13Vale Combustível
14Duplicata Mercantil
15Boleto Bancário
16Depósito Bancário
17Pagamento Instantâneo (PIX) - Dinâmico
18Transferência bancária, Carteira Digital
19Programa de fidelidade, Cashback, Crédito Virtual
20Pagamento Instantâneo (PIX) - Estático
21Crédito em Loja 
22Pagamento Eletrônico não Informado - falha de hardware do sistema emissor
90Sem Pagamento
99Outros
Response
{
  "IdentificadorTransacao": "string",
  "SaldoBonusGeradoVenda": 0,
  "SaldoBonusAtual": 0,
   "MensagemComplementar": "string"
 }
ParâmetroTipoValorObrigatoriedade
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
SaldoBonusGeradoVendaDecimal
Obrigatório
SaldoBonusAtualDecimal
Obrigatório
MensagemComplementarString

Em caso de não haver bonificação na venda, o retorno dos parâmetros "SaldoBonusGeradoVenda" e "SaldoBonusAtual", o retorno do valor deverá ser 0. Portanto, irá retornar o response, contudo com as propriedades citadas zeradas.

Request - POST
{
  "IdentificadorTransacao": "string", 
  "DocumentoNF": "string",
  "SerieNF": "string",
  "Cpf": "string"
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
DocumentoNFString
SerieNFString
CpfString
Response
{
  "IdentificadorTransacao": "string",
  "ValorEstornadoUtilizado": 0,
  "ValorEstornadoGerado": 0, 
  "SaldoBonusAtual": 0,
  "MensagemComplementar": "string",
  "DataHora": "2024-12-12T12:56:33.328Z"
}
ParâmetroTipoValorObrigatoriedade
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
ValorEstornadoUtilizado Decimal
Obrigatório
ValorEstornadoGeradoDecimal
Obrigatório
SaldoBonusAtualDecimal
Obrigatório
MensagemComplementarString

DataHoraString
Obrigatório

Para todas as rotas da API, ao retornar um erro de regra de negócio (HTTP 400 - Bad Request), a resposta deve seguir a estrutura abaixo:

Response
{
  "IdentificadorTransacao": "string",
  "Codigo": 0,
  "Mensagem": "string"
}
ParâmetroTipoValor
IdentificadorTransacaoStringGUID único para rastreamento da transação. Exemplo: 3F2504E0-4F89-41D3-9A0C-0305E82C3301
CódigoString
MensagemString
Testes e Mockup

Objetivo


A controller VendasMock foi criada para simular os endpoints de comunicação externa, permitindo que o time de QA realize testes sem dependência de integrações reais com sistemas de parceiros. Ela reproduz os mesmos métodos da comunicação real, porém retorna dados mockados.


Endpoints


Cada endpoint da VendasMock representa uma operação de venda (ex: AtualizarCliente, ConsultarSaldoCliente, etc), e retorna dados mockados com estrutura semelhante à da comunicação externa.

  • Request (opcional): Representa os dados enviados na chamada simulada ao sistema externo.
  • Response (opcional): Simula o retorno da comunicação externa.
  • Header (opcional): Simula os headers utilizados na comunicação, como:
    • Cnpj
    • TokenProduto
    • TokenParceiro
    • IdParceiro


Exemplo de estrutura de response para o endpoint AtualizarCliente:

{
	"Request": "string", 
    "Response": "string", 
    "Header": "string", 
    "SaldoAtual": 0,
    "SaldoDisponivel": 0,
    "UtilizaPin": true, 
    "TipoPin": 0, 
    "ClienteCadastrado": true
}


Para realizar um mock válido, basta preencher os campos:

{
   "SaldoAtual": 0,
   "SaldoDisponivel": 0, 
   "UtilizaPin": true, 
   "TipoPin": 0, 
   "ClienteCadastrado": true
}


Estrutura de Armazenamento


Os dados mockados são armazenados em duas tabelas:


arquivo_blob


Armazena o contexto geral da simulação (como se fosse uma "venda"). Campos:

  • id_arquivo_blob
  • identificador_operacao


arquivo_blob_item


Armazena os "passos" ou etapas da venda (cada chamada de endpoint mock). Campos principais:

  • id_arquivo_blob_item_tipo: define o tipo de operação mockada (ex: Mock AtualizaCliente)
  • url: link do JSON
  • descricao: nome (ex: "Atualizar Cliente.json")

Importante:
O sistema sempre considera o primeiro registro da tabela arquivo_blob para agrupar os mocks da simulação.
Se já existir um mock (registro em arquivo_blob_item) para aquele endpoint, será feito um update.
Se não existir, será feito um insert.


Forçar Tipo de Retorno (tipoRetornoMock)


Importante: O valor informado no parâmetro tipoRetornoMock nesta controller (VendasMock) será refletido posteriormente na controller real de Venda. Aqui, ele apenas registra e armazena essa informação para posterior uso, não executando diretamente o fluxo final.

Nos endpoints da controller VendasMock, é possível forçar um tipo específico de retorno usando o parâmetro tipoRetornoMock na query string:

Valor Significado
0Sucesso (default)
1Erro de Exceção
2Erro de Validação

Obs.: O tipo 0 (sucesso) só será retornado se todo o fluxo estiver completo. Os demais tipos simulam falhas específicas.


Tipos de Mock Suportados


Utilizamos apenas os tipos de arquivo_blob_item_tipo relacionados a mocks.

Exemplos:

IDDescrição
11Mock AtualizaCliente
12Mock ConsultaSaldoCliente
13Mock SolicitaPin
14Mock ValidaPin
15Mock ConsultarCampanha
16Mock ValidarBonus
17Mock GerarBonus
18Mock EstornarBonus


Considerações Finais


O processo de simulação permite rastrear todos os passos da comunicação, com histórico armazenado no banco.

Os arquivos são salvos em blob storage, e a URL pode ser consultada na coluna url da tabela arquivo_blob_item.


  • Sem rótulos