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.

Execução do programa da área

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
TipoEstrutura
JsonObject

Estrutura comum de um objeto JSON, com a adição do parâmetro de tipo lógico overwrite oriundo do campo l-sobrescreve.
Esse parâmetro adicional serve para indicar se os dados serão sobrescritos pelo retorno da API ou se serão mantidos.

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.
count: Parâmetro auxiliar do tipo inteiro informando o tamanho do JsonArray.
isWrapper: Parâmetro auxiliar do tipo lógico informando se a resposta foi encapsulada.
overwrite: Parâmetro auxiliar do tipo lógico informando se o programa deve sobrescrever os dados.

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.

Temp-Tables


RowErrors

Entrada/Saída

Temp-table com dados dos erros ocorridos durante o processo

Saída

AtributoTipoDescrição

Obrigatório

Evolução

ErrorSequenceINTEGERNúmero da sequência do erro.

Sim

Não se aplica

ErrorNumberINTEGERCódigo do erro.

Sim

Não se aplica

ErrorDescriptionCHARACTERDescrição detalhada do erro.NãoNão se aplica
ErrorTypeCHARACTERTipo do erro (Ex: ERROR, INTERNAL).NãoNão se aplica
ErrorSubTypeCHARACTERSubtipo do erro.NãoNão se aplica



CadNbs

Entrada/Saída

Temp-table com os campos a serem retornados na busca dos códigos de NBS.

Saída

AtributoNome no Objeto (JSON)TipoDescriçãoObrigatório

Evolução

cod-nbscodNbsCharacterCódigo da Nomenclatura Brasileira de Serviços (Chave).Sim

Não se aplica

desc-nbsdescNbsCharacterDescrição do serviço.Sim

Não se aplica