NAV Navbar
json cURL php python javascript

Introdução

Olá, bem vindo a documentação da API Onfly!

Através das nossas APIs você conseguirá acessar grande parte dos nossos serviços e integrar facilmente sua aplicação com a nossa.

Nós utilizamos o padrão REST HTTP, atualmente todos nossos endpoints necessitam de autenticação ;-)

Há, estamos melhorando continuamente nossas APIs e fazemos um grande esforço para manter esta documentação atualizada.

Caso você tenha alguma sugestão de melhoria, pode mandar pra gente: devs@onfly.com.br

A gente vai amar receber sugestões \o/

Ps:. Existem 2 grandes desafios clássicos em ciência da computação, que é dar nome as coisas e invalidar cache ;-) Agora, descobrimos uma terceira, que é manter a API atualizada, pedimos desculpas caso você encontre alguma info na API que não esteja atualizada aqui!

O que dá para fazer com nossa API?

Nossa API hoje é dividida em 6 módulos

E ainda temos uma seção exclusiva para códigos que são usados como parâmetros nas requisições.

Exemplos de utilização

Temos alguns exemplos prontos para usar a nossa API em Google Docs (sim, a gente se diverte usando Google Script) e via POSTMAN, se quiser, só dar um alô pra gente que enviamos todos nossos exemplos de requests + response, beleza?

Autenticação

Nossa autenticação é baseada nos principios OAUTH2. Primeiro é nessessario que você obtenha seu CLIENT ID e CLIENT SECRET para isso basta entrar em contato com nosso atendimento que iremos fornecê-la, para conseguir seu token de autenticação envie a seguinte requisição para o endpoint

Requisição:

{
 "grant_type": "client_credentials",
 "scope": "*",
 "client_id": "{{client_id}}",
 "client_secret": "{{client_secret}}"
}
curl --location --request POST 'http://api.onfly.com.br/oauth/token' \
--header 'Content-Type: application/json' \
--data-raw '{
 "grant_type": "client_credentials",
 "scope": "*",
 "client_id": "client_id",
 "client_secret": "token"
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/oauth/token",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
     [
      "grant_type" => "client_credentials",
      "scope" => "*",
      "client_id" => "{{client_id}}",
      "client_secret" => "{{client_secret}}"
     ]
  ])
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\r\n \"grant_type\": \"client_credentials\",\r\n \"scope\": \"*\",\r\n \"client_id\": \"1\",\r\n \"client_secret\": \"token\"\r\n}"
headers = {
  'Content-Type': 'application/json'
}
conn.request("POST", "/oauth/token", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");

let raw = JSON.stringify({"grant_type":"client_credentials","scope":"*","client_id":"1","client_secret":"token"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/oauth/token", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Garanta que você está substituindo as variáveis {{client_id}} e {{client_secret}} pelas suas credenciais:

Resposta:

{
    "token_type": "Bearer",
    "expires_in": 31622400,
    "access_token": "{auth_token}"
}

HTTP Request

POST https://api.onfly.com.br/oauth/token

Corpo da Requisição

Parameter Default Description
grant_type false Tipo de autorização desejada, atualmente nos suportamos apenas "client_credentials"
scope false O escopo de sua autenticação, na nossa versão atual da API aplicamos apenas "*"
client_id false O seu client id adquirido com nossa equipe de tecnologia
client_secret false O seu client secret adquirido com nossa equipe de tecnologia

Nós iremos te responder com um token de autenticação, esse token deve ser enviado no HEADER de toda requisição aos nossos endpoints, assim como mostrado abaixo

Note que este token expira em 1 ano.

Configurações da Empresa

Dentro da API de Configurações da empresa é possível:

Colaboradores

Busca todos os colaboradores

Requisição

GET https://api.onfly.com.br/employees

curl --location --request GET 'https://api.onfly.com.br/employees' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token'


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/employees",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token",
    "Content-Type: application/x-www-form-urlencoded"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


import requests

url = "https://api.onfly.com.br/employees"

headers = {
  'Authorization': 'Bearer token',
  'Content-Type': 'application/x-www-form-urlencoded'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))



var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/employees", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:


{
    "data": [
        {
            "id": 12,
            "name": "Apolo Doutrinador",
            "email": "marcelo+t12@onfly.com.br",
            "avatar": "https://app.onfly.com.br/images/users/default.png",
            "role": "teste",
            "groupId": 0,
            "permission": "Administrador",
            "createdAt": "2020-05-21 17:09:09",
            "updatedAt": "2020-05-21 17:09:09"
        }
    ]
}

Requisição HTTP

GET https://api.onfly.com.br/employees

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
include - não A inclusão disponível é ["group"]

Convidar colaborador

Este endpoint cria um colaborador e envia um email de cadastro para que o colaborador possa completar seu cadastro.

Requisição:

{
    "email": "jonhdoe@onfly.com.br",
    "permission": "employee",
    "role": "Desenvolvedor",
    "groupId": 1
}
curl --location --request POST 'http://api.onfly.com.br/employees/invite' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "email": "jonhdoe@onfly.com.br",
    "permission": "employee",
    "role": "Desenvolvedor",
    "groupId": 1
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/employees/invite",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"email\": \"jonhdoe@onfly.com.br\",\n\t\"permission\": \"employee\",\n\t\"role\": \"Desenvolvedor\",\n\t\"groupId\": 1\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"email\": \"jonhdoe@onfly.com.br\",\n\t\"permission\": \"employee\",\n\t\"role\": \"Desenvolvedor\",\n\t\"groupId\": 1\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/employees/invite", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"email":"jonhdoe@onfly.com.br","permission":"employee","role":"Desenvolvedor","groupId":1});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/employees/invite", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 14,
        "name": null,
        "email": "jonhdoe@onfly.com.br",
        "role": "Desenvolvedor",
        "groupId": 1,
        "permission": "employee",
        "createdAt": "2020-01-20 22:43:24",
        "updatedAt": "2020-01-20 22:43:24"
    }
}

Requisição HTTP

POST https://api.onfly.com.br/employees/invite

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
email - Sim Email do colaborador.
Max: 240 chars
Alpha-Numérico - Unico
role - Não Função do colaborador dentro de sua empresa.
Min: 3 chars - Max: 240 chars
Alpha-Numérico
permission - Sim Permissão deste colaborador para mais informações veja nesta documentação Geral/Enums/Permissões de usuários.
Alpha-Numérico
groupId - Sim Id do grupo no qual esse usuário pertence.
Inteiro
include - Não A inclusão disponível é ["group"]

Criar colaborador

Requisição:

{
    "name": "John Pass",
    "firstName": "John",    
    "lastName": "Pass", 
    "password": "12345678", 
    "birthday": "1999-01-15",   
    "document": {
        "value": "78060918079",
        "type" : "1"
    },  
    "email": "jonhdoe+2@onfly.com.br",
    "permission": "employee",
    "role": "Desenvolvedor",
    "groupId": 1
}

