Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Totvs custom tabs box
tabsPré-requisitos,Instalação,Configuração,Utilização
idsprerequisitos,instalacao,configuracao,utilizacao
Totvs custom tabs box items
defaultyes
referenciaprerequisitos

Para implantação da API OAuth2 é necessário:

  1. Sistema operacional 64 bits compatível (Linux/Microsoft Windows);
  2. Servidor web Apache 64 bits versão 2.4 (versão homologada: 2.4.47 e superiores);
  3. Servidor Redis versão 3.2 (versão homologada: 3.2.100 e superiores)
  4. 512 MB de memória RAM (mínimo);
  5. Processador 1,6 GHz (mínimo) e;
  6. 25 MB de espaço disponível em disco.
Totvs custom tabs box items
defaultno
referenciainstalacao
Totvs custom tabs box
tabsLinux,Microsoft Windows
idslinux,windows
Totvs custom tabs box items
defaultyes
referencialinux

A instalação da API em sistemas operacionais Linux depende, em todos os casos, da distribuição adotada. Em distribuições baseadas na distribuição Ubuntu, é necessário disponibilizar a API no diretório /usr/lib/apache2/modules. Além disso, é necessário criar os arquivos littera_v1.loadlittera_v1.conf no diretório /etc/apache2/mods-available.

O conteúdo do arquivo littera_v1.load é:

Bloco de código
titleArquivo littera_v1.load
LoadModule littera_module_v1 modules/mod_littera_v1.so

Já o conteúdo do arquivo littera_v1.conf é:

Bloco de código
titleArquivo littera_v1.conf
<IfModule littera_module_v1>
  <Location /api/tlra/littera/v1>
    SetHandler mod_littera_v1-handler
  </Location>
</IfModule>

Configuradas as opções de carregamento da API através do servidor web Apache, é necessário criar o arquivo de configuração da API em /etc/littera_v1/database.conf conforme indicado abaixo:

Bloco de código
# Este é o arquivo de configuração da API de autenticação OAuth2 do 
# ecossistema Recintos Aduaneiros. Assim como o arquivo de configuração
# do Apache, as configurações aqui seguem o padrão "chave valor",
# sendo assim, tanto chaves quanto valores contém uma única palavra.
#
# Comentários podem ser feitos adicionando o símbolo # como primeiro
# caractere da linha. Isso também pode ser utilizado para desativar
# configurações.

# Definições de acesso ao banco de dados 
#
# DriverID: Driver utilizado para a conexão com o banco de dados
# Server: Nome do servidor onde a instância do banco de dados está instalada
# Port: Porta pela qual o banco de dados pode ser acessado
# Name: Nome do banco de dados a ser acessado
# User: Nome do usuário de acesso ao banco de dados
# Password: Senha usada pelo usuário para acesso ao banco de dados (criptografada)
# Charset: Conjunto de caracteres utilizado pelo banco de dados

CharSet=UTF8
DriverID=PG
Database=littera
Hostname=localhost
Password=tlra@2024
Port=5432
Username=postgres

Com as configurações efetivadas, é necessário ativar o módulo da API através do comando abaixo:

sudo a2enmod littera_v1

E reiniciar o servidor web Apache através do comando abaixo:

$ sudo service apache2 restart

Totvs custom tabs box items
defaultno
referenciawindows

Para implantação da API em servidores com sistema operacional Microsoft Windows é necessário disponibilizar seu módulo no diretório de módulos da instalação do servidor web Apache. Após a disponibilização do arquivo, é necessário editar o arquivo httpd.conf constante na instalação do servidor web Apache, acrescentando as linhas a seguir:

Bloco de código
LoadModule littera_module_v1 modules/mod_littera_v1.so

<IfModule littera_module_v1>
  <Location /api/tlra/littera/v1>
    SetHandler mod_littera_v1-handler
  </Location>
</IfModule>

Como parte da configuração da API, é necessário criar seu arquivo de configuração em C:\TOTVS\etc\littera_v1\database.conf com o conteúdo abaixo:

