O desenvolvimento de APIs permite a exposição e o consumo de dados com o objetivo da integração front-end (portais, customizações, etc) ao back-end do produto Datasul, de maneira segura e padronizada.
A estrutura de integração de APIs Datasul suporta o envio de requisições no estilo de arquitetura REST com o desenvolvimento da regra de negócio em Progress.
Abaixo o fluxo das requisições via HTTP (DATASUL-REST) e formato de execução via Progress:

Esta funcionalidade está disponível para utilização conforme apresentado no quadro abaixo:
|
Existem 2 contextos definidos que se aplicam tanto para a Antiga arquitetura (Jboss) quanto para o DTS4THF (Tomcat). Estes contextos tem o objetivo de definir o acesso das requisições, ou seja, se são contextos de acessos internos (via menu) pelo contexto DTS/DATASUL-REST ou acessos externos (via APPs por exemplo) pelo contexto /API.
|
O Guia de Implementação de API TOTVS define que no formato das URIs dos endpoints deve conter:
Modelo de acesso aos Contextos:
|
Para "publicar" a funcionalidade Progress ABL basta criar o programa (.p) com o seguinte caminho: fnd/api/v1/users.p (<módulo>/api/<versão API>/<recurso>.p).
A sub-pasta "api" passa então a concentrar todas as funcionalidades de integração do módulo em questão:
O Guia de Implementação de API TOTVS define também que a troca de mensagens é feita (impreterivelmente) no formato JSON, e por conta disso, a troca de mensagens com as funcionalidades Progress também devem ser feitas nesse formato, mais especificamente por meio de um parâmetro de entrada e outro de saída do tipo LONGCHAR que devem ser devidamente tratados (parseados e formatados) pela funcionalidade utilizando as includes utilitárias disponibilizadas:
>>>>>Abaixo um exemplo de recurso desenvolvido em Progress ABL para ser utilizado junto ao serviço de API<<<<<<
No exemplo acima, temos as seguintes includes utilitárias:
|
Com o objetivo de facilitar a manipulação dos objetos JsonObject recebidos e enviados pela API Progress foram desenvolvidas algumas classes de utilitários:
|
O objeto JsonObject, recebido pela requisição no programa Progress conterá informações completas da requisição, desde informações do:
Com esta mensagem, o desenvolvedor poderá efetuar os devidos filtros e classes utilitárias necessárias. Exemplo de mensagem:
|
Na Antiga Arquitetura (Jboss) para realizar o login no DATASUL-REST, apesar de existir BASIC AUTHENTICATION com o contexto /api, ainda é possível passar como parâmetro usuário e senha na seguinte URL.
Para passagem da senha é necessário converte-la para SHA1, com este resultado realizar a conversão para BASE64. Tendo em vista que a conversão para BASE64 irá trazer caracteres incoerentes para passagem da URL, será necessário fazer a conversão para URL-ENCODE.
Observe que por trazer os caracteres " / e = " na conversão de SHA1 e BASE64, é necessário o URL-ENCODE. Sugestão para URL-ENCODE: https://meyerweb.com/eric/tools/dencoder/
|