curl --location --request POST 'http://api.onfly/employees/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "name": "John Pass",
    "firstName": "John",    
    "lastName": "Pass", 
    "password": "12345678", 
    "birthday": "1999-01-15",   
    "document": {
        "value": "78060918079",
        "type" : "1"
    },  
    "email": "jonhdoe+2@onfly.com.br",
    "permission": "employee",
    "role": "Desenvolvedor",
    "groupId": 1
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly/employees/create",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"name\": \"John Pass\",\n\t\"firstName\": \"John\",\t\n\t\"lastName\": \"Pass\",\t\n\t\"password\": \"12345678\",\t\n\t\"birthday\": \"1999-01-15\",\t\n\t\"document\": {\n\t\t\"value\": \"78060918079\",\n\t\t\"type\" : \"1\"\n\t},\t\n\t\"email\": \"jonhdoe+2@onfly.com.br\",\n\t\"permission\": \"employee\",\n\t\"role\": \"Desenvolvedor\",\n\t\"groupId\": 1\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly")
payload = "{\n\t\"name\": \"John Pass\",\n\t\"firstName\": \"John\",\t\n\t\"lastName\": \"Pass\",\t\n\t\"password\": \"12345678\",\t\n\t\"birthday\": \"1999-01-15\",\t\n\t\"document\": {\n\t\t\"value\": \"78060918079\",\n\t\t\"type\" : \"1\"\n\t},\t\n\t\"email\": \"jonhdoe+2@onfly.com.br\",\n\t\"permission\": \"employee\",\n\t\"role\": \"Desenvolvedor\",\n\t\"groupId\": 1\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/employees/create", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"name":"John Pass","firstName":"John","lastName":"Pass","password":"12345678","birthday":"1999-01-15","document":{"value":"78060918079","type":"1"},"email":"jonhdoe+2@onfly.com.br","permission":"employee","role":"Desenvolvedor","groupId":1});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly/employees/create", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 15,
        "name": "John Pass",
        "email": "jonhdoe@onfly.com.br",
        "role": "Desenvolvedor",
        "groupId": 1,
        "permission": "employee",
        "createdAt": "2020-01-20 22:46:25",
        "updatedAt": "2020-01-20 22:46:25"
    }
}

Requisição HTTP

POST https://api.onfly.com.br/employees

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
email - Sim Email do colaborador.
Max: 240 chars
Alpha-Numérico - Unico
name - Sim Nome completo do colaborador.
Min: 3 chars - Max: 190 chars
Alpha-Numérico
firstName - Sim Primeiro nome do colaborador.
Min: 3 chars - Max: 190 chars
Alpha-Numérico
lastName - Sim Sobrenome do colaborador.
Min: 3 chars - Max: 190 chars
Alpha-Numérico
password - Sim Senha do colaborador.
Min: 8 chars - Max: 240 chars
Alpha-Numérico
birthday - Sim Data de nascimento do colaborador dentro de sua empresa.
Formato: yyyy-mm-dd
Alpha-Numérico
document - Sim Documento do colaborador à ser inserido na plataforma
document.value - Sim Numero do documento do colaborador.
Min: 3 chars
Alpha-Numérico - Unico
document.type - Sim Tipo do documento do colaborador, para ver os tipos aceitos basta ir em /Geral/Enums.
Min: 1 chars
Inteiro
role - Não Função do colaborador dentro de sua empresa.
Min: 3 chars - Max: 240 chars
Alpha-Numérico
permission - Sim Permissão deste colaborador para mais informações veja nesta documentação Geral/Enums/Permissões de usuários.
Alpha-Numérico
groupId - Sim Id do grupo no qual esse usuário pertence.
Inteiro
include - Não A inclusão disponível é ["group"]

Editar colaborador

Não é necessário reenviar todos os campos para sua edição por ex: Caso deseja editar somente o nome basta enviar apenas o campo name atualizado, não é possível atualizar o email e CPF do colaborador através desta API caso se encontre em uma situação que isso seja necessário entre em contato com o nosso time de TI

Requisição:

{
    "permission": "manager",
    "groupId": 2
}
curl --location --request POST 'http://api.onfly.com.br/employees/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "permission": "manager",
    "groupId": 2
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/employees/create",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"manager\": \"employee\"\n\t\"groupId\": 2\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"permission\": \"manager\",\n\t\"groupId\": 2\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/employees/create", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"permission":"manager","groupId":2});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/employees/create", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 15,
        "name": "John Doe",
        "email": "jonhdoe@onfly.com.br",
        "role": "Desenvolvedor",
        "groupId": 2,
        "permission": "manager",
        "createdAt": "2020-01-20 22:46:25",
        "updatedAt": "2020-01-20 22:48:09"
    }
}

Requisição HTTP

PUT https://api.onfly.com.br/employees/{employeesId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Não Nome completo do colaborador.
Min: 3 chars - Max: 190 chars
Alpha-Numérico
firstName - Não Primeiro nome do colaborador.
Min: 3 chars - Max: 190 chars
Alpha-Numérico
lastName - Não Sobrenome do colaborador.
Min: 3 chars - Max: 190 chars
Alpha-Numérico
password - Não Senha do colaborador.
Min: 8 chars - Max: 240 chars
Alpha-Numérico
birthday - Não Data de nascimento do colaborador dentro de sua empresa.
Formato: yyyy-mm-dd
Alpha-Numérico
role - Não Função do colaborador dentro de sua empresa.
Min: 3 chars - Max: 240 chars
Alpha-Numérico
permission - Não Permissão deste colaborador para mais informações veja nesta documentação Geral/Enums/Permissões de usuários.
Alpha-Numérico
groupId - Não Id do grupo no qual esse usuário pertence.
Inteiro
include - Não A inclusão disponível é ["group"]

Grupos

Requisição:


GET http://api.onfly.com.br/employee-groups