Bloco de código
# Este é o arquivo de configuração da API de autenticação OAuth2 do 
# ecossistema Recintos Aduaneiros. Assim como o arquivo de configuração
# do Apache, as configurações aqui seguem o padrão "chave valor",
# sendo assim, tanto chaves quanto valores contém uma única palavra.
#
# Comentários podem ser feitos adicionando o símbolo # como primeiro
# caractere da linha. Isso também pode ser utilizado para desativar
# configurações.

# Definições de acesso ao banco de dados 
#
# DriverID: Driver utilizado para a conexão com o banco de dados
# Server: Nome do servidor onde a instância do banco de dados está instalada
# Port: Porta pela qual o banco de dados pode ser acessado
# Name: Nome do banco de dados a ser acessado
# User: Nome do usuário de acesso ao banco de dados
# Password: Senha usada pelo usuário para acesso ao banco de dados (criptografada)
# Charset: Conjunto de caracteres utilizado pelo banco de dados

CharSet=UTF8
DriverID=PG
Database=littera
Hostname=localhost
Password=tlra@2024
Port=5432
Username=postgres

Tendo efetivado a construção do arquivo de configuração da API, é necessário reiniciar o servidor web Apache através de seu gestor de serviços ou o gestor de serviços do sistema operacional.

Totvs custom tabs box items
defaultno
referenciaconfiguracao

Para configuração da API de integração, é necessário editar o arquivo de configuração database.conf definindo seus parâmetros conforme abaixo:

ConjuntoParâmetroDescriçãoValor padrãoFormatoStatus
Banco de dadosCharSetConjunto de caracteres utilizado pelo banco de dados.UTF8NenhumImplementado
Banco de dadosDriverIDIdentificador do tipo de conexão com o banco de dados.PGNenhumImplementado
Banco de dadosDatabaseNome do banco de dados a ser conectado.litteraNenhumImplementado
Banco de dadosHostnameNome do servidor e instância de instalação do banco de dados.localhostHostname/IPv4/IPv6Implementado
Banco de dadosPasswordSenha do usuário de acesso ao banco de dados.tlra@2024NenhumImplementado
Banco de dadosPortPorta de conexão com o banco de dados.54321~65535Implementado
Banco de dadosUsernameNome do usuário de conexão com o banco de dados.postgresNenhumImplementado

É importante notar que entre os parâmetros e seus valores deve haver apenas um sinal de igualdade "=". Se esta regra não for obedecida, a configuração adotará o valor padrão por considerar inválida a opção.

Totvs custom tabs box items
defaultno
referenciautilizacao
Totvs custom tabs box
tabsAutenticação,Consumo
idsautenticacao,consumo
Totvs custom tabs box items
defaultyes
referenciaautenticacao
Totvs custom tabs box
tabsLogon,Renovação
idslogon,renovacao
Totvs custom tabs box items
defaultyes
referencialogon

Para efetivar a autenticação do usuário junto à API de integração, a aplicação cliente deve, considerando o endereço de instalação da API como localhost, operando em suas portas padrão (80443):

  1. Utilizar o verbo POST para a solicitação;
  2. Definir o Content Type da requisição como application/x-www-form-urlencoded;
  3. Adicionar ao corpo da requisição os campos:
    1. grant_type com valor password;
    2. username com o valor referente ao nome do usuário utilizado para o logon e;
    3. password com o valor referente à senha deste usuário;
  4. Enviar a requisição para o endpoint https://localhost/api/tlra/littera/v1/auth.

Como resultado de sucesso, a API devolverá um objeto JSON como o demonstrado abaixo:

Bloco de código
languagejs
titleResposta para sucesso na autenticação
{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJFeHBlZGlcdTAwRTdcdTAwRTNvIGRlIHBhY290ZXMiLCJleHAiOjE3MTQ1MDQyMjIsImlhdCI6MTcxNDI0NTAyMiwiaXNzIjoiTGl0dGVyYSIsInN1YiI6IjAxMjM0NTY3LTg5YWItY2RlZi0wMTIzLTQ1Njc4OWFiY2RlZiIsIm5ubSI6IkFkbWluaXN0cmFkb3IiLCJuYW0iOiJVc3VcdTAwRTFyaW8gQWRtaW5pc3RyYWRvciJ9.5dWQ0BJHaa9piHP6yoPv57VqI_dO66_MIr7fWt-SYVI",
    "expires_in": 259200,
    "token_type": "Basic",
    "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTQ1MDUxMjIsImlzcyI6IkxpdHRlcmEiLCJuYmYiOjE3MTQ1MDM5MjIsInN1YiI6ImFkbWluIn0.xB79G_B6RsnBg_wzDDN-XFRdMzLoY7wAXP2o2Pv1Y4I"
}

