API

shell ruby python javascript

Introdução

Para começar a utilizar a API do Procfy, você precisará de um token de API. Os tokens de API permitem que o Procfy rastreie o uso de sua API por token.

Os tokens de API são únicas para cada conta e podem ser gerenciadas pelo painel api tokens.

Cada token possui um conjunto de permissões que determinam quais recursos da API ela pode acessar. Por exemplo, uma token pode ter permissão para criar e excluir documentos, mas não para criar ou excluir contatos. Você pode gerenciar essas permissões no painel api tokens.

Criando um token de API

Para criar um token de API, acesse o painel api key ou clique no seu nome no canto superior esquerdo da tela e selecione Configurações da Conta.

Adicionar chave de API


Após acessar as Configurações da Conta, selecione a opção Tokens da API

Adicionar chave de API



Ao acessar a tela de Tokens da API pela primeira vez, você verá uma imagem semelhante a esta:

Adicionar chave de API


Para criar um novo token de API, clique no botão Adicionar.

Configurando um token de API

Ao clicar no botão Adicionar, você verá uma imagem semelhante a esta:

Adicionar chave de API

Nessa interface, é possível personalizar o nome do token de API, incluir uma descrição, se desejado e definir a duração do token. Após concluir a configuração do token de API, basta clicar no botão Criar Api Token para aplicar as configurações.

Visualizando um token de API

Após acessar as Configurações da Conta, e selecionar a opção Tokens da API, você verá uma imagem semelhante a esta:

Adicionar chave de API

Nessa tela, é possível visualizar o nome do token de API, verificar seu status de ativação, consultar a última vez que foi utilizada e conferir a descrição. Para visualizar o token, basta clicar na seta localizada no canto direito da tela.


Ao clicar na seta, você verá uma imagem semelhante a esta:

Adicionar chave de API

Nessa tela, você pode visualizar a chave vinculada ao token de API. Para copiá-la, simplesmente clique no botão Copiar. Se desejar editar o token de API, utilize o botão Editar. Além disso, é possível excluir o token de API clicando no botão Excluir.

Postman

Introdução

O Postman é uma ferramenta que permite testar e documentar APIs. Com o Postman, você pode enviar solicitações HTTP para o servidor e visualizar as respostas. O Postman também permite criar coleções de solicitações, que podem ser compartilhadas com outras pessoas.

Para começar a usar o Postman, você precisa criar uma conta no site postman.com. Após criar uma conta, você pode baixar o aplicativo Postman e fazer login com suas credenciais.

Importando Coleção no Postman

Você pode acessar a coleção da API do Procfy no Postman clicando no botão abaixo:

Rode no Postman

Importando a coleção

Para importar a coleção no Postman, siga os passos abaixo:


1. Clique no botão Run in Postman e depois em Fork Collection.

Adicionar chave de API




2. Faça login no Postman, se necessário.

Adicionar chave de API




3. Clique no botão Fork collection para importar a coleção.

Adicionar chave de API




4. Após importar a coleção, você verá a coleção Procfy API no menu lateral esquerdo.

Adicionar chave de API

Configurando o ambiente

Para configurar as variáveis de ambiente no Postman, siga os passos abaixo:


1. Clique no Procfy API no menu lateral esquerdo.

Adicionar chave de API




2. Clique na aba Authorization.

Adicionar chave de API




3. No campo Bearer Token, insira a chave de API, que pode ser obtida no painel api tokens, veja como criar uma chave de API aqui.

Adicionar chave de API

Testando a API com o Postman

O Postman é uma ferramenta que permite testar e documentar APIs. Com o Postman, você pode enviar solicitações HTTP para o servidor e visualizar as respostas. Para testar a API do Procfy no Postman, siga os passos abaixo:


1. Selecione o que deseja testar no menu lateral esquerdo.

Adicionar chave de API




2. Após selecionar o que deseja testar, visualize as solicitações disponíveis.

Adicionar chave de API




3. Selecione a solicitação que deseja testar.

Adicionar chave de API




4. Clique no botão Send para enviar a solicitação.

Adicionar chave de API




5. Visualize a resposta da solicitação.

Adicionar chave de API




6. Pronto! Agora você pode testar a API do Procfy no Postman.

Autenticação

Introdução

Exemplo de requisição com token de acesso

curl -X GET \
  -H "Authorization: Bearer seu-token-aqui" \
  https://api.procfy.io/api/v1/exemplo
const axios = require('axios');

const TOKEN = 'seu_token_de_acesso';
const url = 'https://api.exemplo.com/recurso';

axios.get(url, {
    headers: {
        'Authorization': `Bearer ${TOKEN}`
    }
})
import requests

url = "https://api.procfy.io/api/v1/exemplo"
headers = {
    "Authorization": "Bearer seu-token-aqui"
}

response = requests.get(url, headers=headers)

print(response.text)
require 'httparty'

TOKEN = "seu_token_de_acesso"
url = "https://api.exemplo.com/recurso"

response = HTTParty.get(url, headers: { "Authorization" => "Bearer #{TOKEN}" })

puts response.body

O Procfy utiliza o padrão de autenticação baseado em token. Para autenticar uma requisição, você deve enviar o token de acesso no cabeçalho da requisição.

Todos os tokens criados no painel api tokens são compostos de 64 caracteres.

O envio do token é composto por duas partes: o tipo de autenticação e o token em si. O tipo de autenticação deve ser Bearer e o token logo em seguida, conforme o exemplo ao lado direito.

Erros

Ao enviar uma requisição com um token de acesso em branco, a API retornará o seguinte JSON com o status HTTP 400:

{
  "error": "Token not found",
  "description": "Token not found, please check your request"
}

Ao enviar uma requisição com um token de acesso inválido, a API retornará o seguinte JSON com o status HTTP 401:

{
  "error": "Invalid token",
  "description": "Invalid token, certify that you are using the correct token"
}

Ao enviar uma requisição com um token de acesso já expirado, a API retornará o seguinte JSON com o status HTTP 403:

{
  "error": "Token expired",
  "description": "Token expired, please create a new token"
}

