Versões comparadas

Chave

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

Índice

...


O que é uma API?
Âncora
definicao-api
definicao-api

Uma Interface de Programação de Aplicações é uma coleção de informações padronizadas estabelecida por um software que possibilita a utilização de suas funcionalidades por outros aplicativos. Com as informações persistidas em uma especificação de API, é possível enviar ou receber dados de uma aplicação sem que seja necessário entrar nos detalhes da implementação deste programa.

...

Para descrever uma API, se faz necessária uma especificação padronizada. O padrão utilizado para a construção das APIs TOTVS é o OpenAPI 3.0, o qual descreve um formato para definição de toda a API. Essa especificação é que define como serão evidenciados os endpoints e seus métodos, parâmetros de operações de entrada e saída, métodos de autenticação, metadados (tais como informações gerais, contato, licença e termos de uso), entre outros.

...

Criação de uma API
Âncora
criacao-api
criacao-api

Nesta documentação não entraremos em muitos detalhes sobre a criação dos OpenAPIs, uma vez que as regras para o desenvolvimento de novos arquivos APIs já estão especificadas no nosso Guia de APIs. Uma ótima maneira de iniciar a criação de um novo arquivo OpenAPI é observando como outros documentos foram construídos. Para ter acesso a todas as APIs já desenvolvidas, basta acessar nosso repositório no GitHub.

...

totvsApiTypesBase
Âncora
api-types-base
api-types-base

Ao criar uma especificação de API TOTVS, é preciso ter em mente que existem alguns types e parameters padronizados previamente criados pela equipe TTALK, armazenados no arquivo totvsApiTypesBase.jsonCom isso, esses parameters não precisam ser implementados "do zero" nos endpoints, mas sim propriamente referenciados na própria especificação de API.

...

(informação) Retornar ao Fluxograma de Criação de Integrações

...

Diferenciação entre API e Schema
Âncora
diferenciacao-api-schema
diferenciacao-api-schema

Uma API não deve ser confundida com um schema. As APIs são contratos responsáveis por definir os métodos e caminhos que permitem a comunicação entre dois aplicativos. São as APIs que trazem informações relevantes sobre as trocas de dados entre uma aplicação e um produto TOTVS, definindo os moldes das mensagens trafegadas. Já o schema modela a mensagem padronizada propriamente dita. Traz consigo uma forma de apresentar dados e seus tipos, permitindo a posterior transmissão de informações. Definições mais apuradas sobre os schemas podem ser encontradas na documentação sobre as mensagens padronizadas TOTVS.

...

Para uma melhor apresentação visual das APIs, foi criado o portal API Reference, onde todas as APIs desenvolvidas pelos segmentos TOTVS e aprovadas pelo comitê podem ser encontradas.

...

A propriedade "x-totvs"
Âncora
xtotvs-api
xtotvs-api

A propriedade x-totvs nas APIs está localizada tanto no cabeçalho (tag info) quanto nos métodos dos paths (endpoints) no arquivo OpenAPI, contendo informações diferentes dependendo do local em que está inserida. Contudo, as propriedades x-totvs tem sempre um objetivo em comum: armazenar dados pertinentes aos produtos TOTVS. São nas x-totvs em que são especificadas informações como o nome do produto ao qual se refere, segmento ao qual está vinculado, adapter atrelado, se determinado verbo está disponível para aquele caminho, entre outros.

...

x-totvs em diferentes partes do OpenAPI
Âncora
xtotvs-diferentes-partes-api
xtotvs-diferentes-partes-api

Abaixo está descrito o comportamento da propriedade x-totvs e o significado de cada uma de suas tags internas, utilizadas apenas no arquivo OpenAPI. Caso sua intenção seja entender o funcionamento do x-totvs no JsonSchema, visite a documentação de Definição da Mensagem no modelo JsonSchema

  • 3.4.1.1

    x-totvs dentro da "info"
    Âncora
    xtotvs-info
    xtotvs-info

    O exemplo a seguir é um trecho da API UnitOfMeasure v2.

    Bloco de código
    languagejs
    titleExemplo
    collapsetrue
    (...)
    "info": {
    		"description": "API para informações de Unidade de Medida para Unidade de Medida TOTVS",
    		"version": "2.000",
    		"title": "UnitOfMeasure",
    		"contact": {
    			"name": "T-Talk",
    			"url": "api.totvs.com.br",
    			"email": "[email protected]"
    		},
    		"x-totvs": {
    			"messageDocumentation": {
    				"name": "UnitOfMeasure",
    				"description": "Cadastro de Unidade de Medida",
    				"segment": "Serviços"
    			},
    			"productInformation": [
    				{
    					"product": "Protheus",
    					"contact": "[email protected]",
    					"description": "Cadastro de Unidade de Medida",
    					"adapter": "QIES030.prw"
    				},
    				{
    					"product": "Logix",
    					"contact": "[email protected]",
    					"description": "Cadastro de Unidade de Medida",
    					"adapter": ""
    				}
    			]
    		}
    	}
    (...)
    

    A propriedade "messageDocumentation" do x-totvs traz informações sobre a própria API.

