Produto: | Datasul |
Ocorrência: | Documentação de API |
Nome físico: | cdp/consumoApiGov.p |
Objetivo
Esta API tem como objetivo realizar a comunicação e tratamento dos dados das APIs do portal da Conformidade Fácil. Essas APIs são referentes a cadastros do sistema como códigos de crédito presumido, código de classificação tributária entre outros.
Funcionamento
A API recebe dois parâmetros: um parâmetro do tipo RAW com os dados de uma tabela temporária usados como parâmetros para execução do programa e uma tabela temporária com um campo do tipo RAW. Em resumo, são os parâmetros padrões de execução de um programa Progress a partir de uma tela, por exemplo.
Exemplo de uso:
DEFINE VARIABLE raw-param AS RAW NO-UNDO.
DEFINE TEMP-TABLE tt-raw-digita
FIELD raw-digita AS RAW.
CREATE tt-param. // Definição da tt-param na seção Temp-Tables ao final deste documento.
ASSIGN tt-param.destino = 2
tt-param.arquivo = "consumoApiGov.json"
tt-param.usuario = "super"
tt-param.data-exec = TODAY
tt-param.hora-exec = ?
tt-param.cod-endpoint = "credPresumido" // Endpoint pode ser consultado no portal da Conformidade Fácil, aba Serviços
tt-param.cod-programa-area = "cdp/consumoApiGovCredPresMOF.p" // Precisa ser o caminho completo do programa
tt-param.l-sobrescreve = FALSE.
FOR FIRST tt-param:
RAW-TRANSFER tt-param TO raw_param.
END.
RUN cdp/consumoApiGov.p (INPUT raw_param, INPUT TABLE tt-raw-digita). |
Ao final da execução do programa consumoApiGov.p, será executado o programa que foi informado no campo cod-programa-area.
Para a execução do programa da área, isto é, o programa informado no campo cod-programa-area, o programa principal envia dois parâmetros para o programa da área: o nome do endpoint para o qual foi realizada a requisição e um objeto JSON com as informações retornadas pela API do portal da Conformidade Fácil.
A estrutura desse objeto JSON depende do tipo de retorno que foi feito pela API do portal da Conformidade Fácil. Se for um objeto JSON, a estrutura será a de um objeto JSON comum, mas se o retorno for uma lista de objetos será criado um objeto JSON para encapsular essa resposta e manter o parâmetro sempre do tipo objeto JSON.
| Estrutura do objeto JSON de retorno | |
|---|---|
| Tipo | Estrutura |
| JsonObject | Estrutura comum de um objeto JSON, com a adição do parâmetro de tipo lógico overwrite oriundo do campo l-sobrescreve. |
| JsonArray | Será criado um JsonObject para encapsular a resposta da requisição. A estrutura passa a ser: response: Campo do tipo JsonArray com a resposta da requisição para a API do portal da Conformidade Fácil. |
Dessa forma, a estrutura de um programa de área seria:
DEFINE INPUT PARAMETER cEndpoint AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER oJson AS JsonObject NO-UNDO.
IF cEndpoint <> "credPresumido" THEN
RETURN "NOK".
// Se a resposta for um JsonArray
IF oJson:has("response") THEN DO:
// Restante da lógica do programa para persistência dos dados
END. |
RowErrors | Entrada/Saída | |||
Temp-table com dados dos erros ocorridos durante o processo | Saída | |||
| Atributo | Tipo | Descrição | Obrigatório | Evolução |
ErrorSequence | INTEGER | Número da sequência do erro. | Sim | Não se aplica |
ErrorNumber | INTEGER | Código do erro. | Sim | Não se aplica |
ErrorDescription | CHARACTER | Descrição detalhada do erro. | Não | Não se aplica |
ErrorType | CHARACTER | Tipo do erro (Ex: ERROR, INTERNAL). | Não | Não se aplica |
ErrorSubType | CHARACTER | Subtipo do erro. | Não | Não se aplica |
CadNbs | Entrada/Saída | ||||
Temp-table com os campos a serem retornados na busca dos códigos de NBS. | Saída | ||||
| Atributo | Nome no Objeto (JSON) | Tipo | Descrição | Obrigatório | Evolução |
cod-nbs | codNbs | Character | Código da Nomenclatura Brasileira de Serviços (Chave). | Sim | Não se aplica |
desc-nbs | descNbs | Character | Descrição do serviço. | Sim | Não se aplica |