A API do Procfy utiliza diferentes códigos de status HTTP para indicar o sucesso ou falha de uma requisição. O código de status é retornado no cabeçalho da resposta, e o corpo da resposta contém um JSON com mais detalhes sobre o erro.

Código do erro Significado
400 Bad Request -- Suas requisições estão mal formatadas
401 Unauthorized -- Seu token de acesso é inválido
403 Forbidden -- Você não tem permissão para acessar este recurso

Paginação

Introdução

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. A paginação é utilizada para dividir os resultados em páginas, facilitando a visualização e a navegação entre os resultados.

A paginação é utilizada em todas as rotas que retornam uma lista de resultados. Por exemplo, a rota de visualizar várias transações retorna uma lista de transações, e utiliza a paginação para dividir os resultados em páginas.

A paginação é controlada através dos parâmetros page e items. O parâmetro page indica o número da página, e o parâmetro items indica a quantidade de itens por página.

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Valores aceitos para os parâmetros

page

O parâmetro page deve ser um número inteiro maior que zero. O valor padrão é 1.

items

O parâmetro items deve ser um número inteiro maior que zero. O valor padrão é 25.

Exemplo

Exemplo de requisição para listar todas as transações (1ª página)

GET /api/v1/transactions

Exemplo de resposta para listar todas as transações (1ª página)

{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 39,
    "from": 1,
    "to": 25
  },
  "data": [...]
}

Exemplo de requisição para listar todas as transações (2ª página)

GET /api/v1/transactions?page=2

Exemplo de resposta para listar todas as transações (2ª página)

{
  "page": {
    "page": 2,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": null,
    "prev": 1,
    "count": 39,
    "from": 26,
    "to": 39
  },
  "data": [...]
}

Vamos fazer uma requisição para a API para listar todas as transações. Para isso, vamos utilizar o endpoint GET api/v1/transactions.

A primeira requisição pode ser feita sem a inclusão de parâmetros, o que a API interpretará como a solicitação da primeira página. Caso deseje acessar uma página específica, basta fornecer o número da página no parâmetro page.

Observe que os objetos que estão dentro da paginação são retornados no atributo data. Se os objetos forem de outro tipo, como contas bancárias, os nomes dos objetos presentes na página também serão incluídos no atributo data. Veja mais sobre isso na seção Acessando objetos de uma página.

Acessando objetos de uma página

Exemplo de resposta de uma requisição para listar todas as transações (1ª página)

{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 39,
    "from": 1,
    "to": 25
  },
  "data": [...]
}

Exemplo de resposta de uma requisição para listar todos os contatos (1ª página)

{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 39,
    "from": 1,
    "to": 25
  },
  "data": [...]
}

Ao realizar requisições para listar objetos paginados, como transações ou contatos, a API retorna uma estrutura consistente para facilitar a manipulação e a navegação pelos dados. Vamos explorar dois exemplos: transações e contatos.

Exemplo

Ao requisitar a listagem de todas as transações, a resposta é um objeto contendo o atributo data, o qual encapsula uma lista de transações disponíveis. A estrutura adotada facilita a identificação e manipulação desses dados específicos.

De maneira análoga, ao requisitar a listagem de contatos, a resposta apresenta o atributo data contendo a lista correspondente. A estrutura é a mesma, independentemente do tipo de objeto solicitado.

Exemplo Prático

Exemplo de como acessar objetos de uma página

require 'httparty'

response = HTTParty.get('https://api.procfy.io/api/v1/transacoes?page=1')

# Acessando objetos de uma página
transactions = response.parsed_response['transactions']

# Agora, você pode manipular a lista de transações conforme necessário
puts transactions
const axios = require('axios');

axios.get('https://api.procfy.io/api/v1/transacoes?page=1')
  .then(response => {
    // Acessando objetos de uma página
    const transactions = response.data.transactions;

    // Agora, você pode manipular a lista de transações conforme necessário
    console.log(transactions);
  })
  .catch(error => console.error(error));
import requests

api_url = 'https://api.procfy.io/api/v1/transacoes?page=1'

response = requests.get(api_url)

# Acessando objetos de uma página
transactions = response.json()['transactions']

# Agora, você pode manipular a lista de transações conforme necessário
print(transactions)
#!/bin/bash

API_URL="https://api.procfy.io/api/v1/transacoes?page=1"

# Fazendo a requisição e armazenando a resposta em um arquivo temporário
response_file=$(mktemp)
curl -s "$API_URL" > "$response_file"

# Acessando objetos de uma página
transactions=$(jq -r '.transactions' "$response_file")

# Agora, você pode manipular a lista de transações conforme necessário
echo "$transactions"

# Limpando o arquivo temporário
rm "$response_file"

Considerando a requisição para listar transações, ao acessar response.data, você terá acesso direto à lista de transações retornadas. Essa abordagem proporciona clareza e praticidade ao trabalhar com objetos paginados em ambientes de programação.

Erros

Enviando items com valor menor ou igual a zero

{
  "error": "Pagination error",
  "description": "expected :items >= 1; got 0"
}

Enviando page com valor menor ou igual a zero

{
  "error": "Pagination error",
  "description": "expected :page >= 1; got 0"
}

Parâmetros menores ou iguais a zero

Se a requisição enviar o parâmetro page com um valor menor ou igual a zero, ou enviar o parametro items com um valor menor ou igual a zero, a API retornará os erros ao lado.

Enviando page com valor 99, sendo que o número de páginas é 2

{
  "error": "Pagination error",
  "description": "expected :page in 1..2; got 99"
}

Parâmetros maiores que o número de páginas

Caso o parâmetro page seja maior que o número de páginas, a API retornará o erro ao lado.

Padrão de respostas

Visualizando vários objetos

Exemplo de resposta contendo uma lista de transações

{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 39,
    "from": 1,
    "to": 25
  },
  "data": [...]
}

Por padrão a API busca retornar os JSONs no mesmo padrão, para facilitar a integração com a API. Abaixo você pode ver um exemplo de como é o padrão de resposta da API.

Quando a API retorna uma lista de objetos, ela retorna um JSON com os seguintes atributos:

Atributo Tipo Descrição
page object Objeto da paginação
objects array Lista de objetos