Em caso de falha na autenticação, a API retornará um erro 401 - Unauthorized.

Totvs custom tabs box items
defaultno
referenciarenovacao

Para renovar a autenticação do usuário junto à API de integração, a aplicação cliente deve, considerando o endereço de instalação da API como localhost, operando em suas portas padrão (80443):

  1. Utilizar o verbo POST para a solicitação;
  2. Definir o Content Type da requisição como application/x-www-form-urlencoded;
  3. Adicionar ao corpo da requisição os campos:
    1. grant_type com valor refresh_token e;
    2. refresh_token com o valor referente ao token de renovação de autenticação obtido durante o processo de autenticação;
  4. Enviar a requisição para o endpoint https://localhost/api/tlra/littera/v1/auth.

Como resultado de sucesso, a API devolverá um objeto JSON como o demonstrado abaixo:

Bloco de código
languagejs
titleResposta para sucesso na renovação
{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJFeHBlZGlcdTAwRTdcdTAwRTNvIGRlIHBhY290ZXMiLCJleHAiOjE3MTQ1MDQyMjIsImlhdCI6MTcxNDI0NTAyMiwiaXNzIjoiTGl0dGVyYSIsInN1YiI6IjAxMjM0NTY3LTg5YWItY2RlZi0wMTIzLTQ1Njc4OWFiY2RlZiIsIm5ubSI6IkFkbWluaXN0cmFkb3IiLCJuYW0iOiJVc3VcdTAwRTFyaW8gQWRtaW5pc3RyYWRvciJ9.5dWQ0BJHaa9piHP6yoPv57VqI_dO66_MIr7fWt-SYVI",
    "expires_in": 259200,
    "token_type": "Basic",
    "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTQ1MDUxMjIsImlzcyI6IkxpdHRlcmEiLCJuYmYiOjE3MTQ1MDM5MjIsInN1YiI6ImFkbWluIn0.xB79G_B6RsnBg_wzDDN-XFRdMzLoY7wAXP2o2Pv1Y4I"
}

Em caso de falha na verificação de validade do token fornecido, a API retornará um erro 401 - Unauthorized.

Totvs custom tabs box items
defaultno
referenciaconsumo
Totvs custom tabs box
tabsConsulta,Inclusão,Alteração,Exclusão
idsconsulta,inclusao,alteracao,exclusao
Totvs custom tabs box items
defaultyes
referenciaconsulta

As consultas aos objetos armazenados na base de dados do projeto Littera podem ser efetivadas de duas formas diferentes: por meio de seu identificado único ou por meio de parâmetros fornecidos na Query String adicionada à URL da requisição. Para tanto, a aplicação cliente deve, considerando o endereço de instalação da API como localhost, operando em suas portas padrão (80443):

  1. Utilizar o verbo GET para a requisição;
  2. Adicionar o cabeçalho Authorization aos cabeçalhos da requisição, contendo como valor "Basic " - sem aspas -, sucedido do valor de token obtido por meio do processo de autenticação, devendo este estar dentro de sua validade e;
  3. Utilizar a URL https://localhost/api/tlra/littera/v1/{className} como base para a requisição, onde className refere-se ao nome do objeto a ser consultado, podendo:
    1. Não acrescentar qualquer parâmetro à URL, efetuando uma pesquisa genérica que trará os primeiros 25 registros ativos daquele objeto, ordenados por sua descrição;
    2. Adicionar um identificador único à URL, retornando o objeto completo caso o identificador seja encontrado e;
    3. Adicionar uma Query String à URL, podendo esta conter os campos page, pageSizeactivefilter.

