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>"
}
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