Ir para o conteúdo

Referência

Autenticação

A Fieldy CONNECT utiliza basic access authentication para a autenticação de usuários.

O processo de autenticação ocorre da seguinte forma:

Chave de Acesso

Pode-se gerar a Chave de Acesso usando bibliotecas específicas, ou realizar uma requisição POST /Login, e no corpo da requisição enviar um objeto JSON no seguinte formato:

{ 
    "username": "nomeDoUsuario",
    "password": "senha"
}

Caso os dados enviados sejam válidos, o servidor retornará uma resposta no seguinte padrão:

{
    "Autenticado": true,
    "Usuario": "nomeDoUsuario",
    "ChaveAcesso": "Basic <Crendencial>"
}
A string ChaveAcesso é o Token que deverá ser usado para a autenticação das requisições.

Em caso de erro de autenticação, o servidor retornará a seguinte resposta:

{
    "Autenticado": false,
    "Erro": "Usuário, Senha ou Holding Inválidos"
}

Caso o formato esteja incorreto, o servidor fornecerá o seguinte erro:

{
    "Autenticado": false,
    "Erro": "É necessário fornecer um Usuário e uma Senha"
}

Requisições

Para realizar uma requisição, o usuário deve fornecer a Chave de Acesso JWT no Cabeçalho da requisição HTTP:

GET /v1/<Holding>/Cliente

Authorization: Basic <Crendencial> 

À partir deste cabeçalho, o servidor verificará se o usuário possui as permissões de acesso adequadas.

Caso o usuário possua permissões de acesso, a requisição será processada e a carga sera retornada ao cliente.

Caso o usuário não tenha as permissões de acesso necessárias para se executar a requisição desejada, será fornecida a seguinte mensagem:

{
    "Erro": "Usuário não possui permissão de acesso suficiente"
}


Se a requisição não possuir este cabeçalho, o servidor retornará a seguinte mensagem:

{
    "Erro": "Nenhuma Chave de Acesso fornecida"
}


Caso o Token JWT enviado seja inválido, o servidor retornará o seguinte erro:

{
    "Erro": "Falha ao decodificar Chave de Acesso."
}


Consultas

A Fieldy CONNECT oferece consulta em Banco de Dados com condicionais, ordenação, limites, seleção de campos.

É possível também realizar inserção, deleção e atualização de entradas.

Filtros

A Fieldy CONNECT fornece diversos filtros, que permitem a flexibilização das pesquisas na Base de Dados.


Igualdade

Todos os campos que não possuem parâmetros especiais, são tratados como igualdades.

Exemplos:

  • Listar todos os equipamentos da operadora Claro:
GET /v1/<Holding>/Equipamento?smartphoneOperadora=Claro

Equivalente em SQL:

SELECT * 
FROM   [Equipamento] 
WHERE  [SmartphoneOperadora] = 'Claro' 


  • Listar todos os clientes do centro de São Paulo:
GET /v1/<Holding>/ClienteEndereco?bairro=Centro&cidade=São Paulo

Equivalente em SQL:

SELECT * 
FROM   [ClienteEndereco] 
WHERE  [bairro] = 'Centro' 
       AND [cidade] = 'São Paulo' 


Observações:

  • Caso seja enviado mais de um argumento, estes serão agrupados pelo conectivo AND

Ordenar ($sort)

Ordena os resultados de acordo com uma coluna. A ordenação pode ser em ordem crescente ($sort[campo] = 1) ou descrescente ($sort[campo] = -1)

Exemplos:

  • Listar os clientes em ordem alfabética:
GET /v1/<Holding>/Cliente?$sort[nomeFantasia]=1

Equivalente em SQL:

SELECT * 
FROM   [Cliente] 
ORDER  BY [nomeFantasia] asc 


  • Listar os últimos pedidos realizados:
GET /v1/<Holding>/Pedido?$sort[dataEmissao]=-1

Equivalente em SQL:

SELECT * 
FROM   [Pedido] 
ORDER  BY [dataEmissao] desc 

Seleção de Campos ($select)

Lista somente os campos desejados de um objeto.