curl --location --request POST 'http://api.onfly.com.br/employee-groups' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
  "name": "Operações"
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/employee-groups",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"name\": \"Operações\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token",
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"name\": \"Operações\"\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token',
}
conn.request("POST", "/employee-groups", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");


let raw = JSON.stringify({"name":"Operações"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/employee-groups", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 5,
        "name": "Operações",
        "employeesIds": [],
        "createdAt": "2020-01-20 22:54:44",
        "updatedAt": "2020-01-20 22:54:44"
    }
}

Criar grupo

Requisição HTTP

POST https://api.onfly.com.br/employee-groups

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Sim Nome do grupo.
Min: 3 chars - Max: 190 chars
Alpha-Numerico - Unico
include - Não A inclusão disponível é ["employees"]

Editar grupo

Não é necessário reenviar todos os campos para sua edição por ex: Caso deseja editar somente a data basta enviar apenas o campo date atualizado

Requisição:

{
  "name": "Vendas"
}
curl --location --request POST 'http://api.onfly.com.br/employee-groups' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
  "name": "Vendas"
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/employee-groups",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"name\": \"Vendas\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token",
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"name\": \"Vendas\"\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token',
}
conn.request("POST", "/employee-groups", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");


let raw = JSON.stringify({"name":"Vendas"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/employee-groups", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 5,
        "name": "Vendas",
        "employeesIds": [],
        "createdAt": "2020-01-20 22:54:44",
        "updatedAt": "2020-01-20 22:57:25"
    }
}

Busca todos os grupos

Requisição HTTP

GET https://api.onfly.com.br/employee-groups

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
include - não A inclusão disponível é ["employees"]

Requisição HTTP

PUT https://api.onfly.com.br/employee-groups/{groupId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Não Nome do grupo.
Min: 3 chars - Max: 190 chars
Alpha-Numerico - Unico
include - Não A inclusão disponível é ["employees"]

Deletar grupo

Requisição HTTP

DELETE https://api.onfly.com.br/employee-groups/{groupId}

Centro de Custo

Requisição:

{
  "name": "SQUAD 200"
}
curl --location --request POST 'http://api.onfly.com.br/settings/cost-center' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
  "name": "SQUAD 200"
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/settings/cost-center",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"name\": \"SQUAD 200\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"name\": \"SQUAD 200\"\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/settings/cost-center", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"name":"SQUAD 200"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/settings/cost-center", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 8,
        "name": "SQUAD 200",
        "createdAt": "2020-01-20 23:24:23",
        "updatedAt": "2020-01-20 23:24:23"
    }
}

Busca todos os centros de custo

Requisição HTTP

GET https://api.onfly.com.br/settings/cost-center

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro

Criar centro de custo

Requisição HTTP

POST https://api.onfly.com.br/settings/cost-center

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Sim Nome do centro de custo.
Min: 2 chars - Max: 190 chars
Alpha-Numérico - Unico

Editar centro de custo

Não é necessário reenviar todos os campos para sua edição por ex: Caso deseja editar somente a data basta enviar apenas o campo date atualizado

Requisição HTTP

PUT https://api.onfly.com.br/settings/cost-center/{costCenterId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Não Nome do centro de custo.
Min: 2 chars - Max: 190 chars
Alpha-Numérico - Unico

Deletar centro de custo

Para deletar o centro de custo entre em contato com nosso time de TI.

Tag

Busca todas as tags

Requisição HTTP

GET https://api.onfly.com.br/settings/tag

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro

Criar tag

Requisição:

{
    "name": "UBER",
    "icon": "mdi-car"
}
curl --location --request POST 'http://api.onfly.com.br/settings/tag' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "name": "UBER",
    "icon": "mdi-car"
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/settings/tag",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"name\": \"UBER\",\n\t\"icon\": \"mdi-car\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"name\": \"UBER\",\n\t\"icon\": \"mdi-car\"\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/settings/tag", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"name":"UBER","icon":"mdi-car"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/settings/tag", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 5,
        "name": "UBER",
        "icon": "mdi-car",
        "iconImageLink": "http://api.onfly.com.br/settings/tag/icon/image/mdi-car",
        "createdAt": "2020-01-20 23:29:59",
        "updatedAt": "2020-01-20 23:29:59"
    }
}

Requisição HTTP

POST https://api.onfly.com.br/settings/tag

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Sim Nome da tag.
Min: 2 chars - Max: 190 chars
Alpha-Numérico - Unico
icon mdi-tag Não Icone grafico para representar o centro, para mais informações leia nesta documentação Geral/Icone.
Alpha-Numérico

Editar centro de custo

Não é necessário reenviar todos os campos para sua edição por ex: Caso deseja editar somente a data basta enviar apenas o campo date atualizado

Requisição:

{
    "name": "99"
}
curl --location --request POST 'http://api.onfly.com.br/settings/tag' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "name": "99",
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/settings/tag",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"name\": \"99\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"name\": \"99\"\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/settings/tag", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"name":"99"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/settings/tag", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 6,
        "name": "99",
        "icon": "mdi-car",
        "iconImageLink": "http://api.onfly.com.br/settings/tag/icon/image/mdi-car",
        "createdAt": "2020-01-20 23:30:41",
        "updatedAt": "2020-01-20 23:30:41"
    }
}

Requisição HTTP

PUT https://api.onfly.com.br/settings/tag/{tagId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Sim Nome da tag.
Min: 2 chars - Max: 190 chars
Alpha-Numérico - Unico
icon mdi-tag Não Icone grafico para representar o centro, para mais informações leia nesta documentação Geral/Icone.
Alpha-Numérico

Deletar tag

Para uma tag entre em contato com nosso time de TI.

Expense

Exemplos de chamadas para recuperar dados

    
GET https://api.onfly.com.br/expense/expenditure
GET https://api.onfly.com.br/expense/expenditure/{expenditure}
GET https://api.onfly.com.br/expense/expenditure-type
GET https://api.onfly.com.br/expense/rdv
GET https://api.onfly.com.br/expense/rdv/{rdvId}
GET https://api.onfly.com.br/a/rdv/{rdvId}
GET https://api.onfly.com.br/expense/advance-payment
GET https://api.onfly.com.br/expense/advance-payment/{advancePaymentId}
POST https://api.onfly.com.br/expense/send-to-approval/{advancePaymentId}


Exemplos de chamadas para salvar dados


POST https://api.onfly.com.br/expense/expenditure
POST https://api.onfly.com.br/expense/expenditure-type
POST https://api.onfly.com.br/expense/rdv




Dentro deste módulo será possível recuperar e persistir informações relacionados a despesas de viagens.

Despesa

Todo o modulo de despesas vem com a funcionalidade de include objetos por exemplo: Caso eu queria que junto as despesas retorna o usuario que cadastrou ela basta eu colocar o parâmetro include=user na requisição

Busca todas as despesas

Requisição

GET https://api.onfly.com.br/expense/expenditure

curl --location --request GET 'https://api.onfly.com.br/expense/expenditure?include=permissions,expenditureType,rdv&page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&startOccurrenceDate=2020-05-01&endOccurrenceDate=2021-05-31' \
--header 'Authorization: Bearer token' \
--header 'Content-Type: application/x-www-form-urlencoded' \

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/expense/expenditure?include=permissions,expenditureType,rdv&page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&startOccurrenceDate=2020-05-01&endOccurrenceDate=2021-05-31",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token",
    "Content-Type: application/x-www-form-urlencoded"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")

