Copyright (c) 2007-2019 Open Commnications Security
- Autores:
- Fabio Jun Takada Chino
- Cesar Luiz Ferracin
- Rafael Teixeira
- Augusto Kiramoto
Este documento descreve a interface de aplicação disponibilizada pelo AFTx para outras aplicações. Este documento é especialmente importante para integrações que não utilizam a linguagem Java.
Para usuários do Java, recomenda-se o uso da biblioteca de integração AFTxWebDAVClient que encontra-se neste repositório em:
- /java/AFTxWebDAVClient
Este cliente funciona nas versões 1.x do AFTx e na versão 2.x do AFTx no modo de compatibilidade. Para novas integrações com o AFTx 2.x, é recomendado o uso da nova interface REST implementada por esta versão pois, além de mais completa, é mais fácil de utilizar por ferramentas que possuem integração direta Web Services REST, especialmente se a ferramenta escolhida possuir suporte para o OpenAPI versão 3.0.3.
Este documento destina-se a desenvolvedores de aplicação que possuem conhecimentos sobre o desenvolvimento de aplicações Web e o uso dos protocolos HTTP, HTTPS e WEBDAV.
A comunicação do AFTx com outros sistemas se dá por uma interface WebDAV (RFC4918). Neste caos, os arquivos são listas, baixados e/ou enviados utilizando este padrão.
É importante salientar que esta interface precede a adoção em larga escala dos WebServices REST e por isto não deve ser confundida com a interpretação moderna desta.
Embora bastante similar aos WebServices REST, esta interface WebDAV possui algunas pequenas diferenças de operação que as torna incompatíveis em algunas situações.
É importante salientar que o AFTx normalmente expõe o protocolo HTTPS usando um certificado SSL auto-assinado. Nestes casos, é necessário permitir que o cliente possa a cessar o AFTx aceitando o certificado utilizado.
Por padrão, o AFTx expõe uma conexão HTTPS na porta 8443 usando todos os IPs disponíveis no computador no qual o AFTx está instalado.
Para acessar o serviço é necessário utilizar um usuário e uma senha definida dentro da interface de configuração do AFT/AFTx.
Com exceção das operações de subida de arquivo e remoção de arquivos, todas as demais podem ser simuladas por qualquer navegador de Internet.
Todas as chamadas ao AFTx devem ser autenticadas com um usuário e senha definidos dentro do AFTx. A autenticação é sempre feita utilizando o padrão Basic access authentication definido pelo padrão HTTTP na RFC7617.
Determinadas operações só são permididas para os usuários somente se as seguintes combinações de direitos estiverem configuradas no AFTx:
| Operação | deleteEnabled | getEnabled | logEnabled | putEnabled |
|---|---|---|---|---|
| Listar arquivos da caixa de entrada | - | sim | - | - |
| Baixar arquivos da caixa de entrada | - | sim | - | - |
| Apagar arquivos da caixa de entrada | sim | sim | - | - |
| Subir arquivo na caixa de saída | - | - | - | sim |
| Listar logs | - | - | sim | - |
| Baixar logs | - | - | sim | - |
Por medidas de segurança, o AFTx expõe apenas interfaces para:
- Listar, baixar e apagar arquivos da caixa de entrada;
- Enviar arquivos para a caixa de saída;
- Listar e baixar arquivos de log do AFTx;
A listagem de arquivos da caixa de saída bem com a listagem das caixas disponíveis não podem ser executas por este interface.
Todas as operações seguem o protocolo WebDAV e não devem ser confundidas com operações REST.
A listagem de arquivos da caixa de entrada se dá pela chamada da URL com o verbo GET:
- https://<baseUrl>:<port>/list/<inboxName>
onde:
- <baseUrl>: IP ou nome do servidor;
- <port>: Porta do AFTx;
- <inboxName>: Nome da caixa de entrada;
O código de retorno será 200/OK e o conteúdo da resposta será um XML simples no formato:
<availableFiles>
<file>file1</file>
<file>file2</file>
<file>file3</file>
...
<file>filen</file>
</availableFiles>
$ curl https://<baseUrl>:<port>/list/<inboxName>
A listagem de arquivos da caixa de entrada se dá pela chamada da URL com o verbo GET:
- https://<baseUrl>:<port>/get/<inboxName>/<filename>
onde:
- <baseUrl>: IP ou nome do servidor;
- <port>: Porta do AFTx;
- <inboxName>: Nome da caixa de entrada;
- <filename>: Nome do arquivo a ser baixado;
O código de retorno será 200/OK e o conteúdo da resposta será o conteúdo do arquivo.
$ curl https://<baseUrl>:<port>/get/<inboxName>/<filename>
A listagem de arquivos da caixa de entrada se dá pela chamada da URL com o verbo DELETE:
- https://<baseUrl>:<port>/delete/<inboxName>/<filename>
onde:
- <baseUrl>: IP ou nome do servidor;
- <port>: Porta do AFTx;
- <inboxName>: Nome da caixa de entrada;
- <filename>: Nome do arquivo a ser apagado;
O código de retorno será 204/No Content. Esta chamada não retorna nenhum conteúdo.
É importante notar que os arquivos da caixa de entrada precisam ser apagados pela aplicação. O AFTx não apaga os arquivos automaticamente.
$ curl -X DELETE https://<baseUrl>:<port>/delete/<inboxName>/<filename>
A listagem de arquivos da caixa de entrada se dá pela chamada da URL com o verbo PUT:
- https://<baseUrl>:<port>/put/<outboxName>/<filename>
onde:
- <baseUrl>: IP ou nome do servidor;
- <port>: Porta do AFTx;
- <outboxName>: Nome da caixa de saída;
- <filename>: Nome do arquivo a ser enviado;
Neste caso o conteúdo do corpo da requisição é o conteúdo do arquivo a ser enviado.
O código de retorno será 201/Created. Esta chamada não retorna nenhum conteúdo.
$ curl -t <file-to-upload> https://<baseUrl>:<port>/put/<inboxName>/<filename>
A listagem de arquivos da caixa de entrada se dá pela chamada da URL com o verbo GET:
- https://<baseUrl>:<port>/logs
onde:
- <baseUrl>: IP ou nome do servidor;
- <port>: Porta do AFTx;
O código de retorno será 200/OK e o conteúdo da resposta será um XML simples no formato:
<?xml version="1.0" encoding="UTF-8"?>
<ul>
<li>
<a href="/log/log-name1.xml">log-name1.xml</a>
<a href="/log/log-name2.xml">log-name2.xml</a>
<a href="/log/log-name3.xml">log-name3.xml</a>
</li>
</ul>
$ curl https://<baseUrl>:<port>/logs
A listagem de arquivos da caixa de entrada se dá pela chamada da URL com o verbo GET:
- https://<baseUrl>:<port>/log/<logname>
onde:
- <baseUrl>: IP ou nome do servidor;
- <port>: Porta do AFTx;
- <logname>: Nome do arquivo de log;
O código de retorno será 200/OK e o conteúdo da resposta será o conteúdo do arquivo de log.
$ curl https://<baseUrl>:<port>/log/<logname>
Um exemplo da implementação desta API é a AFTxWebDAVClient que encontra-se neste repositório no diretório:
- /java/AFTxWebDAVClient
A partir da versão 2.1.2 do AFTx, a documentação da API de integração estará disponível por meio do SwaggerUI na própria aplicação na URL padrão da aplicação:
https://<baseUrl>:<port>/
Esta página do SwaggerUI também trás uma descrição mais detalhada das APIs da versão 1.x, reproduzindo o conteúdo deste texto.