Os campos page, pageSize e active são valores escaláveis, podendo ser descritos conforme a seguinte tabela:

CampoTipo de dadoValores aceitosValor padrãoUso
pageInteiro1~1Determina o número da "página de dados a ser acessada. Se não fornecido, seu valor é 1.
pageSizeInteiro1~5025Determina o número de registros por página a serem exibidos. Se não fornecido, seu valor padrão é 25, tendo seu valor máximo como 50.
activeTextotrue/false/alltrue

Determina qual flag de status deve ser considerada na busca, referindo-se ao campo active, sendo true para os registros ativos, false para os registros inativos e all para todos os registros.

O campo filter é um campo especial, onde a aplicação cliente pode determinar quais critérios podem fazer parte da consulta. Ele pode conter expressões e operadores para estas expressões e estes comporão o filtro a ser repassado à API para que esta realize a pesquisa conforme os critérios descritos nas expressões. Sendo assim, qualquer filtro pode ser compostos, composto partindo-se de dois atributos básico -   descriptionattributes - representando, respectivamente, a descrição e os atributos do objeto registrados na base de dados. Sendo assimEntão, uma consulta válida utilizando filtros personalizados seria:

https://localhost/api/tlra/littera/v1/request?filter="attributes->>'issuer'='01234567-89ab-cdef-0123-456789abcdef' and attributes->>'status' in ('QUEUED','FINISHED')"

É importante notar que as expressões constantes no campo filter devem, obrigatoriamente, estar entre aspas duplas, enquanto as strings descritivas devem estar entre aspas simples. Além disso, as expressões serão sempre compostas por um valor a ser consultado, um operador lógico e um valor de referência, podendo ser concatenadas por meio de operadores lógicos e agrupadas por meio de parentização. Sendo assimPor fim, a tabela abaixo descreve os operadores utilizados, seus tipos e exemplos de uso:

Tipo do operadorUsoOperadorDescriçãoExemplo
LógicoComparação=Determina a igualdade entre dois termos.a = b
LógicoComparação>Determina se o valor à esquerda é maior que o valor à direita.a > b
LógicoComparação<Determina se o valor à esquerda é menor que o valor à direita.a < b
LogicoComparação>=Determina se o valor à esquerda é maior ou igual ao valor à direita.a >= b
LógicoComparação<=Determina se o valor à esquerda é menor ou igual ao valor à direita.a <= b
LógicoComparação<>Determina se o valor à esquerda é diferente do valor à direita.a <> b
LógicoComparaçãoinDetermina se o valor à esquerda está contido em um determinado conjunto de valores.'a' in ('a', 'b', 'c')
LógicoComparaçãolikeDetermina se o valor à direita contêm o valor à esquerda (apenas texto) utilizando o wildcard *.a like '*nome*'
LógicoAtribuiçãonotInverte o valor retornado pelo operador à sua direita.a not like '*nome*'
LógicoConcatenaçãoandConcatena duas expressões por multiplicação lógica.a = b and c = d
LógicoConcatenaçãoorConcatena duas expressões por soma lógica.a = b or c = d
TextualConcatenação||Concatena dois valores do tipo texto.'a' || 'b'
ObjetosAcesso->Acessa um nó de um objeto JSON, retornando seu resultado como um valor JSON.a->'b'
ObjetosAcesso->>Acessa um nó de um objeto JSON, retornando seu resultado como um valor texto.a->>'b'
ObjetosAcesso_>>Acessa um caminho através do objeto JSON, retornando seu resultado como um valor texto.a_>>'{a,b,c,d}'
ObjetosAcesso<<-Verifica se o valor à direita está contido em um JSON Array.'a'<<-array['a', 'b', 'c']

Assim como o campo filter, o campo order também é um campo especial. Nele, a ordem de exibição dos valores pode ser determinada partindo-se dos atributos id, created_at, updated_at, active, descriptionattributes. Contudo, ao contrário do campo filter, o campo order requer apenas os nomes dos atributos determinantes na ordenação, seguidos ou não dos modificadores asc e desc - que indicam ascendência e descendência, respectivamente - e separados por vírgula. Então, uma forma válida de alterar a ordem de exibição dos registros seria:

