99Taxis / corp-api-v2-documentation

8 stars 3 forks source link

99 CORP - Documentação API

Documentação para uso dos endpoints da API para clientes corporativos da 99.

Endereço de acesso: https://api-corp.99app.com/v2

Swagger

É possível realizar testes online utilizando a interface do Swagger. Para isso, acesse o endereço abaixo:

https://api-corp.99app.com/v2/docs/swagger-ui.html

Autenticação

Todas as requisições precisam informar o token de acesso para o processo de autenticação. Informe a chave com nome x-api-key juntamente com o valor do token de acesso no cabeçalho HTTP de cada requisição.

Considerando o cenário de exemplo onde a chave de acesso possui o valor key-abc-123, segue chamada CURL para a listagem de colaboradores:

curl -X GET PUT URL -H 'x-api-key: key-abc-123'

Seções


Empresas

Busca de empresas autenticadas


Busca de parâmetros de justificativa para corrida


Alteração de parâmetros de justificativa para corrida

Os atributos minLength e maxLength são obrigatórios quando o atributo justificationRequired é igual a true


Busca de emails dos responsáveis da empresa


Alteração de emails de responsáveis da empresa


Busca de parâmetro de ativação de envio de emails de recibo de corrida


Alteração de parâmetro de ativação de envio de emails de recibo de corrida


Ativação de obrigatoriedade de informação do identificador do projeto para chamar corrida.


Desativação de obrigatoriedade de informação do identificador do projeto para chamar corrida.


Políticas de uso

Busca por políticas de uso

Cadastro de política de uso


Busca de política de uso por identificador

Atualizar de política de uso


Remover uma política de uso


Busca de centros de custo da política de uso

Atualizar centro de custos da política de uso


Desassociar um centro de custo de uma política de uso

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
id numérico Identificador da política de uso sim - 10
costCenterId numérico Identificador do centro de custo sim - 20

Centro de Custo

Busca de centros de custo


Cadastro de centro de custo


Busca de centros de custo por identificador


Desativar um centro de custo


Busca de responsável de centro de custo por identificador


Alteração de responsável de centro de custo por identificador


Projetos

Busca de projetos


Busca de projeto por identificador


Cadastro de projeto


Atualizar os dados de um projeto


Desativar um projeto


Colaboradores

Busca de colaboradores


Cadastro de colaborador


Busca de centro de custo do colaborador


Atualizar centro de custos do colaborador


Desassociar um centro de custo de um colaborador

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
employeeId numérico Identificador do colaborador sim - 10
costCenterId numérico Identificador do centro de custo sim - 20

Busca de política de uso do colaborador


Atualizar política de uso do colaborador

Os atributos budget.limit e budget.period serão obrigatórios caso budget.enabled seja true
O atributo budget.validUntil será obrigatório caso budget.period seja date
O atributo rideCredit.credit será obrigatório caso rideCredit.enabled seja true


Remover politica de uso do colaborador

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
employeeId numérico Identificador do colaborador sim - 20

Busca de colaborador por identificador


Atualizar os dados de colaborador


Desativar um colaborador

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
id numérico Identificador do colaborador sim - 20

Remover surpervisor do colaborador

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
id numérico Identificador do colaborador sim - 20

Salvar termos de aceite do colaborador


Colaboradores com Identificador Externo

Cadastrar um colaborador por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 125

Busca de colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 10

Atualizar os dados de colaborador por identificador externo e telefone

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 125
phone numérico Telefone do colaborador sim - 11988778877

Desativar colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 10

Busca de centros de custos de colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 10

Atualizar os dados de centro de custos dos colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 125

Remover centro de custo de colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 10
costCenterId numérico Identificador do centro de custo sim - 20

Busca de política de uso dos colaboradores por identificador externo


Atualizar política de uso dos colaboradores por identificador externo

Os atributos budget.limit e budget.period serão obrigatórios caso budget.enabled seja true
O atributo budget.validUntil será obrigatório caso budget.period seja date
O atributo rideCredit.credit será obrigatório caso rideCredit.enabled seja true


