Convenções

Esse documento apresenta a interface de programação de aplicativos (API) do produto Gupy Educação Corporativa. Ele descreve várias operações da API, estruturas de requisições e resposta relacionadas.

Autorização

A autorização na API é feita através do parâmetro de requisição secret em cada requisição, que consiste em uma chave de API UUID no formato RFC 4122. Exemplo:

https://module.api.niduu.com/integrate/?secret=ea0d435e-8111-11eb-a32a-7c8ae1e10db1

Enviar um valor para secret inválido ou deixar de enviar esse parâmetro acarretará na falha na requisição gerando uma resposta do tipo HTTP 403 PERMISSION DENIED.

IMPORTANTE: Não realize requisições para essa API em aplicações do lado cliente (ex.: javascript no navegador de internet), a chave de API secret deve ser armazenada e utilizada de forma segura na aplicação do lado servidor. Por esse motivo, visando ressaltar o uso seguro desta API, o CORS não é habilitado.

Para solicitar acesso à API de integração e obter uma chave de API, contate-nos através do e-mail [email protected].

Formato

A API de Integração recebe e envia dados no formato JSON, portanto convém enviar o cabeçalho HTTP Content-Type: application/json.

Fuso Horário

Por padrão, todos os valores que representam data e hora retornados nas requisições dessa API estão no fuso horário GMT (UTC+0).

Internacionalização

A API retorna alguns atributos formatados de acordo com a localização e preferências de idioma do cliente, como por exemplo mensagens de erro e datas. Para a correta exibição desses atributos envie o cabeçalho HTTP Accept-Language.

Ex.: Accept-Language: pt-BR

Supressão de Requisições

O limite de uso dessa API é 1 requisição por segundo por chave de API. Usando acima desse limite a requisição falhará gerando uma resposta do tipo HTTP 429 TOO MANY REQUESTS.

Paginações

As requisições de listagem retornam em páginas de até 100 registros. Nessa API a estratégia de paginação utilizada é baseada em cursor e consiste no seguinte:

Cada página é identificada por um parâmetro chamado cursor
Cada página contém o cursor para próxima e para a anterior através dos atributos next_cursor e prev_cursor, respectivamente.
Dessa forma não é possível que a aplicação cliente acesse uma página específica (por exemplo page=7), necessitando percorrer as páginas sequencialmente; entretanto esse tipo de paginação oferece vantagens de desempenho em grandes conjuntos de dados e possui tempo de resposta semelhante independente da página solicitada.
Originalmente, na paginação baseada em cursor, não há o conceito do número total de páginas ou de total de registros na listagem, entretanto, para facilidade de uso, foi adicionado a essa API uma rota para consulta do número total de registros, bastando requisitar a rota de listagem adicionando o sufixo /countna URL.