https://localhost/api/tlra/littera/v1/repository?order="updated_at desc, attributes->>'name'"
 

Totvs custom tabs box items
defaultno
referenciainclusao

Para a inclusão de um novo objeto na base de dados do projeto Littera, por meio de sua API de integração, a aplicação cliente deve, considerando o endereço de instalação da API como localhost, operando em suas portas padrão (80443):

  1. Utilizar o verbo POST para a requisição;
  2. Adicionar o cabeçalho Authorization aos cabeçalhos da requisição, contendo como valor "Basic " - sem aspas -, sucedido do valor de token obtido por meio do processo de autenticação, devendo este estar dentro de sua validade;
  3. Utilizar a URL https://localhost/api/tlra/littera/v1/{className} como base para a requisição, onde className refere-se ao nome do objeto a ser incluído e;
  4. Atribuir ao corpo da requisição um objeto JSON contendo:
    1. Um nó chamado description referente à descrição pela qual o objeto será identificado e;
    2. Um nó chamado attributes contendo o objeto em si, devendo conter todas as propriedades requeridas pelo objeto a ser inserido.

Em caso de sucesso na inclusão, a API retornará um objeto JSON contendo o identificador único do objeto adicionado à sua base de dados, juntamente com o código de status 201 - Created. Em caso de falha por inconsistência do corpo da requisição, a API retornará uma mensagem 422Unprocessable entity. Em caso de falha na autorização para execução da inclusão, a API retornará uma mensagem 401Unauthorized.

Totvs custom tabs box items
defaultno
referenciaalteracao

Para a alteração de um objeto na base de dados do projeto Littera, por meio de sua API de integração, a aplicação cliente deve, considerando o endereço de instalação da API como localhost, operando em suas portas padrão (80443):

  1. Utilizar o verbo PUT para a requisição;
  2. Adicionar o cabeçalho Authorization aos cabeçalhos da requisição, contendo como valor "Basic " - sem aspas -, sucedido do valor de token obtido por meio do processo de autenticação, devendo este estar dentro de sua validade;
  3. Utilizar a URL https://localhost/api/tlra/littera/v1/{className}/{objectId} como base para a requisição, onde className refere-se ao nome do objeto a ser incluído e objectId refere-se ao identificador único do objeto e;
  4. Atribuir ao corpo da requisição um objeto JSON contendo:
    1. Um nó chamado description referente à descrição pela qual o objeto será identificado e;
    2. Um nó chamado attributes contendo o objeto em si, devendo conter todas as propriedades requeridas pelo objeto a ser alterado.

Em caso de sucesso na inclusão, a API retornará uma mensagem 202 - Accepted. Em caso de falha por inconsistência do corpo da requisição, a API retornará uma mensagem 422Unprocessable entity. Em caso de falha na autorização para execução da inclusão, a API retornará uma mensagem 401Unauthorized. Em caso de falha na localização do objeto pela API, ela retornará uma mensagem 404Not found.

Totvs custom tabs box items
defaultno
referenciaexclusao

Para a exclusão de um objeto na base de dados do projeto Littera, por meio de sua API de integração, a aplicação cliente deve, considerando o endereço de instalação da API como localhost, operando em suas portas padrão (80443):

  1. Utilizar o verbo DELETE para a requisição;
  2. Adicionar o cabeçalho Authorization aos cabeçalhos da requisição, contendo como valor "Basic " - sem aspas -, sucedido do valor de token obtido por meio do processo de autenticação, devendo este estar dentro de sua validade e;
  3. Utilizar a URL https://localhost/api/tlra/littera/v1/{className}/{objectId} como base para a requisição, onde className refere-se ao nome do objeto a ser incluído e objectId refere-se ao identificador único do objeto.

Em caso de sucesso na inclusão, a API retornará uma mensagem 204 - No content. Em caso de falha na autorização para execução da inclusão, a API retornará uma mensagem 401Unauthorized. Em caso de falha na localização do objeto pela API, ela retornará uma mensagem 404Not found.

...