Remover politica de uso dos colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 20

Remover supervisor dos colaboradores por identificador externo

Atributo Tipo do dado Descrição Obrigatório Valor padrão Exemplo
externalId numérico Identificador do colaborador sim - 10

Recibos

Busca de recibos


Busca do recibo pelo identificador da corrida


Busca do recibo pelo identificador do recibo


Webhook

Webhook permite que seu sistema receba notificações de eventos originados de corridas da 99. Quando um desses eventos ocorrer, iremos enviar um HTTP POST com o payload do evento para a URL configurada no webhook. Webhooks podem ser utilizados para receber o status e a posição do motorista durante uma corrida em andamento. É possível receber eventos de mudança de status de corrida, assim como posição atual do motorista durante uma corrida em andamento.

Segurança

Toda comunicação deve ser feita com HTTPS e a url de recebimento do evento deve estar configurada na porta 443.

Para garantir a integridade do evento, e que o mesmo está sendo enviado através dos servidores da 99, um header no padrão Basic Authentication será acrescentado em toda requisição. As credenciais podem ser configuradas através do endpoint de Criação de Webhook abaixo. Seu servidor deve validar o header afim de garantir a segurança da informação.

Estratégia de tentativas

O webhook espera que sua aplicação responda com o http status code de sucesso 2xx (aceita-se 200, 201, 202, 203, 204, 205 ou 206) com um corpo vazio para todo evento gerado, e iremos aguardar até 10 segundos para receber a resposta. Caso qualquer uma dessas regras não sejam atingidas, o evento será re-transmitido para sua aplicação de acordo com um algoritmo de compensação exponencial (exponential back-off) com multiplicador de 15 segundos, até um limite máximo de 10 tentativas. Isso significa que iremos tentar enviar o mesmo evento para o seu servidor durante um período de 2 horas (por exemplo: 15, 30, 60, 120, 240 segundos e assim sucessivamente).

De acordo com as regras acima, um evento pode ser transmitido mais de uma única vez para os seus servidores, portanto você deve decidir em ignorar caso receba eventos repetidos. O atributo event.id garante a chave única do evento, e você pode utilizá-lo para validar eventuais duplicidades.

Status de corridas

Os seguintes status de corrida serão notificados quando ocorrerem. Os status marcados como final significam que não sofrerão alterações futuras.

Status Descrição Status final?
finding Buscando motorista não
no-drivers-available Nenhum motorista foi encontrado para sua solicitação sim
canceled-by-passenger Corrida cancelada pelo passageiro sim
canceled-by-driver Corrida cancelada pelo motorista sim
on-the-way Motorista encontrado e a caminho não
arrived Motorista chegou e está aguardando o passageiro não
in-progress Corrida iniciada com passageiro a bordo não
finished Corrida encerrada sim

Obter configuração do Webhook

Criação do Webhook

Desativação do uso do Webhook


Corridas

Categorias por colaborador e estimativa de valor por corrida

Busca de corridas em andamento


Busca de corrida em andamento ou recentes por identificador


Solicitar corrida


Cancelar uma corrida em andamento


Rechamada

A função de rechamada não existe explicitamente, porém é possível fazê-la de forma manual, verificando o status da corrida. Na pasta recall há um código de exemplo em Java.


Usuários

Listar usuários com os perfis de acesso


Criar um usuário


Remover usuário


Adicionar o perfil de CorporateUser ao usuário


Remover o perfil de CorporateUser ao usuário


Atualizar o perfil do usuário


Testes em Sandbox

Endereço

https://sandbox-api-corp.99app.com/v2

O ambiente de sandbox tem como objetivo prover uma estrutura para realizar os testes de gerenciamento de recursos como colaboradores (employee), centros de custo (cost center) e projetos (project) dentre outros, exceto a opção /rides onde não é possível criar e testar corridas em sandbox, os demais testes podem ser realizados normalmente.

Suporte da API

Caso tenha mais dúvidas ou esteja com problemas na integração, mande um e-mail para help-corp-api@99app.com