headers = {
  'Authorization': 'Bearer token',
  'Content-Type': 'application/x-www-form-urlencoded'
}
conn.request("GET", "/expense/expenditure?include=permissions,expenditureType,rdv&page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&startOccurrenceDate=2020-05-01&endOccurrenceDate=2021-05-31", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");


var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/expense/expenditure?include=permissions,expenditureType,rdv&page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&startOccurrenceDate=2020-05-01&endOccurrenceDate=2021-05-31", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": [
        {
            "id": 17770,
            "description": "teste com Marcelo",
            "date": "2020-05-25",
            "amount": 5000,
            "isReimbursable": true,
            "receipts": [
                "RC20631T"
            ],
            "rdvId": null,
            "isValid": true,
            "userId": 13,
            "expenditureTypeId": 1,
            "expenditureType": {
                "data": {
                    "id": 1,
                    "name": "Alimentação",
                    "icon": "mdi-food-fork-drink",
                    "createdAt": "2018-08-30 17:11:40",
                    "updatedAt": "2020-01-25 09:18:08"
                }
            },
            "permissions": {
                "show": true,
                "edit": true,
                "delete": true
            },
            "createdAt": "2020-05-25 16:32:54",
            "updatedAt": "2020-05-25 16:32:54"
        },
        {
            "id": 17669,
            "description": "Teste",
            "date": "2020-05-14",
            "amount": 2555,
            "isReimbursable": true,
            "receipts": [
                "RC20505C"
            ],
            "rdvId": 3833,
            "isValid": false,
            "userId": 22,
            "expenditureTypeId": 3,
            "expenditureType": {
                "data": {
                    "id": 3,
                    "name": "Materiais de Escritório",
                    "icon": "mdi-crown",
                    "createdAt": "2018-08-30 17:12:33",
                    "updatedAt": "2020-05-15 17:34:33"
                }
            },
            "permissions": {
                "show": true,
                "edit": false,
                "delete": false
            },
            "createdAt": "2020-05-20 17:02:22",
            "updatedAt": "2020-05-22 13:53:49",
            "rdv": {
                "data": {
                    "id": 3833,
                    "name": "teste",
                    "protocol": "#20203833",
                    "motive": "teste",
                    "ownerId": 22,
                    "hasAnnexes": true,
                    "advancePaymentsId": [],
                    "advanceAmount": 0,
                    "reimbursableAmount": 2555,
                    "totalAmount": 2555,
                    "status": 2,
                    "expendituresId": [
                        17669
                    ],
                    "flyOrdersId": [],
                    "hotelOrdersId": [],
                    "autoOrdersId": [],
                    "costCenterId": 10,
                    "tagsIds": [],
                    "permissions": {
                        "show": true,
                        "delete": false,
                        "edit": false,
                        "sendToApproval": false,
                        "archive": false
                    },
                    "createdAt": "2020-05-22 13:53:49",
                    "updatedAt": "2020-05-22 13:54:02"
                }
            }
        }]
  }

Requisição HTTP

GET https://api.onfly.com.br/expense/expenditure

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
startOccurrenceDate true não Filtra por data de quando ocorreu a despesa - início.
Date YYYY-MM-DD
endOccurrenceDate true não Filtra por data de quando ocorreu a despesa - fim.
Date YYYY-MM-DD
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
perPage 10 não Caso paginado, mostra o número de registros por página
Inteiro
sortOrder desc não Ordenação
String
sortBy id não Campo para trazer ordenado
String
include - não As inclusões disponíveis são ["user", "expenditureType", "rdv"]

Mostra uma despesa apenas

Requisição HTTP

GET https://api.onfly.com.br/expense/expenditure/{expenditure_id}

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
include - Não As inclusões disponíveis são ["user", "expenditureType", "rdv"]

Criar despesa

Requisição:

{
    "date": "2020-01-05",
    "expenditureTypeId": 1,
    "amount" : 3000,
    "description": "Almoço com lead",
    "userId": 1
}
curl --location --request POST 'http://api.onfly.com.br/expense/expenditure' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "date": "2020-01-05",
    "expenditureTypeId": 1,
    "amount" : 3000,
    "description": "Almoço com lead",
    "userId": 1
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/expense/expenditure",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"date\": \"2020-01-05\",\n\t\"expenditureTypeId\": 1,\n\t\"amount\" : 3000,\n\t\"description\": \"Almoço com lead\",\n\t\"userId\": 1\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"date\": \"2020-01-05\",\n\t\"expenditureTypeId\": 1,\n\t\"amount\" : 3000,\n\t\"description\": \"Almoço com lead\",\n\t\"userId\": 1\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/expense/expenditure", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"date":"2020-01-05","expenditureTypeId":1,"amount":3000,"description":"Almoço com lead","userId":1});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/expense/expenditure", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 24,
        "description": "Almoço com lead",
        "date": "2020-01-05",
        "amount": 3000,
        "isReimbursable": true,
        "receipts": [],
        "rdvId": null,
        "userId": 1,
        "expenditureTypeId": 1,
        "createdAt": "2020-01-20 22:23:36",
        "updatedAt": "2020-01-20 22:23:36"
    }
}

Requisição HTTP

POST https://api.onfly.com.br/expense/expenditure

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
date - Sim Data que ocorreu a despesa.
Formato: yyyy-mm-dd - Min: Antes do momento de criação
Alpha-Numérico
expenditureTypeId - Sim Tipo da despesa que ocorreu.
Inteiro
amount - Sim Quantidade gasta na despesa.
Min: 1
Inteiro
description - Sim Breve descrição da despesa.
Min: 3 chars - Max: 2000 chars
userId - Sim Usuário que realizou a despesa
Inteiro
rdvId - Não Rdv no qual a despesa será adicionada
Inteiro
isReimbursable true Não Se a empresa é reembolsável ou não
Boleano
include - Sim As inclusões disponíveis são ["user", "expenditureType", "rdv"]

Editar despesa

Só sera possível editar uma despesa caso ela não esteja anexada ao RDV ou que o status de se RDV seja RASCUNHO ou REPROVADO, não é necessário reenviar todos os campos para sua edição por ex: Caso deseja editar somente a data basta enviar apenas o campo date atualizado

Requisição:

{
    "amount" : 5099,
    "description": "Almoço com lead de Pernambuco"
}
curl --location --request POST 'http://api.onfly.com.br/expense/expenditure' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "amount" : 5099,
    "description": "Almoço com lead de Pernambuco",
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/expense/expenditure",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n\t\"amount\" : 5099,\n\t\"description\": \"Almoço com lead de Pernambuco\"}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\n\t\"amount\" : 5099,\n\t\"description\": \"Almoço com lead de Pernambuco\"}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/expense/expenditure", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"amount":5099,"description":"Almoço com lead de Pernambuco"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/expense/expenditure", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 24,
        "description": "Almoço com lead de Pernambuco",
        "date": "2020-01-05",
        "amount": 5099,
        "isReimbursable": true,
        "receipts": [],
        "rdvId": null,
        "userId": 1,
        "expenditureTypeId": 1,
        "createdAt": "2020-01-20 22:23:36",
        "updatedAt": "2020-01-20 22:23:36"
    }
}

Requisição HTTP