...

      • product: produto ao qual aquelas informações do "productInformation" se referem;
      • contact: e-mail para contato com quem desenvolveu aquela API naquele determinado produto;
      • description: descrição da API para aquele determinado produto;
      • adapter: adapter que se comunica com aquela determinada API;
      • A propriedade "productInformation" poderia ter ainda a tag helpUrl, que contém um link para a documentação daquela API para aquele produto, caso haja.


  • 3.4.1.2

    x-totvs dentro dos verbos dos endpoints 
    Âncora
    xtotvs-paths
    xtotvs-paths

    O exemplo a seguir também é um trecho da API UnitOfMeasure v2.

    Bloco de código
    languagejs
    titleExemplo
    collapsetrue
    (...)
    "paths": {
    		"/UnitOfMeasures": {
    			"get": {
    				"tags": [
    					"UnitOfMeasures"
    				],
    				"summary": "Retorna lista de Unidade de Medida",
    				"x-totvs": {
    					"productInformation": [
    						{
    							"product": "Protheus",
    							"available": true,
    							"note": "Este verbo esta disponivel com todos os parametros",
    							"minimalVersion": "12.1.21"
    						},
    						{
    							"product": "Logix",
    							"available": true,
    							"note": "Este verbo esta disponivel com todos os parametros",
    							"minimalVersion": "12.1.23"
    						}
    					]
    				}
    (...)

    Diferentemente do x-totvs da "info",  a propriedade "messageDocumentation" não está presente nos x-totvs dos "paths".

    Já a propriedade "productInformation" traz informações sobre os produtos TOTVS.

    • product: produto ao qual aquelas informações do "productInformation" se referem;
    • available: campo booleano que indicia de o verbo esta implementado no produto;
    • note: observações sobre o verbo referente ao produto, como regras específicas;
    • minimalVersion: a versão minima na qual o verbo foi implementado no produto.

...

(informação) Clique aqui para retornar ao Fluxograma de Criação de Integrações

...

Identificar se o produto a ser integrado já está definido na documentação da API 
Âncora
verificar-produto-definido
verificar-produto-definido

API Reference é um portal que obtém os dados do JSON da API e os transfere para uma interface visual, tornando a navegação pelas APIs mais atrativa aos usuários. Para identificar quais produtos estão adaptados a uma determinada API, basta acessar o API Reference e identificar quais os produtos que se encontram explicitados (como demonstra a animação abaixo).

...

(informação) Clique aqui para retornar ao Fluxograma de Criação de Integrações

...

Editar "x-totvs" da API
Âncora
#editar-xtotvs-api
#editar-xtotvs-api

Caso a API já exista, porém não para o produto desejado pelo usuário, significa que há necessidade de adaptar o arquivo OpenAPI para que o produto em questão passe a ser especificado. Para tal, é necessário adicionar ao arquivo JSON da especificação da API novos objetos dentro do array "productInformation" nas propriedades x-totvs, na info e nos verbos dos paths.

...


(informação) Clique aqui para retornar ao Fluxograma de Criação de Integrações

...

Versionamento da API 
Âncora
versionamento-api
versionamento-api

O versionamento de APIs que atuam sobre entidades com mensagem padronizada seguirá o padrão definido pelo guia de APIs, sendo independente da versão da mensagem padronizada. Entretanto, mudanças no modelo de dados implicam em mudança no contrato da API e, consequentemente, podem exigir alteração da versão da API.

...

  • Alterando-se a minorVersion da mensagem padronizada, deve-se alterar a minorVersion da API.
  • Alterando-se a majorVersion da mensagem padronizada, deve-se alterar a majorVersion da API.
  • Inclusão de verbos HTTP, ações ou filtros na API não alteram versão.
  • Alteração de comportamento de endpoint ou na forma de passar os parâmetros alteram versão da API, entretanto não é necessário replicar todos os outros endpoints da API para a nova versão.

...

Exemplos de versionamento 
Âncora
exemplo-versionamento
exemplo-versionamento

Para tornar mais claro como versionar as APIs baseadas em mensagem padronizada, colocaremos a seguir um caso de uso.

...