O objeto da paginação possui os seguintes atributos:

Atributo Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página
pages integer Quantidade de páginas
last integer Número da última página
next integer Número da próxima página
prev integer Número da página anterior
count integer Quantidade total de itens
from integer Número do primeiro item da página
to integer Número do último item da página

Visualizando um objeto específico

Exemplo de resposta contendo uma transação específica

{
  "id": 1,
  "name": "Pagamento de boleto",
  "amount": 1000,
  "status": "paid",
  "payment_date": "2016-01-01",
  "transaction_date": "2016-01-01",
  "created_at": "2016-01-01T00:00:00.000Z",
  "updated_at": "2016-01-01T00:00:00.000Z",
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}

Quando a API retorna um objeto específico, ela retorna um JSON com os seguintes atributos:

Atributo Tipo Descrição
object object Objeto específico

Criando objetos

Exemplo de requisição para criar uma transação

POST /api/v1/transactions

Exemplo de corpo da requisição para criar uma transação

{
    "name": "Pagamento de aluguel",
    "amount": 100000,
    "due_date": "2019-01-01",
    "account_id": 1,
    "category_id": 1,
    "bank_account_id": 1
  }

Exemplo de resposta para criar uma transação

{
  "id": 1,
  "name": "Pagamento de aluguel",
  "amount": 100000,
  "status": "paid",
  "payment_date": "2019-01-01",
  "transaction_date": "2019-01-01",
  "created_at": "2019-01-01T00:00:00.000Z",
  "updated_at": "2019-01-01T00:00:00.000Z",
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

Editando objetos

Exemplo de requisição para editar uma transação

PUT /api/v1/transactions/1

Exemplo de corpo da requisição para editar uma transação

{
    "name": "Pagamento de aluguel",
    "amount": 100000,
    "due_date": "2019-01-01",
    "account_id": 1,
    "category_id": 1
  }

Exemplo de resposta para editar uma transação

{
  "id": 1,
  "name": "Pagamento de aluguel",
  "amount": 100000,
  "status": "paid",
  "due_date": "2019-01-01",
  "transaction_date": "2019-01-01",
  "created_at": "2019-01-01T00:00:00.000Z",
  "updated_at": "2019-01-01T00:00:00.000Z",
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

Transações

Introdução

Na API do Procfy as transações são representadas por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único da transação
name string Descrição da transação
description text Observações da transação
due_date date Data de vencimento da transação
paid boolean Indica se a transação foi paga
paid_at date Data de pagamento da transação
competency_date date Data de competência da transação
document_number string Número do documento da transação
installment_number integer Número da parcela da transação
installment_total integer Total de parcelas da transação
amount_cents integer Valor da transação em centavos
amount_currency string Moeda da transação
exchanged_amount_cents integer Valor da transação em centavos convertido para a moeda da conta
exchanged_amount_currency string Moeda da transação convertida para a moeda da conta
created_at string Data de criação da transação
bank_account object Objeto com os dados da conta bancária da transação
transaction_type string Tipo da transação
payment_method string Método de pagamento da transação
payment_type string Tipo de pagamento da transação
transfer_to_id integer Identificador único da conta bancária de destino da transferência


Alguns atributos quando não informados, são preenchidos automaticamente com valores padrão:

Atributo Valor padrão
paid false
transaction_type revenue
payment_type on_cash
payment_method no_payment_method
amount_cents 0
amount_currency BRL

Rotas

Método Endpoint Descrição
GET /api/v1/transactions Visualizar várias transações
GET /api/v1/transactions/:id Visualizar uma transação específica
POST /api/v1/transactions Criar uma transação
PUT /api/v1/transactions/:id Editar uma transação
DELETE /api/v1/transactions/:id Excluir

Visualizar várias transações

GET /api/v1/transactions

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar várias transações, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/transactions


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizando uma transação específica

GET /api/v1/transactions/:id

Para visualizar uma transação específica, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/transactions/:id

Criar uma transação

POST /api/v1/transactions

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

POST /api/v1/transactions

Editar uma transação

PUT /api/v1/transactions/:id

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

PUT /api/v1/transactions/:id

Excluir uma transação

DELETE /api/v1/transactions/:id

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

DELETE /api/v1/transactions/:id

Visualizando várias transações

Exemplo de requisição para visualizar várias transações

GET /api/v1/transactions

Exemplo de resposta para visualizar várias transações

{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 50,
    "from": 1,
    "to": 25
  },
  "data": [
    {
      "id": 1,
      "name": "Pagamento de aluguel",
      "amount_cents": 100000,
      "amount_currency": "BRL",
      "transaction_type": "fixed_expense",
      "payment_method": "bank_slip",
      "payment_type": "on_cash",
      "due_date": "2019-01-01",
      "paid": true,
      "bank_account": {
        "id": 1,
        "name": "Conta Corrente",
        "default": true,
        "balance_cents": 0,
        "balance_currency": "BRL",
        "agency": null
      }
    },
    {
      "id": 2,
      "description": "Recebimento de aluguel",
      "amount_cents": 100000,
      "amount_currency": "BRL",
      "transaction_type": "revenue",
      "payment_method": "bank_slip",
      "payment_type": "on_cash",
      "due_date": "2019-01-01",
      "paid": true,
      "bank_account": {
        "id": 1,
        "name": "Conta Corrente",
        "default": true,
        "balance_cents": 0,
        "balance_currency": "BRL",
        "agency": null
      }
    }
  ]
}

A API disponibiliza algumas opções de filtro para a listagem de transações. Os parâmetros aceitos são:

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página
start_date date Data de início do período de busca das transações
end_date date Data de fim do período de busca das transações
bank_account_ids array IDs das contas bancárias
category_ids array IDs das categorias
contact_ids array IDs dos contatos
cost_center_ids array IDs dos centros de custo

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Criando uma transação

Exemplo de requisição para criar uma transação

POST /api/v1/transactions

Exemplo de corpo da requisição para criar uma transação

{
  "name": "Pagamento de aluguel",
  "amount_cents": 100000,
  "amount_currency": "BRL",
  "transaction_type": "fixed_expense",
  "payment_method": "bank_slip",
  "payment_type": "on_cash",
  "bank_account_id": 1,
  "due_date": "2019-01-01",
  "paid": true
}

Exemplo de resposta para criar uma transação

{
  "id": 1,
  "name": "Pagamento de aluguel",
  "amount_cents": 100000,
  "amount_currency": "BRL",
  "transaction_type": "fixed_expense",
  "payment_method": "bank_slip",
  "payment_type": "on_cash",
  "due_date": "2019-01-01",
  "paid": true,
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

Atributo Tipo Obrigatório Descrição
name string não Descrição da transação
bank_account_id integer sim ID da conta bancária
due_date date sim Data de vencimento da transação
paid boolean não Indica se a transação foi paga
paid_at date não Data de pagamento da transação
competency_date date não Data de competência da transação
document_number string não Número do documento da transação
installment_number integer não Número da parcela
installment_total integer não Total de parcelas
amount_cents integer sim Valor da transação em centavos
amount_currency string sim Moeda da transação
description text não Observações da transação
exchanged_amount_cents integer não Valor da transação convertido em centavos
exchanged_amount_currency string não Moeda da transação convertida
transaction_type string sim Tipo da transação
payment_method string sim Método de pagamento da transação
payment_type string sim Tipo de pagamento da transação

Editando uma transação

Exemplo de requisição para editar uma transação

PUT /api/v1/transactions/:id

Exemplo de corpo da requisição para editar uma transação

{
  "name": "Pagamento de aluguel",
  "amount_cents": 100000,
  "amount_currency": "BRL",
  "transaction_type": "fixed_expense",
  "payment_method": "bank_slip",
  "payment_type": "on_cash",
  "contact_id": 1,
  "category_id": 1,
  "bank_account_id": 1,
  "due_date": "2019-01-01",
  "paid": false
}

Exemplo de resposta para editar uma transação

{
  "id": 1,
  "name": "Pagamento de aluguel",
  "amount_cents": 100000,
  "amount_currency": "BRL",
  "transaction_type": "fixed_expense",
  "payment_method": "bank_slip",
  "payment_type": "on_cash",
  "due_date": "2019-01-01",
  "paid": false,
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na tabela de atributos.

Enums

Os enums são utilizados para definir os valores permitidos para os atributos de um objeto. A sua utilização é importante para garantir a integridade dos dados.

Transaction Type

O atributo transaction_type é utilizado para definir o tipo da transação.

Valor Descrição
revenue Receita
fixed_expense Despesa Fixa
variable_expense Despesa Variável
payroll Folha de Pagamento
tax Imposto
transfer Transferência




Payment Type

O atributo payment_type é utilizado para definir o tipo de pagamento.

Valor Descrição
on_cash À Vista
installment Parcelado
recurring Recorrente




Payment Method

O atributo payment_method é utilizado para definir o método de pagamento.

Valor Descrição
no_payment_method Indefinido
credit_card Cartão de Crédito
debit_card Cartão de Débito
bank_slip Boleto Bancário
check Cheque
cash Dinheiro
pix Pix
bank_transfer Transferência Bancária
direct_debit Débito Direto
promissory Promissória




Frequencies

O atributo frequency é utilizado para definir a frequência de uma transação recorrente.

Valor Descrição
daily Diário
weekly Semanal
biweekly Quinzenal
monthly Mensal
bimonthly Bimestral
quarterly Trimestral
semiannual Semestral
annual Anual

Erros

Erros que podem ocorrer durante a execução de uma transação.

Os erros de validação retornam um objeto com a chave error e description com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

Erros de validação

Exemplo de resposta para erro de validação na criação ou edição de uma transação (Objeto em branco)

{
  "error": "Registro inválido",
  "description": "A validação falhou: Data não pode ficar em branco, Bank account não pode ficar em branco, Bank account é obrigatório(a)"
}

Os erros de validação são retornados quando os atributos obrigatórios não são informados ou quando os atributos informados não estão de acordo com as regras de validação.






Erros de enum

Exemplo de resposta para erro de enum na criação ou edição de uma transação (trasaction_type)

{
  "error": "Enum inválido",
  "description": "Tipo de transação inválido"
}

Exemplo de resposta para erro de enum na criação ou edição de uma transação (payment_method)

{
  "error": "Enum inválido",
  "description": "Método de pagamento inválido"
}

Exemplo de resposta para erro de enum na criação ou edição de uma transação (payment_type)

{
  "error": "Enum inválido",
  "description": "Tipo de pagamento inválido"
}

Os erros de enum são retornados quando os atributos informados não estão de acordo com os valores permitidos.

Anexos de transações

Introdução

Na API do Procfy os anexos são representadas por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único da transação
filename string Nome do arquivo
byte_size integer Tamanho do arquivo
content_type string Tipo do arquivo
created_at date Data de criação
url url Url do anexo para o envio do mesmo


Rotas

Método Endpoint Descrição
GET /api/v1/transactions/:id/attachments Visualizar todos os anexos da transação
GET /api/v1/transactions/:id/attachments/:id Visualizar um anexo específico da transação
POST /api/v1/transactions/:id/attachments Criar anexo em uma transação
DELETE /api/v1/transactions/:id/attachments/:id Excluir um anexo de uma transação
GET /api/v1/transactions/:id/attachments/:id/download Baixar o arquivo

Visualizar todos os anexos da transação

GET /api/v1/transactions/:id/attachments 

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar vários anexos, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/transactions/:id/attachments


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizar uma anexo específico da transação

GET /api/v1/transactions/:id/attachments/:id

Para visualizar um anexo específico, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/transactions/:id/attachments/:id

Criar anexo em uma transação

POST /api/v1/transactions/:id/attachments 

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

POST /api/v1/transactions/:id/attachments

Excluir uma anexo da transação

DELETE /api/v1/transactions/:id/attachments/:id

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

DELETE /api/v1/transactions/:id/attachments/:id

Baixar o arquivo

GET /api/v1/transactions/:id/attachments/:id/download

Para fazer download de um arquivo, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao arquivo que deseja fazer o download.

GET /api/v1/transactions/:id/attachments/:id/download

Visualizar todos os anexos da transação

Exemplo de requisição para visualizar todos os anexos da transação

GET /api/v1/transactions/:id/attachments 

Exemplo de resposta para visualizar todos os anexos da transação

{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 2,
    "from": 1,
    "to": 2
  },
  "data": [
    {
      "id": 179,
      "filename": "2022.xlsx",
      "byte_size": 242071,
      "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      "created_at": "2024-11-04T14:17:15.799-03:00",
      "url": "https://api.procfy.io/v1/transactions/14923/attachments/179/download"
    },
    {
      "id": 183,
      "filename": "my",
      "byte_size": 39898,
      "content_type": "image/jpeg",
      "created_at": "2024-11-06T14:22:39.683-03:00",
      "url": "https://api.procfy.io/api/v1/transactions/14923/attachments/183/download"
    }
  ]
} 

A API disponibiliza algumas opções de filtro para a listagem de anexos. Os parâmetros aceitos são:

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Visualizar um anexo específico da transação

Exemplo de requisição para visualizar um anexo específico da transação

GET /api/v1/transactions/:id/attachments/:id

Exemplo de resposta para visualizar um anexo específico da transação

{
  "id": 691042,
  "filename": "Backup-Procfy-06-11-2024 14-55-05.xlsx",
  "byte_size": 33164,
  "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  "created_at": "2024-11-06T15:34:24.871-03:00",
  "url": "https://api.procfy.io/api/v1/transactions/45144183/attachments/691042/download"
}

Para consultar um objeto, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja consultar.

A API vai retornar o objeto consultado, caso não ocorra nenhum erro.

Criando anexo em uma transação

Exemplo de requisição para criar anexo em uma transação

POST /api/v1/transactions/:id/attachments 

Exemplo de resposta para criar uma transação

{
  "id": 186,
  "filename": "my",
  "byte_size": 39898,
  "content_type": "image/jpeg",
  "created_at": "2024-11-06T16:09:10.038-03:00",
  "url": "https://api.procfy.io/api/v1/transactions/14923/attachments/186/download"
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

Atributo Tipo Obrigatório Descrição
filename file sim Arquivo que deseja anexar

Excluindo um anexo de uma transação

Exemplo de requisição para excluir um anexo de uma transação

DELETE /api/v1/transactions/:id/attachments/:id

Exemplo de resposta para excluir um anexo de uma transação

{
  "id": 184,
  "filename": "my",
  "byte_size": 39898,
  "content_type": "image/jpeg",
  "created_at": "2024-11-06T16:02:45.841-03:00",
  "url": "https://api.procfy.io/api/v1/transactions/14923/attachments/183/download"
}

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

A API vai retornar o objeto excluido, caso não ocorra nenhum erro.

Download de arquivo

Exemplo de requisição para download de arquivo

GET /api/v1/transactions/:id/attachments/:id/download

Para fazer download de um arquivo, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao arquivo que deseja fazer download.

A API vai retornar o arquivo criado, caso não ocorra nenhum erro.

Contas Bancárias

Introdução

Na API do Procfy as contas bancárias são representadas por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único da conta bancária
name string Nome da conta bancária
default boolean Indica se a conta bancária é a padrão
initial_balance_cents integer Saldo inicial da conta bancária em centavos
balance_cents integer Saldo da conta bancária em centavos
balance_currency string Moeda da conta bancária
agency string Número da agência da conta bancária


Alguns atributos quando não informados, são preenchidos automaticamente com valores padrão:

Atributo Valor padrão
default false
balance_cents 0
balance_currency BRL

Rotas

Método Endpoint Descrição
GET /api/v1/bank_accounts Visualizar várias contas bancárias
GET /api/v1/bank_accounts/:id Visualizar uma conta bancária específica
POST /api/v1/bank_accounts Criar uma conta bancária
PUT /api/v1/bank_accounts/:id Editar uma conta bancária
DELETE /api/v1/bank_accounts/:id Excluir uma conta bancária

Visualizar várias contas bancárias

GET /api/v1/bank_accounts

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar várias contas bancárias, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/bank_accounts


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizar uma conta bancária específica

GET /api/v1/bank_accounts/:id

Para visualizar uma conta bancária específica, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/bank_accounts/:id

Criar uma conta bancária

POST /api/v1/bank_accounts

Para criar uma conta bancária, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

POST /api/v1/bank_accounts

Editar uma conta bancária

PUT /api/v1/bank_accounts/:id

Para editar uma conta bancária, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

PUT /api/v1/bank_accounts/:id

Excluir uma conta bancária

DELETE /api/v1/bank_accounts/:id

Para excluir uma conta bancária, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

DELETE /api/v1/bank_accounts/:id

Visualizando várias contas bancárias

Exemplo de requisição para visualizar várias contas bancárias

GET /api/v1/bank_accounts

Exemplo de resposta para visualizar várias contas bancárias

{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 50,
    "from": 1,
    "to": 25
  },
  "data": [
    {
      "id": 1,
      "name": "Conta Corrente",
      "default": true,
      "balance_cents": 0,
      "balance_currency": "BRL",
      "agency": null
    },
    {
      "id": 2,
      "name": "Conta Poupança",
      "default": false,
      "balance_cents": 0,
      "balance_currency": "BRL",
      "agency": null
    }
  ]
}

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Criando uma conta bancária

Exemplo de requisição para criar uma conta bancária

POST /api/v1/bank_accounts

Exemplo de corpo da requisição para criar uma conta bancária

{
  "name": "Conta Corrente",
  "initial_balance_cents": 0,
  "balance_currency": "BRL",
  "agency": null
}

Exemplo de resposta para a requisição de criação de uma conta bancária

{
  "id": 1,
  "name": "Conta Corrente",
  "default": false,
  "balance_cents": 0,
  "balance_currency": "BRL",
  "agency": null
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

Atributo Tipo Obrigatório Descrição
name string sim Nome da conta bancária
initial_balance_cents integer sim Saldo inicial da conta bancária em centavos
balance_currency string sim Moeda da conta bancária
agency string não Número da agência da conta bancária


Editando uma conta bancária

Exemplo de requisição para editar uma conta bancária

PUT /api/v1/bank_accounts/:id

Exemplo de corpo da requisição para editar uma conta bancária

{
  "name": "Conta Corrente",
  "default": true,
  "balance_cents": 1000,
  "balance_currency": "BRL",
  "agency": null
}

Exemplo de resposta para editar uma conta bancária

{
  "id": 1,
  "name": "Conta Corrente",
  "default": true,
  "balance_cents": 1000,
  "balance_currency": "BRL",
  "agency": null
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na tabela de atributos.

Erros

Erros que podem ocorrer durante a execução de uma transação.

Os erros de validação retornam um objeto com a chave error e description com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

Erros de validação

Exemplo de resposta para erro de validação na criação ou edição de uma conta bancária (Objeto em branco)

{
  "error": "Registro inválido",
  "description": "A validação falhou: Nome não pode ficar em branco"
}

Os erros de validação são retornados quando os atributos obrigatórios não são informados ou quando os atributos informados não estão de acordo com as regras de validação.

Contatos

Introdução

Na API do Procfy as transações são representadas por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único do contato
name string Nome do contato
document_1 string CPF ou CNPJ do contato
document_2 string RG ou Inscrição Estadual do contato
sector_activity_id string Identificador único da atividade econômica do contato
email string Email do contato
phone_number string Telefone do contato
cell_phone_number string Celular do contato
birth_date date Data de nascimento do contato
description string Descrição do contato
contact_type string Tipo do contato
person_type string Tipo de pessoa do contato
addresses array Lista de endereços do contato




Atributos de endereço:

Atributo Tipo Descrição
id integer Identificador único do endereço
country string País do endereço
state string Estado do endereço
city string Cidade do endereço
address_line1 string Linha 1 do endereço
address_line2 string Linha 2 do endereço
district string Bairro do endereço
postcode string Código postal do endereço
address_number string Número do endereço




Alguns atributos quando não informados, são preenchidos automaticamente com valores padrão:

Atributo Valor padrão
person_type undefined_person
contact_type undefined_contact
country Brasil

Rotas

Método Endpoint Descrição
GET /api/v1/contacts Visualizar vários contatos
GET /api/v1/contacts/:id Visualizar um contato específico
POST /api/v1/contacts Criar um contato
PUT /api/v1/contacts/:id Editar um contato
DELETE /api/v1/contacts/:id Excluir um contato

Visualizar vários contatos

GET /api/v1/contacts

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar vários contatos, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/contacts


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizar um contato específico

GET /api/v1/contacts/:id

Para visualizar um contato específico, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/contacts/:id

Criar um contato

POST /api/v1/contacts

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

POST /api/v1/contacts

Editar um contato

PUT /api/v1/contacts/:id

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

PUT /api/v1/contacts/:id

Excluir um contato

DELETE /api/v1/contacts/:id

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

DELETE /api/v1/contacts/:id

Visualizando vários contatos

Exemplo de requisição para visualizar vários contatos

GET /api/v1/contacts

Exemplo de resposta para visualizar vários contatos

{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 2,
    "from": 1,
    "to": 2
  },
  "data": [
    {
      "id": 48,
      "name": "Fulano da Silva",
      "document_1": "99.999.999/9999-99",
      "document_2": "9999999999999",
      "email": "fulano@example.com",
      "phone_number": "(99) 99999-9999",
      "cell_phone_number": "(99) 99999-9999",
      "birth_date": "2004-12-03",
      "description": "Observações",
      "contact_type": "customer",
      "person_type": "natural",
      "addresses": [
        {
          "id": 9,
          "country": "BR",
          "state": "PR",
          "city": "Dois Vizinhos",
          "address_line1": "Endereco",
          "address_line2": "complemento",
          "district": "Bairro",
          "postcode": "11111111",
          "address_number": "123"
        }
      ]
    },
    {
      "id": 49,
      "name": "Beltrano da costa",
      "document_1": "99.999.999/9999-99",
      "document_2": "22222222222",
      "email": "beltrano@example.com",
      "phone_number": "(99) 99999-9999",
      "cell_phone_number": "(99) 99999-9999",
      "birth_date": "2004-12-03",
      "description": "Observações",
      "contact_type": "employee",
      "person_type": "undefined_person",
      "addresses": [
        {
          "id": 10,
          "country": "BR",
          "state": "RJ",
          "city": "Belford Roxo",
          "address_line1": "Endereco",
          "address_line2": "Complemento",
          "district": "Bairro",
          "postcode": "00000000",
          "address_number": "123"
        }
      ]
    }
  ]
}

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Criando um contato

Exemplo de requisição para criar um contato

POST /api/v1/contacts

Exemplo de corpo da requisição para criar um contato

{
  "name": "Nome",
  "document_1": "99.999.999/9999-99",
  "contact_type": "customer",
  "person_type": "natural",
  "document_2": "9999999999999",
  "sector_activity_id": "",
  "email": "exemplo@hotmail.com",
  "phone_number": "(99) 99999-9999",
  "cell_phone_number": "(99) 99999-9999",
  "birth_date": "2004-12-03",
  "description": "",
  "addresses_attributes": {
    "0": {
      "country": "BR",
      "state": "AL",
      "city": "Atalaia",
      "address_line1": "endereco",
      "address_line2": "complemento",
      "district": "bairro",
      "postcode": "12345678",
      "address_number": "123"
    }
  }
}

Exemplo de resposta para criar um contato

{
  "id": 47,
  "name": "Nome",
  "document_1": "99.999.999/9999-99",
  "document_2": "9999999999999",
  "sector_activity_id": null,
  "email": "exemplo@hotmail.com",
  "phone_number": "(99) 99999-9999",
  "cell_phone_number": "(99) 99999-9999",
  "birth_date": "2004-12-03",
  "description": "",
  "contact_type": "undefined_contact",
  "person_type": "undefined_person",
  "addresses": [
    {
      "id": 8,
      "country": "BR",
      "state": "AL",
      "city": "Atalaia",
      "address_line1": "endereco",
      "address_line2": "complemento",
      "district": "bairro",
      "postcode": "12345678",
      "address_number": "123"
    }
  ]
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

Atributo Tipo Obrigatório Descrição
name string sim Nome do contato
contact_type string sim Tipo do contato
person_type string sim Tipo de pessoa
email string não Email do contato
phone_number string não Telefone do contato
document_1 string não CPF/CNPJ do contato
document_2 string não RG do contato
sector_activity_id integer não ID do setor de atividade do contato
cell_phone_number string não Celular do contato
birth_date date não Data de nascimento do contato
description string não Descrição do contato
addresses_attributes object não Endereços do contato

Atributos do objeto addresses_attributes:

Atributo Tipo Obrigatório Descrição
country string sim País do endereço
state string não Estado do endereço
city string não Cidade do endereço
address_line1 string não Linha 1 do endereço
address_line2 string não Linha 2 do endereço
district string não Bairro do endereço
postcode string não Código postal do endereço
address_number string não Número do endereço

Veja a lista de atributos necessários para a criação do objeto na tabela de atributos.

Editando um contato

Exemplo de requisição para editar um contato

PUT /api/v1/contacts/:id

Exemplo de corpo da requisição para editar um contato

{
  "name": "Nome alterado",
  "document_1": "99.999.999/9999-99",
  "document_2": "9999999999999",
  "contact_type": "customer",
  "person_type": "natural",
  "sector_activity_id": "",
  "email": "exemplo@hotmail.com",
  "phone_number": "(99) 99999-9999",
  "cell_phone_number": "(99) 99999-9999",
  "birth_date": "2004-12-03",
  "description": "",
  "addresses_attributes": {
    "0": {
      "country": "BR",
      "state": "AL",
      "city": "Atalaia",
      "address_line1": "endereco",
      "address_line2": "complemento",
      "district": "bairro",
      "postcode": "12345678",
      "address_number": "123"
    }
  }
}

Exemplo de resposta para editar um contato

{
    "id": 47,
    "name": "Nome alterado",
    "document_1": "99.999.999/9999-99",
    "document_2": "9999999999999",
    "contact_type": "customer",
    "person_type": "natural",
    "sector_activity_id": null,
    "email": "example@hotail.com",
    "phone_number": "(99) 99999-9999",
    "cell_phone_number": "(99) 99999-9999",
    "birth_date": "2004-12-03",
    "description": "",
    "addresses": [
        {
            "id": 8,
            "country": "BR",
            "state": "AL",
            "city": "Atalaia",
            "address_line1": "endereco",
            "address_line2": "complemento",
            "district": "bairro",
            "postcode": "12345678",
            "address_number": "123"
        }
    ]
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na tabela de atributos.

Enums

Os enums são utilizados para definir os valores permitidos para os atributos de um objeto. A sua utilização é importante para garantir a integridade dos dados.

Person Type

O atributo person_type é utilizado para definir o tipo de pessoa.

Valor Descrição
undefined_person Indefinida
natural Pessoa física
legal Pessoa Jurídica


Contact Type

O atributo contact_type é utilizado para definir o tipo de contato.

Valor Descrição
undefined_contact Outro
customer Cliente
employee Funcionário
supplier Fornecedor
partner Parceiro
associate Associado

Erros

Erros que podem ocorrer durante a execução de um contato.

Os erros de validação retornam um objeto com a chave error e description com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

Erros de validação

Exemplo de resposta para erro de validação na criação ou edição de um contato (Objeto em branco)

{
  "error": "Registro inválido",
  "description": "A validação falhou: Nome não pode ficar em branco, Nome é muito curto (mínimo: 2 caracteres)"
}

Os erros de validação são retornados quando os atributos obrigatórios não são informados ou quando os atributos informados não estão de acordo com as regras de validação.

Centros de Custo

Introdução

Na API do Procfy os centros de custo são representados por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único do centro de custo
name string Nome do centro de custo
description text Descrição do centro de custo

Rotas

Método Endpoint Descrição
GET /api/v1/cost_centers Visualizar vários centros de custo
GET /api/v1/cost_centers/:id Visualizar um centro de custo específico
POST /api/v1/cost_centers Criar um centro de custo
PUT /api/v1/cost_centers/:id Editar um centro de custo
DELETE /api/v1/cost_centers/:id Excluir um centro de custo

Visualizar vários centros de custo

GET /api/v1/cost_centers

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar vários centros de custo, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/cost_centers


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizar um centro de custo específico

GET /api/v1/cost_centers/:id

Para visualizar um centro de custo específico, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/cost_centers/:id

Criar um centro de custo

POST /api/v1/cost_centers

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

POST /api/v1/cost_centers

Editar um centro de custo

PUT /api/v1/cost_centers/:id

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

PUT /api/v1/cost_centers/:id

Excluir um centro de custo

DELETE /api/v1/cost_centers/:id

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

DELETE /api/v1/cost_centers/:id

Visualizando vários centros de custo

Exemplo de requisição para visualizar vários centros de custo

GET /api/v1/cost_centers

Exemplo de resposta para visualizar vários centros de custo

{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 2,
    "from": 1,
    "to": 2
  },
  "data": [
    {
      "id": 58,
      "name": "Centro de custo 1",
      "description": "Descrição 1"
    },
    {
      "id": 59,
      "name": "Centro de custo 2",
      "description": "Descrição 2"
    }
  ]
}

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Criando um centro de custo

Exemplo de requisição para criar um centro de custo

POST /api/v1/cost_centers

Exemplo de corpo da requisição para criar um centro de custo

{
  "name": "Nome do centro de custo",
  "description": "Descrição"
}

Exemplo de resposta para criar um centro de custo

{
  "id": 57,
  "name": "Nome do centro de custo",
  "description": "Descrição"
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

Atributo Tipo Obrigatório Descrição
name string sim Nome do centro de custo
description text não Descrição do centro de custo

Veja a lista de atributos necessários para a criação do objeto na tabela de atributos.

Editando um centro de custo

Exemplo de requisição para editar um centro de custo

PUT /api/v1/cost_centers/:id

Exemplo de corpo da requisição para editar um centro de custo

{
  "id": 57,
  "name": "Nome do centro de custo alterado",
  "description": "Descrição"
}

Exemplo de resposta para editar um centro de custo

{
  "id": 57,
  "name": "Nome do centro de custo alterado",
  "description": "Descrição"
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na tabela de atributos.

Erros

Erros que podem ocorrer durante a execução de um centro de custo.

Os erros de validação retornam um objeto com a chave error e description com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

Erros de validação

Exemplo de resposta para erro de validação na criação ou edição de um centro de custo (Objeto em branco)

{
  "error": "Registro inválido",
  "description": "A validação falhou: Nome não pode ficar em branco, Nome é muito curto (mínimo: 2 caracteres)"
}

Os erros de validação são retornados quando os atributos obrigatórios não são informados ou quando os atributos informados não estão de acordo com as regras de validação.

Categorias

Introdução

Na API do Procfy as categorias são representados por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único da categoria
name string Nome da categoria
description text Descrição da categoria
transaction_type string Tipo de transação da categoria

Rotas

Método Endpoint Descrição
GET /api/v1/categories Visualizar várias categorias
GET /api/v1/categories/:id Visualizar uma categoria específica
POST /api/v1/categories Criar uma categoria
PUT /api/v1/categories/:id Editar uma categoria
DELETE /api/v1/categories/:id Excluir uma categoria

Visualizar várias categorias

GET /api/v1/categories

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar várias categorias, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/categories


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizar uma categoria específica

GET /api/v1/categories/:id

Para visualizar uma categoria específica, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/categories/:id

Criar uma categoria

POST /api/v1/categories

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

POST /api/v1/categories

Editar uma categoria

PUT /api/v1/categories/:id

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

PUT /api/v1/categories/:id

Excluir uma categoria

DELETE /api/v1/categories/:id

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método DELETE no endpoint correspondente ao objeto que deseja excluir.

DELETE /api/v1/categories/:id

Visualizando várias categorias

Exemplo de requisição para visualizar várias categorias

GET /api/v1/categories

Exemplo de resposta para visualizar várias categorias

{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 1,
    "from": 1,
    "to": 1
  },
  "data": [
    {
      "id": 57,
      "name": "Nome de empresa",
      "description": "Descrição"
    }
  ]
}

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Criando uma categoria

Exemplo de requisição para criar uma categoria

POST /api/v1/categories

Exemplo de corpo da requisição para criar uma categoria

{
  "name": "Nome",
  "description": "Descrição",
  "transaction_type": "revenue"
}

Exemplo de resposta para criar uma categoria

{
  "id": 57,
  "name": "Nome",
  "description": "Descrição",
  "transaction_type": "revenue"
}

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método POST no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

Atributo Tipo Obrigatório Descrição
name string sim Nome da categoria
description text não Descrição da categoria
transaction_type string sim Tipo de transação da categoria

Veja a lista de atributos necessários para a criação do objeto na tabela de atributos.

Editando uma categoria

Exemplo de requisição para editar uma categoria

PUT /api/v1/categories/:id

Exemplo de corpo da requisição para editar uma categoria

{
  "name": "Nome",
  "description": "Descrição alterada",
  "transaction_type": "revenue"
}

Exemplo de resposta para editar uma categoria

{
  "id": 57,
  "name": "Nome",
  "description": "Descrição alterada",
  "transaction_type": "revenue"
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na tabela de atributos.

Erros

Erros que podem ocorrer durante a execução de uma categoria.

Os erros de validação retornam um objeto com a chave error e description com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

Erros de validação

Exemplo de resposta para erro de validação na criação ou edição de uma categoria (Objeto em branco)

{
  "error": "Registro inválido",
  "description": "A validação falhou: Nome não pode ficar em branco"
}

Exemplo de resposta para erro de enum na criação ou edição de uma categoria (transaction_type)

{
  "error": "Enum inválido",
  "description": "Tipo de transação inválido"
}

Os erros de validação são retornados quando os atributos obrigatórios não são informados ou quando os atributos informados não estão de acordo com as regras de validação.

Usuários

Introdução

Na API do Procfy os usuários são representados por um objeto JSON com os seguintes atributos:

Atributo Tipo Descrição
id integer Identificador único do usuário
name string Nome do usuário
email string Email do usuário

Rotas

Método Endpoint Descrição
GET /api/v1/users Visualizar vários usuários
GET /api/v1/users/:id Visualizar um usuário específico
PUT /api/v1/users/:id Editar um usuário

Visualizar vários usuários

GET /api/v1/users

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Para visualizar vários usuários, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/users


Parâmetros aceitos

Parâmetro Tipo Descrição
page integer Número da página
items integer Quantidade de itens por página

Visualizar um usuário específico

GET /api/v1/users/:id

Para visualizar um usuário específico, você deve fazer uma requisição para a API utilizando o método GET no endpoint correspondente ao objeto que deseja visualizar.

GET /api/v1/users/:id

Editar um usuário

PUT /api/v1/users/:id

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

PUT /api/v1/users/:id

Visualizando vários usuários

Exemplo de requisição para visualizar vários usuários

GET /api/v1/users

Exemplo de resposta para visualizar vários usuários

{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 2,
    "from": 1,
    "to": 2
  },
  "data": [
    {
      "id": 58,
      "name": "Usuário 1",
      "email": "user1@example.com"
    },
    {
      "id": 59,
      "name": "Usuário 2",
      "email": "user2@example.com"
    }
    ]
}

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção paginação.

Editando um usuário

Exemplo de requisição para editar um usuário

PUT /api/v1/users/:id

Exemplo de corpo da requisição para editar um usuário

{
  "name": "Usuario",
  "email": "user@example.com"
}

Exemplo de resposta para editar um usuário

{
  "id": 1,
  "name": "Usuario",
  "email": "user@example.com"
}

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método PUT no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na tabela de atributos.

Erros

Erros que podem ocorrer durante a execução de uma categoria.

Os erros de validação retornam um objeto com a chave error e description com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

Erros de validação

Exemplo de resposta para erro de validação na criação ou edição de uma categoria (Objeto em branco)

{
  "error": "Registro inválido",
  "description": "A validação falhou: E-mail não pode ficar em branco, E-mail não é válido"
}

É apresentado um exemplo de resposta para erro de validação à direita.