PUT https://api.onfly.com.br/expense/expenditure/{expenditureId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
date - Não Data que ocorreu a despesa.
Formato: yyyy-mm-dd - Min: Antes do momento de criação
Alpha-Numérico
expenditureTypeId - Não Tipo da despesa que ocorreu.
Inteiro
amount - Não Quantidade gasta na despesa.
Min: 1
Inteiro
description - Não Breve descrição da despesa.
Min: 3 chars - Max: 2000 chars
userId - Não Usuário que realizou a despesa
Inteiro
rdvId - Não Rdv no qual a despesa será adicionada
Inteiro
isReimbursable true Não Se a empresa é reembolsável ou não
Booleano
include - Não As inclusões disponíveis são ["user", "expenditureType", "rdv"]

Deletar despesa

Só sera possível deletar uma despesa caso ela não esteja anexada ao RDV ou que o status de se RDV seja RASCUNHO ou REPROVADO.

Requisição HTTP

DELETE https://api.onfly.com.br/expense/expenditure/{expenditureId}

Anexo de comprovantes

Tipos de anexos que aceitam anexos (type)

Para anexar comprovantes em uma despesa por favor veja na documentação Geral/Anexos

Código Descrição
1 Comprovantes de despesa.

Você pode anexar até no maximo 3 arquivos por despesa.
Os seguintes tipos de arquivos são aceitos

Tipos de Despesa

Busca todos os tipos de despesa

Requisição HTTP

GET https://api.onfly.com.br/expense/expenditure-type

Requisição:

{
    "name": "Alimentícia",
    "icon": "mdi-food-fork-drink"
}
curl --location --request POST 'http://api.onfly.com.br/expense/expenditure-type' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "name": "Alimentícia",
    "icon": "mdi-food-fork-drink"
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/expense/expenditure-type",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\r\n\t\"name\": \"Alimentícia\",\r\n\t\"icon\": \"mdi-food-fork-drink\"\r\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\r\n\t\"name\": \"Alimentícia\",\r\n\t\"icon\": \"mdi-food-fork-drink\"\r\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/expense/expenditure-type", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"name":"Alimentícia","icon":"mdi-food-fork-drink"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/expense/expenditure-type", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 11,
        "name": "Alimentícia",
        "icon": "mdi-food-fork-drink",
        "createdAt": "2020-01-20 22:34:39",
        "updatedAt": "2020-01-20 22:34:39"
    }
}

Criar tipo despesa

Requisição HTTP

POST https://api.onfly.com.br/expense/expenditure-type

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Sim Nome do tipo de despesa.
Min: 2 chars - Max: 190 chars
Alpha-Numérico - Unico
icon mdi-square-inc-cash Não Icone grafico para representar o tipo, para mais informações leia nesta documentação Geral/Icone.
Alpha-Numérico

Editar tipo despesa

Não é necessário reenviar todos os campos para sua edição por ex: Caso deseja editar somente o nome basta enviar apenas o campo name atualizado

Requisição:

{
    "name": "Alimento"
}
curl --location --request POST 'http://api.onfly.com.br/expense/expenditure-type' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data-raw '{
    "name": "Alimento",
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.onfly.com.br/expense/expenditure-type",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\r\n\t\"name\": \"Alimento\"\r\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import mimetypes
conn = http.client.HTTPSConnection("http://api.onfly.com.br")
payload = "{\r\n\t\"name\": \"Alimento\"\r\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer token'
}
conn.request("POST", "/expense/expenditure-type", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer token");

let raw = JSON.stringify({"name":"Alimento"});

let requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("http://api.onfly.com.br/expense/expenditure-type", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": {
        "id": 12,
        "name": "Alimento",
        "icon": "mdi-food-fork-drink",
        "createdAt": "2020-01-20 22:36:09",
        "updatedAt": "2020-01-20 22:36:09"
    }
}

Requisição HTTP

PUT https://api.onfly.com.br/expense/expenditure-type/{expenditureTypeId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
name - Não Nome do tipo de despesa.
Min: 2 chars - Max: 190 chars
Alpha-Numérico - Unico
icon mdi-square-inc-cash Não Icone grafico para representar o tipo, para mais informações leia nesta documentação Geral/Icone.
Alpha-Numérico

Deletar tipo despesa

Para deletar o tipo de despesa entre em contato com nosso time de TI.

RDV

Busca todos os RDVs

Esse endpoint busca todos RDvs cadastrados.

Requisição

GET https://api.onfly.com.br/expense/rdv?ownerId=1&include=owner,costCenter,history,tags,permissions&page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&startDate=2020-05-01&endDate=2020-05-31

