Versões comparadas

Chave

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

...

  1. Pré-requisitos
    1. Plataforma com suporte REST e autenticação Basic.
    2. Suporte a tratamento cross-domain, por conta das requisições de serviços em servidores de domínio diferente.
    3. Modelo de implementação de acordo com o documento "Guia de implementação de API" disponível no link abaixo:
      http://tdn.totvs.com/pages/viewpage.action?pageId=274849083

  2. Definições gerais
    1. Os retornos dos serviços REST devem estar encapsulados dentro de um objeto JSON com a seguinte especificação:
      Mensagens de erro (códigos HTTP 4xx e 5xx)

      Mensagens de erro devem-se retornar obrigatoriamente os campos a seguir:

      {
          code: "",
          message: "",
          detailedMessage: ""
      }

      Exemplo:

      POST http://totvs.com.br/api/trep/v1/dbdataproviders/testeconnection

      {
          code: "",
          message: "Erro ao testar conexão com o banco de dados",
          detailedMessage: "Banco de dados oracle não disponível"
      }


      Mensagens de sucesso (código http 2xx devem)

      Mensagens de sucesso devem-se retornar diretamente a entidade que representa o objeto resultado da operação do endpoint.

      Exemplo:

      POST http://totvs.com.br/api/trep/v1/dbdataproviders/testeconnection

      {
        testConnection: "true"

      }



    2. Todas as linhas de produto devem estabelecer uma URL base, a partir da qual os serviços REST de provedor integrado serão disponibilizados. 

    3. Como exemplo, no ERP RM foi definida a seguinte  URL base: 
      /api/trep/v1/dbdataproviders/ 

      Informações

      Com o objetivo de facilitar o entendimento do documento, a URL base do RM descrita acima será utilizada no restante do documento para definição dos endpoints.


  3. Definição dos serviços

    Os serviços REST descritos a seguir estão divididos em:

    • Serviço de leitura de parâmetros gerais;
    • Serviço de teste de conexão;
    • Serviço de teste de sentenças sql;
    • Serviço de leitura de schema de tabelas físicas;
    • Serviço de leitura de schema de sentença sql;
    • Serviço de retorno de dados;

    Na descrição de cada serviço podemos encontrar os seguintes elementos:

    • Definição da URL do serviço;
    • Detalhamento dos parâmetros de entrada (request) e saída (response);
    • Descrição do serviço com detalhes relativos ao seu funcionamento;


    1. Serviço de leitura de parâmetros de provedor;

      GET /api/trep/v1/dbdataproviders/parameters      

      Recebe

      Não recebe parâmetros

      Retorna

      Application/JSON


      Esse método é utilizado para obtenção dos parâmetros do provedor integrado. A necessidade e definição desses parâmetros é de responsabilidade do dono do provedor. 

      No JSON de retorno, deve constar as seguintes informações:


      • name: Nome do parâmetro;

      • description: Descrição do parâmetro;
      • name: Nome do parâmetro;

      • value: Valor do parâmetro;
      • isPassword: Define se o valor do parâmetro será gravado e mostrado de forma criptografada. Pode ser true ou false

        Informações
        titleExemplo de json de retorno

        {

               “providerParams” : [{

                     “name” : “aliasName”,

                     “description” : “Nome do alias do RM”,

                     “value” : “CorporeRM”,

                     “isPassword” : false,

               }]

        }


      Informações

      Os parâmetros retornados por esse serviço aparecerão na grid de parâmetros localizada no "cadastro de provedores de dados" do front-end do T-Reports, conforme abaixo:




    2. Serviço de teste de conexão do provedor


      POST /api/trep/v1/dbdataproviders/testconnection


      Recebe

      Application/JSON

      Retorna

      Application/JSON

      Esse método é utilizado para testar a conexão de um provedor integrado. 


      No Json de entrada devem ser enviados os parâmetros cadastrados na tela de "Provedores de dados". Esses parâmetros são os mesmos recuperados pelo serviço definido acima "GET /api/trep/v1/dbdataproviders/parameters".

      Informações
      titleExemplo de json de entrada

      {

             “providerParams” : [{

                   “name” : “aliasName”,

                   “description” : “Nome do alias do RM”,

                   “value” : “CorporeRM”,

                   “isPassword” : false,

             }]

      }


       No JSON de retorno, deve constar as seguintes informações:

      1. testSuccess: Informa se o teste do bem sucedido. Pode ser true ou false

        Informações
        titleExemplo de json de retorno

        {

               “testSuccess” : true;

        }

      Esse método é utilizado no click do botão "Testar conexão" localizado no "cadastro de provedores de dados" do front-end do T-Reports, conforme abaixo:


      c) Serviço de teste de sentenças sql

      POST /api/trep/v1/dbdataproviders/testquery

    • Recebe

      Application/JSON

      Retorna

      Application/JSON


      Esse método é utilizado para testar a sintaxe de uma sentença sql. 

      No Json de entrada devem ser enviadas os seguintes informações: 

      • providerParamsParâmetros do provedor de dados.
      • sqlText: Texto da sentença sql;
      • sqlParameters: Parâmetros da sentença sql;
        • paramName: Nome do parâmetro da sentença sql;
        • paramValue: Valor do parâmetro da sentença sql;
        • paramType: Tipo do parâmetro;


        Informações
        titleExemplo de json de entrada

        {

                    “providerParams” : [{

                                “name” : “aliasName”,

                                “description” : “Nome do alias do RM”,

                                “value” : “CorporeRM”,

                                “isPassword” : false,

                    }],

                    "sqlText": "select * from pfunc where codcoligada = :codcol",

                    "sqlParameters": [{

                                "paramName": "codcol",

                                "paramValue": "1",

                                "paramType": "system.Int32"

                    }]

        }

            No JSON de retorno, deve constar as seguintes informações:

    • testSuccess: Informa se o teste do bem sucedido. Pode ser true ou false

      Informações
      titleExemplo de json de retorno

      {

             “testSuccess” : true;

      }


      d) Serviço de leitura de schema de tabelas físicas;

      GET /api/trep/v1/dbdataproviders/schematable

    • Recebe

      Application/JSON

      Retorna

      Application/JSON

      Esse método é utilizado para retornar o schema (estrutura) de uma tabela localizada fisicamente em um determinado provedor de dados. 

      No Json de entrada devem ser enviadas os seguintes informações: 

      • providerParamsParâmetros do provedor de dados. Devem ser enviados os parâmetros recuperados pelo serviço acima "GET /api/trep/v1/dbdataproviders/parameters". 
      • tableSourceName: Nome da tabela física do banco de dados;
      • tablesSourceGetRelations: Lista contendo informações de todas as tabelas físicas cadastradas no dicionário de dados do relatório.


        Informações

        Através dessa lista

        , todas

        todos os relacionamentos entre essas tabelas poderão ser recuperados automaticamente

        . Evitando

        no dicionário de dados do ERP em questão, evitando assim, o cadastro manual dos relacionamentos.



        Informações
        titleExemplo de json de entrada

        {

                    “providerParams” : [{

                                “name” : “aliasName”,

                                “description” : “Nome do alias do RM”,

                                “value” : “CorporeRM”,

                                “isPassword” : false,

                    }],

                    "tableSourceName": "PFUNC",

                    "tablesSourceGetRelations": [

                                {"tableSourceName", : "PFUNCPSECAO"},

                                {"tableSourceName", : "PFUNCPFDEPEND"}

                    ]

        }

              No JSON de retorno, deve constar as seguintes informações:

      • schemaTable: objeto Objeto contendo as seguinte informações:

        • tableSourceName: Nome da tabela de banco de dados;
        • tableSourceDescription: Descrição da tabela de banco de dados. Essa informação pode ser recuperada de um dicionário de dados.
        • columns: lista contendo as seguinte informações:
          • columnName: Nome da coluna;
          • columnDescription: Descrição da coluna da tabela. Essa informação pode ser recuperada de um dicionário de dados.
          • columnType: tipo da coluna;

      • schemaRelations: lista contendo as seguinte informações:
        • relationName: Nome do relacionamento recuperado de um dicionário de dados;
        • parentTableSourceName: Nome da tabela pai em um relacionamento;
        • childTableSourceName: Nome da tabela filha em um relacionamento;
        • parentColumns: lista de colunas da tabela pai em um relacionamento contendo as seguinte informações:
          • columnName
        • childColumns: lista de colunas filhas em um relacionamento contendo as seguinte informações:
          • columnName