Exemplos:

  • Listar somente o Nome Fantasia dos clientes:
GET /v1/<Holding>/Cliente?$select[]=nomeFantasia

Equivalente em SQL:

SELECT [nomeFantasia] 
FROM   [Cliente] 


  • Listar Marca e Modelo dos Equipamentos:
GET /v1/<Holding>/Equipamento?$select[]=smartphoneMarca,smartphoneModelo

Equivalente em SQL:

SELECT [smartphoneMarca], 
       [smartphoneModelo] 
FROM   [Equipamento] 

Limite ($limit)

Limitar ou aumentar a quantidade de entradas enviadas em uma única requisição GET.

Exemplos:

  • Listar as primeiras três opções de um MenuPadrao:
GET /v1/<Holding>/MenuPadraoFuncionalidade?idMenuPadrao=1&$sort[posicaoMenu]=1&$limit=3

Equivalente em SQL:

SELECT TOP(3) * 
FROM   [MenuPadraoFuncionalidade] 
WHERE  [idMenuPadrao] = 1 
ORDER  BY [posicaoMenu] ASC 


  • Listar o último cliente cadastrado:
GET /v1/<Holding>/Cliente?$sort[dataCadastro]=-1&$limit=1

Equivalente em SQL:

SELECT TOP(1) * 
FROM   [Cliente] 
ORDER  BY [dataCadastro] desc 

Omitir ($skip)

Omite as primeiras entradas de uma requisição.

Exemplos:

  • Paginar entre os clientes, de 50 em 50:

Página 1

GET /v1/<Holding>/Cliente?$limit=50&$skip=0

Página 2

GET /v1/<Holding>/Cliente?$limit=50&$skip=50

Página 3

GET /v1/<Holding>/Cliente?$limit=50&$skip=100


Equivalente em SQL:

SELECT TOP(50) [Cliente].*, 
               [q1].[NumeroLinha] 
FROM   [Cliente], 
       (SELECT *, 
               ROW_NUMBER() OVER (ORDER BY [idCliente]) AS NumeroLinha 
        FROM   [Cliente]) AS [q1] 
WHERE  [q1].[NumeroLinha] > 50 
       AND [q1].[idCliente] = [Cliente].[idCliente] 

Seleções

Lista todas as entradas cujos valores de uma coluna seja de acordo com valores específicos.

Exemplos:

  • Listar todos os Pedidos com CFOP igual a "5656" ou "5102":
GET /v1/<Holding>/Pedido?idCFOP[$in]=5656&idCFOP[$in]=5102

Equivalente em SQL:

SELECT * 
FROM   [Pedido] 
WHERE  [idCFOP] IN ( '5656', '5102' ) 


  • Listar todos os Equipamentos com sincronismo diferente de 1 ou 2:
GET /v1/<Holding>/Equipamento?sincronismo[$nin]=1&sincronismo[$nin]=2

Equivalente em SQL:

SELECT * 
FROM   [Equipamento] 
WHERE  [sincronismo] NOT IN ( 1, 2 ) 


  • Listar todos os Clientes cadastrados após 00h00 de 01/01/2018:
GET /v1/<Holding>/Cliente?dataCadastro[$gt]=2018-01-01T00:00:00.000Z&$sort[dataCadastro]=1

Equivalente em SQL:

SELECT   * 
FROM     [Cliente] 
WHERE    [dataCadastro] > 2018-01-01T00:00:00.000z 
ORDER BY [dataCadastro] ASC


  • Listar todos os Produtos com estoque menor ou igual a 10:
GET /v1/<Holding>/ProdutoEstoque?estoque[$lte]=10

Equivalente em SQL:

SELECT * 
FROM   [ProdutoEstoque] 
WHERE  [estoque] <= 10 


Lista de Seletores:
  • $in ou $nin: Entradas que pertencem ($in) ou não ($nin) a uma lista de valores
  • $ne: Entradas diferentes de um dado valor
  • $gt ou $gte: Entradas maiores ($gt), ou maiores ou iguais ($gte) a um dado valor
  • $lt ou $lte: Entradas menores ($lt), ou menores ou iguais ($lte) a um dado valor