curl --location --request GET 'https://api.onfly.com.br/expense/rdv?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,history,tags,permissions&startDate=2020-05-01&endDate=2020-05-31' \
--header 'Authorization: Bearer token'


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/expense/rdv?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,history,tags,permissions&startDate=2020-05-01&endDate=2020-05-31",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")
payload = ''
headers = {
  'Authorization': 'Bearer token'
}
conn.request("GET", "/expense/rdv?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,history,tags,permissions&startDate=2020-05-01&endDate=2020-05-31", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/expense/rdv?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,history,tags,permissions&startDate=2020-05-01&endDate=2020-05-31", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": [
        {
            "id": 3805,
            "name": "Viagem para fort lauderdale",
            "protocol": "#20203801",
            "motive": "reuniao comercial",
            "ownerId": 1,
            "hasAnnexes": true,
            "advancePaymentsId": [],
            "advanceAmount": 0,
            "reimbursableAmount": 108090,
            "totalAmount": 108090,
            "status": 2,
            "expendituresId": [
                17538,
                17544,
                17561
            ],
            "flyOrdersId": [],
            "hotelOrdersId": [],
            "autoOrdersId": [],
            "costCenterId": 29,
            "tagsIds": [],
            "permissions": {
                "show": true,
                "delete": false,
                "edit": false,
                "sendToApproval": false,
                "archive": false
            },
            "createdAt": "2020-05-13 12:32:53",
            "updatedAt": "2020-05-13 12:33:17",
            "owner": {
                "data": {
                    "id": 1123,
                    "name": "Marcelo Carvalho",
                    "email": "marcelo@onfly.com.br",
                    "avatar": "https://app.onfly.com.br/images/avatar/123.png",
                    "role": "Gerente de Viagens Onfly",
                    "groupId": 1,
                    "permission": "Administrador",
                    "createdAt": "2018-07-27 03:23:35",
                    "updatedAt": "2020-01-24 12:56:02"
                }
            },
            "costCenter": {
                "data": {
                    "id": 29,
                    "name": "Comercial",
                    "createdAt": "2019-02-12 17:42:17",
                    "updatedAt": "2020-04-02 17:53:34"
                }
            },
            "tags": {
                "data": []
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

HTTP Request

GET https://api.onfly.com.br/expense/rdv

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
startDate true não Filtra por data de quando o rdv foi cadastrado - início.
Date YYYY-MM-DD
endDate true não Filtra por data de quando o rdv foi cadastrado - fim.
Date YYYY-MM-DD
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
perPage 10 não Caso paginado, mostra o número de registros por página
Inteiro
sortOrder desc não Ordenação
String
sortBy id não Campo para trazer ordenado
String
include - não As inclusões disponíveis são ['owner','advancePayments', 'expenditures', 'costCenter', 'tags', 'flyOrders', 'hotelOrders', 'autoOrders', history']

Mostra um rdv apenas

HTTP Request

GET https://api.onfly.com.br/expense/rdv/{rdvId}

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
include - Não As inclusões disponíveis são ['owner','advancePayments', 'expenditures', 'costCenter', 'tags', 'flyOrders', 'hotelOrders', 'autoOrders', history']

Mostra um rdv apenas

HTTP Request

GET https://api.onfly.com.br/expense/rdv/{rdvId}

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
include - Não As inclusões disponíveis são ['owner','advancePayments', 'expenditures', 'costCenter', 'tags', 'flyOrders', 'hotelOrders', 'autoOrders', history']

Enviar um RDV para aprovação

HTTP Request

POST https://api.onfly.com.br/expense/rdv/send-to-approval/{advancePaymentId}

Arquivar um RDV

Apenas é possível arquivar RDVs com status: PENDENTE DE APROVAÇÃO ou PENDENTE DE PAGAMENTO

HTTP Request

POST https://api.onfly.com.br/expense/rdv/archive/{advancePaymentId}

Deletar um RDV

HTTP Request

DELETE https://api.onfly.com.br/expense/rdv/{advancePaymentId}

Criar um RDV

HTTP Request

Requisição

POST https://api.onfly.com.br/expense/rdv

{
  "title" : "Viagem para china",
  "reason": "compra de insumos",
  "userId": 1,
  "costCenterId" : 1
}


curl --location --request POST 'https://api.onfly.com.br/expense/rdv' \
--header 'Authorization: Bearer token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'title=Viagem para china' \
--data-urlencode 'reason=compra de insumos' \
--data-urlencode 'userId=1' \
--data-urlencode 'costCenterId=1'


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/expense/rdv",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "title=Viagem%20para%20china&reason=compra%20de%20insumos&userId=1&costCenterId=1",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token",
    "Content-Type: application/x-www-form-urlencoded"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



import requests

url = "https://api.onfly.com.br/expense/rdv"

payload = 'title=Viagem%20para%20china&reason=compra%20de%20insumos&userId=1&costCenterId=1'
headers = {
  'Authorization': 'Bearer token',
  'Content-Type': 'application/x-www-form-urlencoded'
}

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))



var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");

var urlencoded = new URLSearchParams();
urlencoded.append("title", "Viagem para china");
urlencoded.append("reason", "compra de insumos");
urlencoded.append("userId", "1");
urlencoded.append("costCenterId", "1");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/expense/rdv", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:


{
    "data": {
        "id": 3860,
        "name": "Viagem para china",
        "protocol": "#20203860",
        "motive": "compra de insumos",
        "ownerId": 1,
        "hasAnnexes": false,
        "advancePaymentsId": [],
        "advanceAmount": 0,
        "reimbursableAmount": 0,
        "totalAmount": 0,
        "status": 1,
        "expendituresId": [],
        "flyOrdersId": [],
        "hotelOrdersId": [],
        "autoOrdersId": [],
        "costCenterId": 1,
        "tagsIds": [],
        "createdAt": "2020-05-27 11:38:24",
        "updatedAt": "2020-05-27 11:38:24"
    }
}

POST https://api.onfly.com.br/expense/rdv

Parâmetros

Parâmetro Obrigatório Descrição
title sim título do RDV
string
reason sim motivo do reembolso do RDV
string
annexes não ID dos anexos
array
userId sim id do usuário
inteiro
tagsId não lista de ids de tags
array
costCenterId sim centro de custo
inteiro

Adiantamento de Viagens

É possível listar adiantamentos, atualizar ou até mesmo criar adiantamentos.

Adiantamentos são poderosos quando uma empresa precisa adiantar valores aos colaboradores em viagens.

Busca todos os Adiantamentos de viagens

Esse endpoint busca todos os Adiantamentos

Requisição

GET https://api.onfly.com.br/expense/advance-payment?ownerId=1&include=owner,costCenter,tags,permissions&page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&startDate=2020-05-01&endDate=2020-05-31

curl --location --request GET 'https://api.onfly.com.br/expense/advance-payment?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,tags,permissions&startDate=2020-05-01&endDate=2020-05-31' \
--header 'Authorization: Bearer token'


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/expense/advance-payment?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,tags,permissions&startDate=2020-05-01&endDate=2020-05-31",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")
payload = ''
headers = {
  'Authorization': 'Bearer token'
}
conn.request("GET", "/expense/advance-payment?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,tags,permissions&startDate=2020-05-01&endDate=2020-05-31", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/expense/advance-payment?page=1&perPage=10&sortOrder=desc&sortBy=id&seeAll=false&ownerId=1&include=owner,costCenter,tags,permissions&startDate=2020-05-01&endDate=2020-05-31", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:


{
    "data": [
        {
            "id": 56,
            "protocol": "#000056",
            "name": "Adiantamento referente ao RDV 512",
            "reason": null,
            "userId": 596,
            "amount": 12000,
            "rdvId": 512,
            "type": 1,
            "status": 5,
            "createdAt": "2019-09-30 16:35:17",
            "updatedAt": "2020-05-26 16:53:22"
        },
        {
            "id": 60,
            "protocol": "#000060",
            "name": "Adiantamento referente ao RDV 527",
            "reason": null,
            "userId": 596,
            "amount": 20000,
            "rdvId": 527,
            "type": 1,
            "status": 5,
            "createdAt": "2019-09-30 16:35:17",
            "updatedAt": "2020-05-26 16:53:22"
        },
        {
            "id": 102,
            "protocol": "#000102",
            "name": "Adiantamento referente ao RDV 880",
            "reason": null,
            "userId": 596,
            "amount": 20000,
            "rdvId": 880,
            "type": 1,
            "status": 5,
            "createdAt": "2019-09-30 16:35:17",
            "updatedAt": "2020-05-26 16:53:22"
        },
        {
            "id": 22,
            "protocol": "#000022",
            "name": "Adiantamento referente ao RDV 128",
            "reason": null,
            "userId": 1,
            "amount": 30000,
            "rdvId": 128,
            "type": 1,
            "status": 5,
            "createdAt": "2019-09-30 16:35:17",
            "updatedAt": "2020-05-26 16:53:22"
        },
        {
            "id": 43,
            "protocol": "#000043",
            "name": "Adiantamento referente ao RDV 361",
            "reason": null,
            "userId": 1,
            "amount": 40000,
            "rdvId": 361,
            "type": 1,
            "status": 5,
            "createdAt": "2019-09-30 16:35:17",
            "updatedAt": "2020-05-26 16:53:22"
        },
        {
            "id": 109,
            "protocol": "#000109",
            "name": "Adiantamento para viagem para SP (VtexDay Brasil)",
            "reason": "Precisarei de adiantamento de viagem, para comprar material para o stand",
            "userId": 1,
            "amount": 50000,
            "rdvId": null,
            "type": 1,
            "status": 5,
            "createdAt": "2019-10-01 08:57:06",
            "updatedAt": "2019-10-01 09:18:02"
        },
        {
            "id": 141,
            "protocol": "#000141",
            "name": "adiantamento para viagem para brasília",
            "reason": "preciso do adiantamento",
            "userId": 1,
            "amount": 40000,
            "rdvId": null,
            "type": 1,
            "status": 2,
            "createdAt": "2019-11-21 15:09:48",
            "updatedAt": "2019-11-21 15:09:57"
        },
        {
            "id": 145,
            "protocol": "#000145",
            "name": "Viagem para Alemanha",
            "reason": "viagem parar ajekjkdjfakj",
            "userId": 1,
            "amount": 100000,
            "rdvId": null,
            "type": 1,
            "status": 2,
            "createdAt": "2019-11-28 14:30:41",
            "updatedAt": "2019-11-28 14:30:59"
        },
        {
            "id": 225,
            "protocol": "#000225",
            "name": "Viajem pra sp",
            "reason": "Fechad negocio",
            "userId": 1,
            "amount": 9000,
            "rdvId": null,
            "type": 1,
            "status": 4,
            "createdAt": "2020-05-12 23:50:26",
            "updatedAt": "2020-05-12 23:51:08"
        },
        {
            "id": 29,
            "protocol": "#000029",
            "name": "Adiantamento referente ao RDV 245",
            "reason": null,
            "userId": 13,
            "amount": 50000,
            "rdvId": 245,
            "type": 1,
            "status": 5,
            "createdAt": "2019-09-30 16:35:17",
            "updatedAt": "2020-05-26 16:53:22"
        }
    ],
    "meta": {
        "pagination": {
            "total": 87,
            "count": 10,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 9,
            "links": {
                "next": "https://api.onfly.com.br/expense/advance-payment?page=2"
            }
        }
    }
}

HTTP Request

GET https://api.onfly.com.br/expense/advance-payment

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
startDate true não Filtra por data de quando o adiantamento foi cadastrado - início.
Date YYYY-MM-DD
endDate true não Filtra por data de quando o adiantamento foi cadastrado - fim.
Date YYYY-MM-DD
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
perPage 10 não Caso paginado, mostra o número de registros por página
Inteiro
sortOrder desc não Ordenação
String
sortBy id não Campo para trazer ordenado
String
include - não As inclusões disponíveis são ['user', 'rdv', 'history']

Mostra um Adiantamento apenas

HTTP Request

GET https://api.onfly.com.br/expense/advance-payment/{advancePaymentId}

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
include - Não As inclusões disponíveis são ['user', 'rdv', 'history']

Enviar um adiantamento para aprovação

HTTP Request

POST https://api.onfly.com.br/expense/advance-payment/send-to-approval/{advancePaymentId}

Travel

Através da nossa API de travel, você poderá buscar todas as solicitações de reservas realizadas, seja via aéreo, hotel ou carro.

Exemplos de chamadas para recuperar dados

    
GET https://api.onfly.com.br/travel/consumer/fly-traveller
GET https://api.onfly.com.br/travel/consumer/hotel-guest
GET https://api.onfly.com.br/travel/consumer/auto-driver


Busca viagens de aéreo

Esse endpoint busca todas as viagens de aéreo

Requisição

GET https://api.onfly.com.br/travel/consumer/fly-traveller?include=flyOrder

curl --location --request GET 'https://api.onfly.com.br/travel/consumer/fly-traveller?include=flyOrder' \
--header 'Authorization: Bearer token'



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/travel/consumer/fly-traveller?include=flyOrder",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;





import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")
payload = ''
headers = {
  'Authorization': 'Bearer token'
}
conn.request("GET", "/travel/consumer/fly-traveller?include=flyOrder", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/travel/consumer/fly-traveller?include=flyOrder", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:

{
    "data": [
        {
            "id": 137,
            "name": "Stephano Souza",
            "firstName": "Stephano",
            "lastName": "Souza",
            "amount": 32690,
            "userId": 18,
            "flyOrderId": 195,
            "createdAt": "2019-01-28 20:55:03",
            "updatedAt": "2019-01-28 20:55:36",
            "flyOrder": {
                "data": {
                    "id": 195,
                    "protocol": "#000195",
                    "type": 1,
                    "status": 3,
                    "isRoundTrip": true,
                    "outbound": {
                        "from": "CGH",
                        "to": "CNF",
                        "departureDate": "2019-02-19 11:05:00",
                        "arrivalDate": "2019-02-19 12:20:00",
                        "cia": {
                            "id": "G3",
                            "name": "VRG Linhas Aereas S.A",
                            "iata": "G3",
                            "callSign": "Gol",
                            "status": 1
                        }
                    },
                    "inbound": {
                        "from": "CNF",
                        "to": "CGH",
                        "departureDate": "2019-02-21 19:30:00",
                        "arrivalDate": "2019-02-21 20:50:00",
                        "cia": {
                            "id": "G3",
                            "name": "VRG Linhas Aereas S.A",
                            "iata": "G3",
                            "callSign": "Gol",
                            "status": 1
                        }
                    },
                    "createdAt": "2019-01-28 20:55:03",
                    "updatedAt": "2019-01-28 20:55:36"
                }
            }
        }
     ]
 }

Requisição HTTP

GET https://api.onfly.com.br/travel/consumer/fly-traveller

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
startDate true não Filtra por data de criação - início.
Date YYYY-MM-DD
endDate true não Filtra por data de criação - fim.
Date YYYY-MM-DD
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
perPage 10 não Caso paginado, mostra o número de registros por página
Inteiro
sortOrder desc não Ordenação
String
sortBy id não Campo para trazer ordenado
String
include - não As inclusões disponíveis são ["flyOrder"]

Busca viagens de hotel

Esse endpoint busca todas as viagens de hotel

Requisição

GET https://api.onfly.com.br/travel/consumer/hotel-guest?include=hotelOrder

curl --location --request GET 'https://api.onfly.com.br/travel/consumer/hotel-guest?include=hotelOrder' \
--header 'Authorization: Bearer token'



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/travel/consumer/hotel-guest?include=hotelOrder",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;





import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")
payload = ''
headers = {
  'Authorization': 'Bearer token'
}
conn.request("GET", "/travel/consumer/hotel-guest?include=hotelOrder", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/travel/consumer/hotel-guest?include=hotelOrder", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:


 {
    "data": [
        {
            "id": 2624,
            "name": "Marcelo Carvalho",
            "firstName": "Marcelo",
            "lastName": "Carvalho",
            "amount": 14809,
            "userId": 1,
            "hotelOrderId": 2300,
            "createdAt": "2020-01-15 20:39:41",
            "updatedAt": "2020-01-15 20:39:41",
            "hotelOrder": {
                "data": {
                    "id": 2300,
                    "protocol": "#002300",
                    "status": 2,
                    "checkin": "2020-01-16",
                    "checkout": "2020-01-17",
                    "hotelName": "Hotel Consulado",
                    "createdAt": "2020-01-15 20:39:41",
                    "updatedAt": "2020-01-16 09:53:30"
                }
            }
        }
    ]
 }

Requisição HTTP

GET https://api.onfly.com.br/travel/consumer/hotel-guest

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
startDate true não Filtra por data de criação - início.
Date YYYY-MM-DD
endDate true não Filtra por data de criação - fim.
Date YYYY-MM-DD
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
perPage 10 não Caso paginado, mostra o número de registros por página
Inteiro
sortOrder desc não Ordenação
String
sortBy id não Campo para trazer ordenado
String
include - não As inclusões disponíveis são ["hotelOrder"]

Busca viagens de carro

Esse endpoint busca todas as viagens realizadas de carro

Requisição

GET https://api.onfly.com.br/travel/consumer/auto-driver?include=autoOrder

curl --location --request GET 'https://api.onfly.com.br/travel/consumer/auto-driver?include=autoOrder' \
--header 'Authorization: Bearer token'



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/travel/consumer/auto-driver?include=autoOrder",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;





import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")
payload = ''
headers = {
  'Authorization': 'Bearer token'
}
conn.request("GET", "/travel/consumer/auto-driver?include=autoOrder", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/travel/consumer/auto-driver?include=autoOrder", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:


{
    "data": [
        {
            "id": 34,
            "name": "Marcelo Carvalho",
            "firstName": "Marcelo",
            "lastName": "Carvalho",
            "amount": 24420,
            "userId": 1,
            "autoOrderId": 46,
            "createdAt": "2019-11-25 14:32:03",
            "updatedAt": "2019-11-25 14:32:03",
            "autoOrder": {
                "data": {
                    "id": 46,
                    "protocol": "#000046",
                    "status": 3,
                    "withdraw": {
                        "date": "2019-11-27 07:00:00",
                        "city": "Rodovia LMG 800 KM 03  - Lagoa Santa"
                    },
                    "deposit": {
                        "date": "2019-11-30 07:00:00",
                        "city": "Rodovia LMG 800 KM 03  - Lagoa Santa"
                    },
                    "group": "A",
                    "description": "UP, FIAT MOBI  SEM AR/DIREÇÃO",
                    "renter": "Foco",
                    "createdAt": "2019-11-25 14:32:03",
                    "updatedAt": "2020-05-12 10:55:50"
                }
            }
        }
    ]
 }

Requisição HTTP

GET https://api.onfly.com.br/travel/consumer/auto-driver

Parâmetros Query

Parâmetro Padrão Obrigatório Descrição
startDate true não Filtra por data de criação - início.
Date YYYY-MM-DD
endDate true não Filtra por data de criação - fim.
Date YYYY-MM-DD
paginate true não Define se os resultados da API ira retornar paginado ou não.
Booleano
page 1 não Caso paginado, aqui é definido o ponteiro da pagina que deseja
Inteiro
perPage 10 não Caso paginado, mostra o número de registros por página
Inteiro
sortOrder desc não Ordenação
String
sortBy id não Campo para trazer ordenado
String
include - não As inclusões disponíveis são ["autoOrder"]

Budgets

Com a nossa API de budget, você consegue controlar melhor o orçamento de viagens, por centro de custos e colaborador da empresa.

Recuperar Budget

Requisição

GET https://api.onfly.com.br/settings/budget

curl --location --request GET 'https://api.onfly.com.br/settings/budget' \
--header 'Authorization: Bearer token'



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.onfly.com.br/settings/budget",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer token"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;





import http.client
import mimetypes
conn = http.client.HTTPSConnection("api.onfly.com.br")
payload = ''
headers = {
  'Authorization': 'Bearer token'
}
conn.request("GET", "/travel/consumer/fly-traveller?include=flyOrder", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))


var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer token");

var urlencoded = new URLSearchParams();

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://api.onfly.com.br/settings/budget", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Resposta:


{
    "data": [
        {
            "id": 1,
            "yearUnderBudget": 2020,
            "details": {
                "1": {
                    "costCenterId": 1,
                    "allowOverbuying": false,
                    "overBudget": true,
                    "overBudgetAmount": 413159,
                    "underBudgetAmount": 1050000
                },
                "29": {
                    "costCenterId": 29,
                    "allowOverbuying": false,
                    "overBudget": false,
                    "overBudgetAmount": 0,
                    "underBudgetAmount": 32436145
                },
                "30": {
                    "costCenterId": 30,
                    "allowOverbuying": true,
                    "overBudget": true,
                    "overBudgetAmount": 1000,
                    "underBudgetAmount": 600000
                },
                "2646": {
                    "costCenterId": 2646,
                    "allowOverbuying": false,
                    "overBudget": false,
                    "overBudgetAmount": 0,
                    "underBudgetAmount": 19800000
                },
                "4050": {
                    "costCenterId": 4050,
                    "allowOverbuying": true,
                    "overBudget": false,
                    "overBudgetAmount": 0,
                    "underBudgetAmount": 3615001
                },
                "4108": {
                    "costCenterId": 4108,
                    "allowOverbuying": false,
                    "overBudget": true,
                    "overBudgetAmount": 1000,
                    "underBudgetAmount": 1500000
                }
            },
            "createdAt": "2020-02-13 14:06:46",
            "updatedAt": "2020-05-20 11:49:18"
        }
    ]
}


Requisição HTTP

GET https://api.onfly.com.br/settings/budget

Geral

Icones

Busca todos os icones que podem ser utilizados

HTTP Request

GET https://api.onfly.com.br/general/icon

Retorna HTML do icone

HTTP Request

GET https://api.onfly.com.br/general/icon/image/{iconCode}

Anexos

Anexar Arquivo

Envia um arquivo para nosso sistema, esse é a unica requisição em nosso sistema que o tipo é form-data por se tratar de ser upload de arquivo, os tipos aceitos dependem de da entidade no qual o arquivo vai ser anexada para saber mais sobre os tipos de arquivos que aceitam anexos basta ir nesta documentação para Geral/Codigos

Requisição HTTP

PUT https://api.onfly.com.br/general/attachment/{entityType}/{type}/{entityId}

Corpo da Requisição

Parâmetro Padrão Obrigatório Descrição
file - Sim Data que ocorreu a despesa.
Formatos: yyyy-mm-dd - Max: 4 Mb
Alpha-Numérico

Códigos

Permissões de usuários (permissions)

Código Descrição
manager Administrador do sistema, possui todas as permissões.
travel_manager Administrador de viagens, possui as mesmas permissões que employees porem pode comprar para outros colaboradores
employee Colaborador basico, possui a capacidade de gerar despesas e reservar passagens apenas para ele mesmo

Tipos de entidades que aceitam anexos (entityType)

Código Descrição
4 Despesas.

Tipos de documentos aceitos na plataforma (type)

Código Descrição
1 CPF.
2 Passaporte.