...

Informações
titleExemplo de json de retorno

{

            “schemaTable” : {

                        "tableSourceName": "PFUNC",

                        "tableSourceDescription": "Funcionários",

                        "columns": [ {"columnName": "CODCOLIGADA", "columnDescription": "Codigo da coligada", "columnType": "System.Int32"},

                                                 {"columnName": "CHAPA", "columnDescription": "Chapa do funcionario", "columnType": "System.string"},

                                                 {"columnName": "SALARIO", "columnDescription": "Salario do funcionário", "columnType": "System.double"}]

},

                                    

                        “relations” : [{

                                    "relationName": "PFUNC_PFDEPEND",

                                    "parentSourceName": "PFUNC",

                                    "childSourceName": "PFDEPEND",

                                    "parentColumns": [{"columnName": "CODCOLIGAGA"}, {"columnName": "CHAPA"}],

                                     "childColumns": [{"columnName": "CODCOLIGAGA"}, {"columnName": "CHAPA"}],


                                   {


                                    "relationName": "PFUNC_PSECAO


                                    "parentSourceName": "PFUNC",


                                    "childSourceName": "PSECAO


                                    "parentColumns": [{"columnName": "CODCOLIGAGA"}, {"columnName": "CODSECAO


                                     "childColumns": [{"columnName": "CODCOLIGAGA"}, {"columnName": "CODIGO"}]

}


Esse método é utilizado no click do botão "Teste conexão" localizado no "cadastro de provedores de dados" do front-end do T-Reports, conforme abaixo:

...