RabbitWork

API RabbitWork V1 (1.0)

Download OpenAPI specification:Download

Introdução

O RabbitWork é um software de controle de horas e gestão de projetos para equipes e freelancers, feito para tornar a gestão do tempo simples, rápida e precisa.

A API do RabbitWork é um serviço web RESTful para integrar o seu workspace. Ela aceita corpos em JSON (application/json) e em formulário (application/x-www-form-urlencoded), devolve respostas em JSON e usa métodos HTTP, autenticação e códigos de status padrão. Os exemplos desta documentação usam JSON.

URL base

https://app.rabbitwork.io/api/v1

Como enviar os dados

  • GET consulta dados. Lista recursos ou busca um recurso pelo ID. Não altera nada.
  • POST cria ou atualiza um recurso.
    • Na criação, envie os campos obrigatórios, como name ou email. Os demais campos são opcionais.
    • Na atualização, envie somente os atributos que você quer alterar. O que não for enviado permanece como está.
  • DELETE remove o recurso.

Reenviar o objeto completo de um GET também grava os campos editáveis presentes nesse corpo. Na atualização, envie só o que deve mudar.

Como arquivar registros

Arquivar atualiza só o próprio registro. Os registros relacionados a ele continuam como estão e todo o histórico permanece. Envie somente active com 0. A qualquer momento o registro pode ser reativado enviando active com 1.

Arquivar o usuário 15:

POST /users/15

{ "active": 0 }

Arquivar o projeto 449:

POST /projects/449

{ "active": 0 }



Autenticação

Envie o token pessoal da API em toda requisição no header HTTP x-api-token.

Tokens pessoais são criados dentro do app do RabbitWork, com você autenticado. Eles não são criados enviando e-mail e senha para a API.

Um token pessoal tem o mesmo acesso do usuário que o criou. Mantenha-o em segredo. Não faça commit dele no GitHub, não o coloque em código que roda no navegador e não o compartilhe em canais públicos.

Tokens pessoais não ficam presos a um User-Agent e não expiram depois de 30 dias sem uso. Revogue o token no app quando a integração precisar parar de funcionar.

Criar um token pessoal

  1. Entre em app.rabbitwork.io.
  2. Abra o menu da conta e vá em Configurações.
  3. Na seção Você, abra Meus tokens (#/personal-tokens).
  4. Escolha Novo token e dê um nome que identifique a integração, como Integração com o ERP.
  5. Copie o token na hora. Por segurança, o RabbitWork mostra o valor completo só uma vez.

O administrador da conta define quem pode criar tokens (Somente administradores, Administradores e superusuários ou Todos os membros) em Configurações > Integrações > Gestão da API.

Administradores podem ver e revogar qualquer token da conta em Configurações > Integrações > Tokens da conta.

Login descontinuado

Pare de usar e-mail e senha para autenticar na API. O POST /auth está descontinuado.

Use um token pessoal. Ele é seguro, tem mais flexibilidade de uso e a gestão é feita pela interface, em Configurações > Você > Meus tokens.

O token gerado com e-mail e senha tem limite de tempo e fica preso ao user agent do navegador. Novas integrações não são mais aceitas por esse caminho. Integrações que já usam esse login podem continuar até 30 de abril de 2027. Depois dessa data, esse acesso deixa de funcionar.

Erros

A API do RabbitWork usa os códigos de status HTTP padrão para indicar se a requisição deu certo ou falhou.

  • 2xx — A requisição deu certo e a resposta traz os dados esperados.
  • 4xx — A requisição falhou por entrada inválida, parâmetro ausente ou erro de autenticação. O corpo da resposta em geral traz uma mensagem explicando o problema.
  • 5xx — Ocorreu um erro no servidor ao processar a requisição. Esses erros são inesperados e, em geral, temporários.

Cada resposta de erro inclui uma mensagem clara e, quando couber, um código de erro para identificar e tratar o problema no código.

Limite de uso

A API do RabbitWork aplica várias camadas de limite para manter o uso justo e o desempenho estável. Esses mecanismos juntos garantem estabilidade para todas as contas e permitem que planos maiores cresçam com segurança.

Os limites abaixo podem ser ajustados a qualquer momento conforme o desempenho ou o uso do sistema. Quem integra é responsável por evitar interrupção, observando o header Retry-After e aplicando espera ou nova tentativa quando o limite for atingido.

Limites disponíveis

  • Limite de autenticação — por usuário
  • Limite por token (por minuto) — por token da API
  • Limite diário da conta — compartilhado por todos os usuários e tokens da mesma conta
  • Limite por IP (global) — vale para todas as requisições, autenticadas ou não

Limite de autenticação

O login descontinuado com e-mail e senha (POST /auth) é limitado a 60 requisições por dia por usuário, para reduzir tentativas de força bruta.

Tokens pessoais são criados no app e não usam esse endpoint. Se o limite do login descontinuado for ultrapassado, a API devolve HTTP 429 Too Many Requests ou, em alguns casos, HTTP 401 Unauthorized.

Limite por token (por minuto)

Cada token da API tem uma cota de curto prazo de 600 requisições por minuto, com pico de 30 requisições por segundo. Esses limites evitam uso concorrente excessivo de uma única integração. Tokens diferentes têm limites independentes.

Se o limite for ultrapassado, a API devolve HTTP 429 Too Many Requests e inclui o erro minute_limit_exceeded ou second_limit_exceeded na resposta.

Limite diário da conta

Cada conta tem uma cota diária compartilhada entre todos os usuários e tokens, conforme o plano contratado:

A cota vigente é o limite do plano. O uso atual, as requisições restantes e o horário de renovação aparecem no app em Configurações > Integrações > Gestão da API.

Plano Limite diário
Free / teste / planos legados 50 requisições por dia
Plus 1 000 requisições por dia
Ultimate 2 500 requisições por dia
Business 5 000 requisições por dia (limite flexível*)
Business Max 25 000 requisições por dia (limite flexível*)

Se o limite for ultrapassado, a API devolve HTTP 429 Too Many Requests e inclui o erro account_daily_limit_exceeded na resposta.

* Os planos Business usam um limite flexível — requisições acima desse patamar são aceitas por um tempo, mas a resposta traz um aviso. Se o uso acima do limite for constante, o recomendado é um complemento para ampliar a cota diária.

Limite por IP (geral)

Além disso, todo o tráfego de entrada é protegido por um limite de rede de 2 000 requisições por minuto por endereço IP, independente da autenticação.

Se o limite for ultrapassado, a API devolve HTTP 429 Too Many Requests e inclui o erro ip_rate_limit_exceeded na resposta.

Headers de limite

Header Descrição
X-RateLimit-Minute Limite por minuto do token atual (limite, usado, restante, renovação)
X-RateLimit-AccountDaily Limite diário de toda a conta (limite, usado, restante, renovação)
X-RateLimit-AccountDaily-Warning Indica que a cota diária foi ultrapassada — valores possíveis:
• soft_limit_exceeded: limite flexível atingido (folga temporária dos planos Business)
• hard_limit_blocked: bloqueio rígido (requisições recusadas)
Retry-After Devolvido com HTTP 429 Too Many Requests — informa quantos segundos esperar antes de tentar de novo

Lançamentos de horas

Lançamentos de horas.

Listar lançamentos de horas (descontinuado) Deprecated

Este endpoint está descontinuado e não devolve mais dados. Use /reports/detailed para consultar lançamentos de horas.

Authorizations:
Token

Responses

Response samples

Content type
application/json
{
  • "message": "This endpoint is deprecated. Please use the new endpoint to retrieve paginated time entries: /reports/detailed.",
  • "status": "deprecated",
  • "deprecated_since": "2025-07-11"
}

Novo lançamento de horas

Novo lançamento de horas

Authorizations:
Token
Request Body schema: application/json
date_execution
string

Data em que a atividade foi executada pelo colaborador

description
string

Descrição da atividade executada

project_id
required
integer

ID do projeto

task_id
integer

ID da tarefa

time_end
string
Default: "00:00:00"

Hora de fim deste lançamento

time_start
string
Default: "00:00:00"

Hora de início deste lançamento

time_total
string
Default: "00:00:00"

Tempo total deste lançamento

user_id
integer
Default: "Logged user"

ID do usuário responsável pelo lançamento. Pode ser enviado ao criar ou editar; se omitido, usa o usuário autenticado. Para filtrar lançamentos por responsável, use o parâmetro user_id em /reports/detailed e nos demais relatórios que aceitam esse filtro.

has_overtime
boolean

Indica hora extra. Aceito no save só com o cronômetro parado.

overtime
string

Duração da hora extra, no formato HH:mm:ss. Aceito no save só com o cronômetro parado.

start_stopwatch
string
Value: "1"

Envie "1" para iniciar o cronômetro depois de gravar o lançamento.

todo_id
string

Atividade vinculada a este lançamento. Envie null para limpar.

breaks_total
string

Tempo total de pausa, no formato HH:mm:ss

Array of objects

Intervalos de pausa dentro do lançamento

Responses

Request samples

Content type
application/json
{
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "project_id": 2,
  • "task_id": 10,
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "has_overtime": false,
  • "overtime": "01:00:00",
  • "start_stopwatch": "1",
  • "todo_id": "c96r3a88u0k0b3e6hft0",
  • "breaks_total": "01:00:00",
  • "break_intervals": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter o cronômetro ativo

Retorna o lançamento de horas cujo cronômetro está em andamento para o usuário autenticado. data é null quando nenhum cronômetro está ativo.

Authorizations:
Token

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter lançamento de horas

Obtém um lançamento de horas pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do lançamento de horas

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar lançamento de horas

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do lançamento de horas

Request Body schema: application/json
date_execution
string

Data em que a atividade foi executada pelo colaborador

description
string

Descrição da atividade executada

project_id
required
integer

ID do projeto

task_id
integer

ID da tarefa

time_end
string
Default: "00:00:00"

Hora de fim deste lançamento

time_start
string
Default: "00:00:00"

Hora de início deste lançamento

time_total
string
Default: "00:00:00"

Tempo total deste lançamento

user_id
integer
Default: "Logged user"

ID do usuário responsável pelo lançamento. Pode ser enviado ao criar ou editar; se omitido, usa o usuário autenticado. Para filtrar lançamentos por responsável, use o parâmetro user_id em /reports/detailed e nos demais relatórios que aceitam esse filtro.

has_overtime
boolean

Indica hora extra. Aceito no save só com o cronômetro parado.

overtime
string

Duração da hora extra, no formato HH:mm:ss. Aceito no save só com o cronômetro parado.

start_stopwatch
string
Value: "1"

Envie "1" para iniciar o cronômetro depois de gravar o lançamento.

todo_id
string

Atividade vinculada a este lançamento. Envie null para limpar.

breaks_total
string

Tempo total de pausa, no formato HH:mm:ss

Array of objects

Intervalos de pausa dentro do lançamento

Responses

Request samples

Content type
application/json
{
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "project_id": 2,
  • "task_id": 10,
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "has_overtime": false,
  • "overtime": "01:00:00",
  • "start_stopwatch": "1",
  • "todo_id": "c96r3a88u0k0b3e6hft0",
  • "breaks_total": "01:00:00",
  • "break_intervals": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir lançamento de horas

Exclui de forma permanente um lançamento de horas pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do lançamento de horas

Responses

Iniciar cronômetro

Inicia o cronômetro de um lançamento existente

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do lançamento de horas

Request Body schema: application/json
time_start
string
Default: "00:00:00"

Hora de início deste lançamento

stopwatch_date_start
string

Data e hora em que o cronômetro foi iniciado

Responses

Request samples

Content type
application/json
{
  • "time_start": "08:00:00",
  • "stopwatch_date_start": "2022-01-01 12:33:00"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Parar cronômetro

Para o cronômetro de um lançamento que está em andamento

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do lançamento de horas

Request Body schema: application/json
time_total
string
Default: "00:00:00"

Tempo total deste lançamento

Responses

Request samples

Content type
application/json
{
  • "time_total": "06:00:00"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Relatórios

Relatórios.

Relatório detalhado

Gera o relatório detalhado de lançamentos de horas

Authorizations:
Token
query Parameters
date_execution_start
string <date>
Example: date_execution_start=2024-01-01

Traz apenas horas cuja data de execução é maior ou igual à data informada.

date_execution_end
string <date>
Example: date_execution_end=2024-01-30

Traz apenas horas cuja data de execução é menor ou igual à data informada.

project_id
Array of integers or guids
Examples:
  • project_id=5 - Exemplo de um único ID
  • project_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do projeto. Use uma lista de IDs separada por vírgula para vários IDs.

task_id
Array of integers or guids
Examples:
  • task_id=5 - Exemplo de um único ID
  • task_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID da tarefa. Use uma lista de IDs separada por vírgula para vários IDs.

customer_id
Array of integers or guids
Examples:
  • customer_id=5 - Exemplo de um único ID
  • customer_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do cliente. Use uma lista de IDs separada por vírgula para vários IDs.

user_id
Array of integers or guids
Examples:
  • user_id=5 - Exemplo de um único ID
  • user_id=1,5,7 - Exemplo de vários IDs

Filtra por usuário. Use uma lista de IDs separada por vírgula para vários IDs.

team_id
Array of integers or guids
Examples:
  • team_id=5 - Exemplo de um único ID
  • team_id=1,5,7 - Exemplo de vários IDs

Filtra responsáveis por equipe. Use uma lista de IDs separada por vírgula para vários IDs.

id
integer or guid
Default: null
Examples:
  • id=5 - Exemplo de um único ID
  • id=1&id=5&id=7 - Exemplo de vários IDs

Identificador do lançamento. Use uma lista de IDs separada por vírgula para vários IDs.

is_invoiced
boolean
Default: null
Example: is_invoiced=true

Filtra lançamentos conforme já foram faturados ou não.

only_active_users
boolean
Deprecated
Default: false
Example: only_active_users=true

Ignorado. Este relatório não filtra usuários ativos.

only_active_projects
boolean
Default: false
Example: only_active_projects=true

Filtra apenas projetos ativos.

only_projects_member_of
boolean
Default: false
Example: only_projects_member_of=true

Quando verdadeiro, devolve só projetos dos quais o usuário autenticado participa. O padrão é falso.

project_privacy
string
Default: null
Enum: "public" "private"
Example: project_privacy=public

Filtra projetos pela privacidade.

description
string

Busca na descrição do lançamento.

manager_id
string
Example: manager_id=3,8

Filtra pelo gestor do usuário do lançamento. Ids separados por vírgula.

manager_empty
string
Value: "true"

Envie true para incluir lançamentos de usuários sem gestor. Combinado com manager_id, também inclui esses gestores.

task_empty
string
Value: "true"

Envie true para incluir lançamentos sem tarefa.

customer_empty
string
Value: "true"

Envie true para incluir lançamentos de projetos sem cliente.

todo_id
string

Filtra pelo id da atividade vinculada.

todo_id_empty
string
Value: "true"

Envie true para incluir lançamentos sem atividade.

is_stopwatch_active
boolean
Default: false

Quando verdadeiro, devolve só lançamentos com cronômetro em andamento.

include_unregistered_projects
boolean
Deprecated

Descontinuado. Vale só quando only_projects_member_of é omitido. Verdadeiro significa não restringir aos projetos do usuário.

custom_fields.{id}
string
Default: null
Example: custom_fields.{id}=10

Filtra registros por campos personalizados. Troque {id} pelo ID do campo.

Não funciona para campo do tipo texto.

Para campos do tipo ENUM, o valor deve ser o ID da opção.

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

Quantidade de itens a retornar

opt_sort_direction
string
Default: "asc"
Enum: "asc" "desc"

Direção da ordenação.

opt_sort_by
string
Enum: "date_execution" "user_name" "project_name" "customer_name" "task_name" "todo_name" "description" "manager_name" "time_total" "time_start" "rate_total" "cost_amount" "created_at" "created_by_user_name" "changed_at" "changed_by_user_name" "regular_time" "overtime" "breaks_total" "is_invoiced"

Ordena os itens por coluna. Use uma lista separada por vírgula para ordenar por várias colunas.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "totals": {
    },
  • "has_next_page": true,
  • "next_page_query_params": { }
}

Relatório resumido

Gera relatórios com grupos de dados e colunas personalizadas

Authorizations:
Token
query Parameters
date_execution_start
string <date>
Example: date_execution_start=2024-01-01

Traz apenas horas cuja data de execução é maior ou igual à data informada.

date_execution_end
string <date>
Example: date_execution_end=2024-01-30

Traz apenas horas cuja data de execução é menor ou igual à data informada.

project_id
Array of integers or guids
Examples:
  • project_id=5 - Exemplo de um único ID
  • project_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do projeto. Use uma lista de IDs separada por vírgula para vários IDs.

task_id
Array of integers or guids
Examples:
  • task_id=5 - Exemplo de um único ID
  • task_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID da tarefa. Use uma lista de IDs separada por vírgula para vários IDs.

customer_id
Array of integers or guids
Examples:
  • customer_id=5 - Exemplo de um único ID
  • customer_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do cliente. Use uma lista de IDs separada por vírgula para vários IDs.

user_id
Array of integers or guids
Examples:
  • user_id=5 - Exemplo de um único ID
  • user_id=1,5,7 - Exemplo de vários IDs

Filtra por usuário. Use uma lista de IDs separada por vírgula para vários IDs.

team_id
Array of integers or guids
Examples:
  • team_id=5 - Exemplo de um único ID
  • team_id=1,5,7 - Exemplo de vários IDs

Filtra responsáveis por equipe. Use uma lista de IDs separada por vírgula para vários IDs.

include_archived_users
boolean
Default: false
Example: include_archived_users=true

Traz usuários ativos e arquivados. Por padrão, só usuários ativos são retornados. Esta opção só funciona quando opt_report_template é users_and_days.

opt_export_columns
string
Enum: "user_id" "user_name" "user_email" "user_active" "user_role" "user_is_owner" "user_work_start_at" "user_work_end_at" "user_cost_rate" "user_capacity_*" "task_id" "task_name" "todo_id" "todo_name" "project_id" "project_name" "project_budget_*" "customer_id" "customer_name" "time_billable" "time_non_billable" "billable_total" "billable_taxes_total" "billable_net_total" "billable_invoiced" "billable_uninvoiced" "cost_total" "cost_billable" "cost_non_billable" "margin_*" "custom_field_|:id:|" "custom_field_|:id:|_enum_name"

Define as colunas opcionais que serão retornadas. Colunas usadas em opt_group_by incluem automaticamente seus identificadores, como *_id e *_name. Algumas colunas só aparecem conforme o agrupamento usado em opt_group_by.

Para incluir campos personalizados, use custom_field_{id}, trocando {id} pelo ID do campo. Em campos do tipo enum, use custom_field_{id}_enum_name para obter o rótulo.

opt_group_by
string
Enum: "date" "week" "month" "year" "user_id" "task_id" "todo_id" "project_id" "customer_id" "custom_field_|:id:|"

Agrupa as horas por colunas. Use uma lista separada por vírgula para agrupar por várias colunas.

São permitidos no máximo 5 grupos. Cada grupo na resposta aparece como um subnível.

Além das colunas nativas, é possível agrupar por campos personalizados do tipo enum, incluindo custom_field_{id} e trocando {id} pelo ID do campo.

opt_report_template
string
Default: null
Enum: "days" "months" "users_and_days" "users_and_weeks" "users_and_months"

Os modelos devolvem grupos mesmo quando estão vazios. Deixe vazio para o padrão. days traz cada dia do período. months traz cada mês. users_and_days, users_and_weeks e users_and_months cruzam cada usuário com esse período.

capacity_filter_type
string
Enum: "missing_percent_gte" "exceeded_percent_gte" "consumed_percent_lte" "logged_without_capacity"

Filtro posterior usado só quando opt_report_template é users_and_days.

capacity_filter_scope
string
Default: "any_day"
Enum: "any_day" "all_days" "period_total"

Como a porcentagem de capacidade é aplicada. O padrão é any_day.

capacity_filter_value
string
Example: capacity_filter_value=20

Limite percentual do filtro de capacidade.

opt_sort_direction
string
Default: "asc"
Enum: "asc" "desc"

Direção da ordenação.

opt_sort_by
string
Enum: "date" "week" "month" "year" "user_id" "task_id" "todo_id" "project_id" "customer_id"

Ordena os itens por coluna. Use uma lista separada por vírgula para ordenar por várias colunas. Só colunas incluídas em opt_group_by podem ser usadas na ordenação.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": {
    }
}

Projetos

Projetos.

Listar projetos

Listar projetos

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Exemplo de um único ID
  • id=1,5,7 - Exemplo de vários IDs

Filtra por ID. Use uma lista de IDs separada por vírgula para vários IDs.

customer_id
Array of integers or guids
Examples:
  • customer_id=5 - Exemplo de um único ID
  • customer_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do cliente. Use uma lista de IDs separada por vírgula para vários IDs.

active
integer
Example: active=1

Filtra pelo status ativo ("1" é ativo e "0" é arquivado)

custom_fields.{id}
string
Default: null
Example: custom_fields.{id}=10

Filtra registros por campos personalizados. Troque {id} pelo ID do campo.

Não funciona para campo do tipo texto.

Para campos do tipo ENUM, o valor deve ser o ID da opção.

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

Quantidade de itens a retornar

only_active_projects
boolean
Default: false

Quando verdadeiro, devolve só projetos ativos. É distinto do filtro active.

opt_sort_by
string
Enum: "name" "customer_name" "budget" "budget_by" "time_total" "total_invoiced" "total_uninvoiced" "value_total" "active" "total_members" "total_active_tasks" "total_pending_todos" "date_created"

Ordena os itens por coluna. Use uma lista separada por vírgula para ordenar por várias colunas.

opt_sort_direction
string
Default: "asc"
Enum: "asc" "desc"

Direção da ordenação.

opt_show_total
boolean

Quando verdadeiro, a resposta paginada inclui totals.total_rows.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}

Novo projeto

Novo projeto

Authorizations:
Token
Request Body schema: application/json
active
boolean

Projeto ativo. Nas listas, filtre com 1 (ativo) ou 0 (arquivado).

bill_by
string
Deprecated

Não é mais necessário.

budget
integer

Valor do orçamento

budget_by
string
Enum: "billing" "time" "none"

Tipo de orçamento

customer_id
integer

ID do cliente. Todo projeto pertence a um cliente

description
string

Descrição do projeto

is_billable
boolean
Default: false

Lançamentos do projeto são faturáveis por padrão

name
required
string

Nome do projeto

color
string

Cor do projeto em hexadecimal.

privacy
integer
Enum: 1 2

Projeto público ou privado (1 é public e 2 é private)

rate
integer
Default: 0

Taxa horária faturável mais recente do projeto

rate_start_at_new
string
Default: null

Data de início da nova taxa.
Use esta propriedade para definir uma taxa nova a partir de uma data. Se não for informada, substitui a taxa mais recente ou cria uma taxa válida desde o início do projeto.

required_task
integer
Default: 0
Enum: 0 1

Tarefa obrigatória ao criar um lançamento de horas no projeto.
(1 é obrigatória e 0 não é)

template
boolean
Default: false

O projeto é um modelo

object

Opções de orçamento. Na gravação, only_billable_time é armazenado. Na leitura, a lista também inclui progress, consumed, remaining e exceed.

only_admin_publish
integer
Deprecated

Descontinuado. Ainda é aceito na gravação e não volta na resposta. Use todo_permissions.

only_admin_see_others
integer
Deprecated

Descontinuado. Ainda é aceito na gravação e não volta na resposta. Use todo_permissions.

project_id_source
integer

Na criação, copia dados deste projeto. Não volta depois.

keep_from_source
Array of strings

Partes a manter ao copiar project_id_source. Não volta depois.

object

Quem pode executar cada ação de atividade neste projeto. member_visibility é all_activities ou assigned_only. create, assign, move e manage_lists são project_manager ou all_members. As outras ações também aceitam assigned_member.

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "customer_id": 7,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "is_billable": true,
  • "name": "API development",
  • "color": "#12B886",
  • "privacy": 7,
  • "rate": 110.3,
  • "rate_start_at_new": "2023-01-02",
  • "required_task": 0,
  • "template": false,
  • "budget_options": {
    },
  • "only_admin_publish": 0,
  • "only_admin_see_others": 0,
  • "project_id_source": 12,
  • "keep_from_source": [
    ],
  • "todo_permissions": {
    },
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter projeto

Obtém um projeto pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

query Parameters
opt_expand
string
Value: "custom_fields_settings"

Envie custom_fields_settings para incluir as configurações de campos personalizados no detalhe.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

Request Body schema: application/json
active
boolean

Projeto ativo. Nas listas, filtre com 1 (ativo) ou 0 (arquivado).

bill_by
string
Deprecated

Não é mais necessário.

budget
integer

Valor do orçamento

budget_by
string
Enum: "billing" "time" "none"

Tipo de orçamento

customer_id
integer

ID do cliente. Todo projeto pertence a um cliente

description
string

Descrição do projeto

is_billable
boolean
Default: false

Lançamentos do projeto são faturáveis por padrão

name
required
string

Nome do projeto

color
string

Cor do projeto em hexadecimal.

privacy
integer
Enum: 1 2

Projeto público ou privado (1 é public e 2 é private)

rate
integer
Default: 0

Taxa horária faturável mais recente do projeto

rate_start_at_new
string
Default: null

Data de início da nova taxa.
Use esta propriedade para definir uma taxa nova a partir de uma data. Se não for informada, substitui a taxa mais recente ou cria uma taxa válida desde o início do projeto.

required_task
integer
Default: 0
Enum: 0 1

Tarefa obrigatória ao criar um lançamento de horas no projeto.
(1 é obrigatória e 0 não é)

template
boolean
Default: false

O projeto é um modelo

object

Opções de orçamento. Na gravação, only_billable_time é armazenado. Na leitura, a lista também inclui progress, consumed, remaining e exceed.

only_admin_publish
integer
Deprecated

Descontinuado. Ainda é aceito na gravação e não volta na resposta. Use todo_permissions.

only_admin_see_others
integer
Deprecated

Descontinuado. Ainda é aceito na gravação e não volta na resposta. Use todo_permissions.

project_id_source
integer

Na criação, copia dados deste projeto. Não volta depois.

keep_from_source
Array of strings

Partes a manter ao copiar project_id_source. Não volta depois.

object

Quem pode executar cada ação de atividade neste projeto. member_visibility é all_activities ou assigned_only. create, assign, move e manage_lists são project_manager ou all_members. As outras ações também aceitam assigned_member.

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "customer_id": 7,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "is_billable": true,
  • "name": "API development",
  • "color": "#12B886",
  • "privacy": 7,
  • "rate": 110.3,
  • "rate_start_at_new": "2023-01-02",
  • "required_task": 0,
  • "template": false,
  • "budget_options": {
    },
  • "only_admin_publish": 0,
  • "only_admin_see_others": 0,
  • "project_id_source": 12,
  • "keep_from_source": [
    ],
  • "todo_permissions": {
    },
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir projeto

Exclui de forma permanente um projeto pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

Responses

Membros do projeto

Usuários que participam de um projeto.

Listar membros do projeto

Lista os membros do projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Adiciona um usuário ao projeto

Adiciona o usuário como membro do projeto e define a taxa específica dele nesse projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
manager
integer
Default: 0

O membro tem privilégio de gestor neste projeto ("1" é verdadeiro e "0" é falso)

is_billable
boolean
Default: true

O tempo do membro é faturável neste projeto

rate
string
Default: "project houly rate"

Taxa horária faturável mais recente do membro do projeto.
Se não estiver definida, vale a taxa horária do projeto.

budget
number

Orçamento deste membro no projeto.

rate_start_at_new
string
Default: null

Data de início da nova taxa.
Use esta propriedade para definir uma taxa nova a partir de uma data. Se não for informada, substitui a taxa mais recente ou cria uma taxa válida desde o início do projeto.

Responses

Request samples

Content type
application/json
{
  • "manager": 1,
  • "is_billable": true,
  • "rate": 110.3,
  • "budget": 40,
  • "rate_start_at_new": "2023-01-02"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Remove um usuário do projeto

Remove um usuário do projeto

Authorizations:
Token

Responses

Lista usuários disponíveis para o projeto

Lista usuários ativos que ainda não são membros do projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Tarefas do projeto

Tarefas vinculadas a um projeto.

Listar tarefas do projeto

Lista os membros do projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

query Parameters
checked
boolean

Filtra as tarefas do projeto pela flag de conclusão.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Adiciona uma tarefa ao projeto

Adiciona a tarefa ao projeto e define a taxa específica dela nesse projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

id
required
integer
Example: 25

ID da tarefa

Request Body schema: application/json
is_billable
boolean
Default: true

O tempo lançado nesta tarefa é faturável ou não neste projeto

budget
number

Orçamento desta tarefa no projeto.

rate
number

Taxa faturável desta tarefa no projeto.

Responses

Request samples

Content type
application/json
{
  • "is_billable": true,
  • "budget": 20,
  • "rate": 110
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Remove uma tarefa do projeto

Remove uma tarefa do projeto

Authorizations:
Token

Responses

Concluir tarefa

Marca a tarefa como concluída no projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

id
required
integer
Example: 25

ID da tarefa

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Desmarcar tarefa

Marca a tarefa como não concluída no projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

id
required
integer
Example: 25

ID da tarefa

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Lista tarefas disponíveis para o projeto

Lista tarefas ativas que ainda não estão no projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Listas de atividades

Listas de atividades.

Listar listas de atividades

Listas de atividades organizam o trabalho dentro dos projetos

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

query Parameters
id
string

Filtra pelo id da lista. todo_list_id também é aceito.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}

Nova lista de atividades

Nova lista de atividades

Authorizations:
Token
Request Body schema: application/json
project_id
required
integer

ID do projeto. Não é possível trocar o projeto depois da criação.

name
required
string

Nome da lista de atividades

color
string or null

Cor da lista

position
integer
Default: 1

Posição da lista de atividades no projeto para ordenação. Deve ser um inteiro maior que 0

Responses

Request samples

Content type
application/json
{
  • "project_id": 2,
  • "name": "Ideas",
  • "color": "#4C6EF5",
  • "position": 3
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter lista de atividades

Obtém uma lista de atividades pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da lista de atividades

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar lista de atividades

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da lista de atividades

Request Body schema: application/json
name
required
string

Nome da lista de atividades

color
string or null

Cor da lista

position
integer
Default: 1

Posição da lista de atividades no projeto para ordenação. Deve ser um inteiro maior que 0

Responses

Request samples

Content type
application/json
{
  • "name": "Ideas",
  • "color": "#4C6EF5",
  • "position": 3
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir lista de atividades

Exclui a lista de atividades de forma lógica. A lista pode ser restaurada depois.

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da lista de atividades

Responses

Restaurar lista de atividades

Restaura uma lista de atividades excluída

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da lista de atividades

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Atividades

Atividades.

Listar atividades

Atividades são a lista de trabalho dos projetos

Authorizations:
Token
query Parameters
id
guid
Example: id=c96r3a88u0k0b3e6hft0

Filtra pelo ID da atividade. Use uma lista de IDs separada por vírgula para vários IDs.

project_id
Array of integers or guids
Examples:
  • project_id=5 - Exemplo de um único ID
  • project_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do projeto. Use uma lista de IDs separada por vírgula para vários IDs.

is_completed
boolean
Example: is_completed=false

Filtra atividades concluídas ou não

only_active_projects
boolean
Example: only_active_projects=true

Traz apenas atividades de projetos ativos

only_my_projects
boolean
Example: only_my_projects=true

Traz apenas atividades de projetos em que o usuário autenticado é membro.

trashed
boolean
Default: false

Quando verdadeiro, inclui atividades na lixeira dos últimos 30 dias. Também vale no detalhe.

parent_todo_id
string

Filtra pela atividade pai.

only_root_todos
boolean

Quando verdadeiro, devolve só atividades sem pai.

has_name
string

Filtra atividades cujo nome corresponde a este texto.

enrich_hierarchy_display
boolean
Default: false

Quando verdadeiro, cada item da lista inclui ancestor_name_path, name_path e depth.

user_id
Array of integers or guids
Examples:
  • user_id=5 - Exemplo de um único ID
  • user_id=1,5,7 - Exemplo de vários IDs

Filtra pelo responsável. Use uma lista de IDs separada por vírgula para vários IDs.

team_id
Array of integers or guids
Examples:
  • team_id=5 - Exemplo de um único ID
  • team_id=1,5,7 - Exemplo de vários IDs

Filtra responsáveis por equipe. Use uma lista de IDs separada por vírgula para vários IDs.

due_on
string <date>
Example: due_on=2024-01-15

Traz apenas atividades cujo vencimento é exatamente a data informada.

due_on_gte
string <date>
Example: due_on_gte=2024-01-01

Traz apenas atividades com vencimento maior ou igual à data informada.

due_on_lte
string <date>
Example: due_on_lte=2024-01-30

Traz apenas atividades com vencimento menor ou igual à data informada.

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

Quantidade de itens a retornar

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}

Nova atividade

Nova atividade

Authorizations:
Token
Request Body schema: application/json
project_id
required
integer

ID do projeto. Não é possível trocar o projeto depois da criação.

description
string

Notas sobre esta atividade

is_completed
boolean
Default: false

A atividade está concluída

name
required
string

Nome da atividade

position
integer
Default: 1

Posição da atividade no projeto para ordenação. Deve ser um inteiro maior que 0

todo_list_id
string

ID da lista de atividades

time_estimate
string
Default: "00:00:00"

Tempo estimado para concluir

user_id
integer

ID do responsável

due_on
string or null <date>

Data de vencimento da atividade

parent_todo_id
string or null

ID da atividade pai quando este registro é uma subtarefa

tag_ids
Array of strings

Substitui as tags da atividade por esta lista de IDs. Envie uma lista vazia para limpar.

highlighted_tag_id
string or null

ID da tag a destacar. Precisa estar em tag_ids. Null remove o destaque.

Responses

Request samples

Content type
application/json
{
  • "project_id": 2,
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "todo_list_id": 10,
  • "time_estimate": "14:00:00",
  • "user_id": 5,
  • "due_on": "2024-01-15",
  • "parent_todo_id": "c96r3a88u0k0b3e6hft0",
  • "tag_ids": [
    ],
  • "highlighted_tag_id": "c96r3a88u0k0b3e6hft0"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter atividade

Obtém uma atividade pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da atividade

query Parameters
trashed
boolean
Default: false

Quando verdadeiro, inclui atividades na lixeira dos últimos 30 dias. Também vale no detalhe.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar atividade

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da atividade

Request Body schema: application/json
description
string

Notas sobre esta atividade

is_completed
boolean
Default: false

A atividade está concluída

name
required
string

Nome da atividade

position
integer
Default: 1

Posição da atividade no projeto para ordenação. Deve ser um inteiro maior que 0

todo_list_id
string

ID da lista de atividades

time_estimate
string
Default: "00:00:00"

Tempo estimado para concluir

user_id
integer

ID do responsável

due_on
string or null <date>

Data de vencimento da atividade

parent_todo_id
string or null

ID da atividade pai quando este registro é uma subtarefa

tag_ids
Array of strings

Substitui as tags da atividade por esta lista de IDs. Envie uma lista vazia para limpar.

highlighted_tag_id
string or null

ID da tag a destacar. Precisa estar em tag_ids. Null remove o destaque.

Responses

Request samples

Content type
application/json
{
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "todo_list_id": 10,
  • "time_estimate": "14:00:00",
  • "user_id": 5,
  • "due_on": "2024-01-15",
  • "parent_todo_id": "c96r3a88u0k0b3e6hft0",
  • "tag_ids": [
    ],
  • "highlighted_tag_id": "c96r3a88u0k0b3e6hft0"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir atividade

Exclui a atividade de forma lógica. O registro pode ser restaurado depois.

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da atividade

Responses

Restaurar atividade

Restaura uma atividade excluída

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da atividade

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Tags de atividades

Rótulos que podem ser atribuídos às atividades.

Listar tags de atividades

Retorna as tags ativas da conta, em ordem de nome.

Authorizations:
Token
query Parameters
id
string

Filtra por um ID de tag.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Nova tag de atividade

O nome é obrigatório e precisa ser único na conta. A cor é um hexadecimal opcional.

Authorizations:
Token
Request Body schema: application/json
name
required
string

Nome único da tag na conta.

color
string or null

Cor hexadecimal opcional.

Responses

Request samples

Content type
application/json
{
  • "name": "Urgent",
  • "color": "#E85D4C"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter uma tag de atividade

Authorizations:
Token
path Parameters
todoTagId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da tag de atividade.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar uma tag de atividade

Authorizations:
Token
path Parameters
todoTagId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da tag de atividade.

Request Body schema: application/json
name
required
string

Nome único da tag na conta.

color
string or null

Cor hexadecimal opcional.

Responses

Request samples

Content type
application/json
{
  • "name": "Urgent",
  • "color": "#E85D4C"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir uma tag de atividade

Faz exclusão lógica da tag. Falha quando a tag ainda está atribuída a uma atividade ativa.

Authorizations:
Token
path Parameters
todoTagId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da tag de atividade.

Responses

Clientes

Clientes.

Listar clientes

Listar clientes

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Exemplo de um único ID
  • id=1,5,7 - Exemplo de vários IDs

Filtra por ID. Use uma lista de IDs separada por vírgula para vários IDs.

customer_id
integer

Alias de id.

active
integer
Example: active=1

Filtra pelo status ativo ("1" é ativo e "0" é arquivado)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Novo cliente

Novo cliente

Authorizations:
Token
Request Body schema: application/json
name
required
string

Nome do cliente

observation
string
Default: null

Descrição do cliente

email
string

E-mail do cliente.

phone
string

Telefone principal.

phone2
string or null

Segundo telefone.

phone3
string or null

Terceiro telefone.

address
string

Endereço.

city
string

Cidade.

state
string

Estado ou região.

country
string

País.

cnpj
string

CNPJ.

cpf
string

CPF.

active
boolean

Indica se o cliente está ativo. A resposta usa boolean.

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "observation": "Description...",
  • "email": "billing@acme.com",
  • "phone": "+55 11 99999-0000",
  • "phone2": "string",
  • "phone3": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "cnpj": "string",
  • "cpf": "string",
  • "active": true,
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter cliente

Obtém um cliente pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do cliente

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar cliente

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do cliente

Request Body schema: application/json
name
required
string

Nome do cliente

observation
string
Default: null

Descrição do cliente

email
string

E-mail do cliente.

phone
string

Telefone principal.

phone2
string or null

Segundo telefone.

phone3
string or null

Terceiro telefone.

address
string

Endereço.

city
string

Cidade.

state
string

Estado ou região.

country
string

País.

cnpj
string

CNPJ.

cpf
string

CPF.

active
boolean

Indica se o cliente está ativo. A resposta usa boolean.

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "observation": "Description...",
  • "email": "billing@acme.com",
  • "phone": "+55 11 99999-0000",
  • "phone2": "string",
  • "phone3": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "cnpj": "string",
  • "cpf": "string",
  • "active": true,
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir cliente

Exclui de forma permanente um cliente pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID do cliente

Responses

Tarefas

Tarefas.

Listar tarefas

Listar tarefas

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Exemplo de um único ID
  • id=1,5,7 - Exemplo de vários IDs

Filtra por ID. Use uma lista de IDs separada por vírgula para vários IDs.

active
integer
Example: active=1

Filtra pelo status ativo ("1" é ativo e "0" é arquivado)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Nova tarefa

Nova tarefa

Authorizations:
Token
Request Body schema: application/json
name
string

Nome da tarefa

description
string
Default: null

Descrição da tarefa

color
string

Cor da tarefa em hexadecimal.

is_billable_default
boolean
Default: false

Define esta tarefa como faturável por padrão quando for adicionada a um projeto

active
integer
Enum: 0 1

1 ativo, 0 arquivado.

object

No salvamento, um mapa do ID do campo personalizado para o valor simples: texto, número, data (YYYY-MM-DD) ou o ID da opção do enum. Um valor vazio remove o campo.

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "description": "Description...",
  • "color": "#4C6EF5",
  • "is_billable_default": true,
  • "active": 1,
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter tarefa

Obtém uma tarefa pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da tarefa

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar tarefa

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da tarefa

Request Body schema: application/json
name
string

Nome da tarefa

description
string
Default: null

Descrição da tarefa

color
string

Cor da tarefa em hexadecimal.

is_billable_default
boolean
Default: false

Define esta tarefa como faturável por padrão quando for adicionada a um projeto

active
integer
Enum: 0 1

1 ativo, 0 arquivado.

object

No salvamento, um mapa do ID do campo personalizado para o valor simples: texto, número, data (YYYY-MM-DD) ou o ID da opção do enum. Um valor vazio remove o campo.

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "description": "Description...",
  • "color": "#4C6EF5",
  • "is_billable_default": true,
  • "active": 1,
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir tarefa

Exclui de forma permanente uma tarefa pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

ID da tarefa

Responses

Usuários

Usuários.

Listar usuários

Listar usuários

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Exemplo de um único ID
  • id=1,5,7 - Exemplo de vários IDs

Filtra por ID. Use uma lista de IDs separada por vírgula para vários IDs.

active
integer
Example: active=1

Filtra pelo status ativo ("1" é ativo e "0" é arquivado)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Novo usuário

Novo usuário

Authorizations:
Token
Request Body schema: application/json
email
required
string

E-mail do usuário (obrigatório na criação).

active
integer
Default: 1

1 ou true é ativo. 0 ou false arquiva o usuário. Na edição, envie só para alterar; omitir não muda nem aplica padrão de criação.

auto_assign_new_users
boolean
Default: false

Quando true, usuários novos são atribuídos automaticamente a este usuário. Vale para um superusuário. Na edição, envie só para alterar.

billable_rate_default
number or null <double>
Default: null

Taxa faturável padrão do usuário. Na edição, envie só para alterar.

capacity_per_day
number or null <float>
Default: null

Capacidade diária de trabalho do usuário, em horas. Na edição, envie só para alterar.

cost_rate
string or null
Default: null

Taxa de custo na gravação; na leitura, a taxa vigente. Na edição, envie só para alterar.

cost_rate_start_at_new
string or null <date>
Default: null

Data de início de uma nova taxa de custo na edição. Se omitida no editar, a taxa atual é substituída. Na edição parcial, envie junto com cost_rate quando for alterar custo.

last_calendar_id
integer or null
Default: null

Calendário de trabalho a atribuir ao usuário. Na edição, envie só para alterar.

last_calendar_start_at_new
string or null <date>
Default: null

Data de início de um novo período de calendário na edição. Se omitida no editar, o período atual é atualizado.

is_billable_default
boolean
Default: true

Indica se o tempo é faturável por padrão. Na edição, envie só para alterar.

manager_id
integer or null
Default: null

ID do gestor. Referencia o usuário que é gestor deste usuário. Na edição, envie só para alterar.

manage_restricted_teams
boolean
Deprecated

(Descontinuado) Indica se o usuário pode gerenciar equipes restritas. Vale apenas para o papel manager.

name
required
string

Nome do usuário. Na edição, envie só para alterar.

Array of "can_manage_own_projects" (string) or "can_time_log_for_assigned_users" (string) or "can_manage_all_customers" (string) or "can_manage_all_tasks" (string) or "can_manage_assigned_users" (string) or "can_report_costs_of_assigned_users" (string) or "can_edit_costs_of_assigned_users" (string) or "can_report_billing_of_assigned_users" (string) or "can_report_billing_of_managed_projects" (string) or "can_edit_billing_of_managed_projects" (string) or "can_mark_entries_as_invoiced" (string) or "can_approve_timesheets" (string)

Permissões extras de um superusuário. Envie a lista completa. Uma lista vazia limpa as permissões. Expanda items para ver cada valor permitido e o que ele autoriza.

role
string
Default: "regular"
Enum: "admin" "regular" "super" "manager"

Papel de permissão do usuário. Na edição, envie só para alterar; omitir não volta ao padrão de criação.

work_days
Array of integers or null
Default: null

Dias de trabalho do usuário, de 0 a 6. 0 é domingo e 6 é sábado. Na edição, envie só para alterar.

work_end_at
string <time>

Horário de fim do trabalho, usado no painel de capacidade

work_start_at
string <time>

Horário de início do trabalho, usado no painel de capacidade

Responses

Request samples

Content type
application/json
{
  • "email": "anne@rabbitwork.io",
  • "active": 1,
  • "auto_assign_new_users": false,
  • "billable_rate_default": null,
  • "capacity_per_day": null,
  • "cost_rate": null,
  • "cost_rate_start_at_new": null,
  • "last_calendar_id": null,
  • "last_calendar_start_at_new": null,
  • "is_billable_default": true,
  • "manager_id": null,
  • "manage_restricted_teams": false,
  • "name": "string",
  • "permissions": [
    ],
  • "role": "regular",
  • "work_days": null,
  • "work_end_at": null,
  • "work_start_at": null,
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter usuário

Obtém um usuário pelo ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar usuário

Atualiza somente os campos enviados. Para arquivar um usuário e manter os lançamentos de horas, envie { "active": 0 }. O arquivamento remove o acesso de login e os tokens desse usuário. A participação nos projetos permanece. Um administrador pode arquivar qualquer usuário, exceto o dono da conta. Um superusuário com a permissão can_manage_assigned_users pode arquivar usuários regulares que pertençam a uma das equipes atribuídas a ele.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
active
integer

1 ou true é ativo. 0 ou false arquiva o usuário. Na edição, envie só para alterar; omitir não muda nem aplica padrão de criação.

auto_assign_new_users
boolean

Quando true, usuários novos são atribuídos automaticamente a este usuário. Vale para um superusuário. Na edição, envie só para alterar.

billable_rate_default
number <double>

Taxa faturável padrão do usuário. Na edição, envie só para alterar.

capacity_per_day
number or null <float>

Capacidade diária de trabalho do usuário, em horas. Na edição, envie só para alterar.

cost_rate
string

Taxa de custo na gravação; na leitura, a taxa vigente. Na edição, envie só para alterar.

cost_rate_start_at_new
string or null <date>

Data de início de uma nova taxa de custo na edição. Se omitida no editar, a taxa atual é substituída. Na edição parcial, envie junto com cost_rate quando for alterar custo.

last_calendar_id
integer

Calendário de trabalho a atribuir ao usuário. Na edição, envie só para alterar.

last_calendar_start_at_new
string or null <date>

Data de início de um novo período de calendário na edição. Se omitida no editar, o período atual é atualizado.

is_billable_default
boolean

Indica se o tempo é faturável por padrão. Na edição, envie só para alterar.

manager_id
integer

ID do gestor. Referencia o usuário que é gestor deste usuário. Na edição, envie só para alterar.

manage_restricted_teams
boolean
Deprecated

(Descontinuado) Indica se o usuário pode gerenciar equipes restritas. Vale apenas para o papel manager.

name
required
string

Nome do usuário. Na edição, envie só para alterar.

Array of "can_manage_own_projects" (string) or "can_time_log_for_assigned_users" (string) or "can_manage_all_customers" (string) or "can_manage_all_tasks" (string) or "can_manage_assigned_users" (string) or "can_report_costs_of_assigned_users" (string) or "can_edit_costs_of_assigned_users" (string) or "can_report_billing_of_assigned_users" (string) or "can_report_billing_of_managed_projects" (string) or "can_edit_billing_of_managed_projects" (string) or "can_mark_entries_as_invoiced" (string) or "can_approve_timesheets" (string)

Permissões extras de um superusuário. Envie a lista completa. Uma lista vazia limpa as permissões. Expanda items para ver cada valor permitido e o que ele autoriza.

role
string
Enum: "admin" "regular" "super" "manager"

Papel de permissão do usuário. Na edição, envie só para alterar; omitir não volta ao padrão de criação.

work_days
Array of integers or null

Dias de trabalho do usuário, de 0 a 6. 0 é domingo e 6 é sábado. Na edição, envie só para alterar.

work_end_at
string <time>

Horário de fim do trabalho, usado no painel de capacidade

work_start_at
string <time>

Horário de início do trabalho, usado no painel de capacidade

Responses

Request samples

Content type
application/json
{
  • "active": 1,
  • "auto_assign_new_users": false,
  • "billable_rate_default": null,
  • "capacity_per_day": null,
  • "cost_rate": "65",
  • "cost_rate_start_at_new": null,
  • "last_calendar_id": 3,
  • "last_calendar_start_at_new": null,
  • "is_billable_default": true,
  • "manager_id": null,
  • "manage_restricted_teams": false,
  • "name": "Anna Santos",
  • "permissions": [
    ],
  • "role": "regular",
  • "work_days": null,
  • "work_end_at": null,
  • "work_start_at": null,
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir usuário

Exclui o usuário de forma permanente. A requisição falha quando o usuário tem lançamentos de horas. Arquivar com active: 0 mantém esse histórico. Somente um administrador pode excluir usuários.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
Example
{
  • "message": "The requested user does not exist",
  • "status": 400
}

Obter a URL da foto de perfil

Retorna data.url, ou null quando o usuário não tem foto.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Enviar a foto de perfil

Campo multipart file. PNG ou JPEG, até 2 MB. A imagem é guardada como miniatura quadrada.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: multipart/form-data
file
required
string <binary>

Campo multipart file. PNG ou JPEG, até 2 MB. A imagem é guardada como miniatura quadrada.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir a foto de perfil

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Listar os projetos do usuário

Projetos ativos em que o usuário é membro.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Adicionar projetos ao usuário

project_id aceita uma lista de IDs ou um texto separado por vírgula.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
required
Array of strings or string

Um ID de projeto, uma lista separada por vírgula ou um array de IDs.

Responses

Request samples

Content type
application/json
{
  • "project_id": [
    ]
}

Remover projetos do usuário

Usa o mesmo corpo project_id do pedido de inclusão.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
required
Array of strings or string

Um ID de projeto, uma lista separada por vírgula ou um array de IDs.

Responses

Request samples

Content type
application/json
{
  • "project_id": [
    ]
}

Listar projetos disponíveis para o usuário

Projetos ativos em que o usuário não é membro e quem chama pode gerenciar a participação.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Listar atribuições do usuário

Retorna usuários e equipes atribuídos a este usuário. A resposta não vem dentro de data.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "teams": [
    ]
}

Adicionar atribuições

Envie users, teams ou os dois como listas de IDs. Exige o recurso de permissões por papel.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
users
Array of strings

IDs de usuários a atribuir ou remover.

teams
Array of strings

IDs de equipes a atribuir ou remover.

Responses

Request samples

Content type
application/json
{
  • "users": [
    ],
  • "teams": [
    ]
}

Listar atribuições disponíveis

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "teams": [
    ]
}

Remover atribuições

Envie os IDs de usuários e equipes a remover.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
users
Array of strings

IDs de usuários a atribuir ou remover.

teams
Array of strings

IDs de equipes a atribuir ou remover.

Responses

Request samples

Content type
application/json
{
  • "users": [
    ],
  • "teams": [
    ]
}

Listar folgas e férias

Filtre por type (vacation ou leave) e por ano.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

query Parameters
type
string
Enum: "vacation" "leave"
year
integer
Example: year=2026

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Nova folga ou férias

type, start_date e end_date são obrigatórios. end_date precisa ser igual ou posterior a start_date.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
type
required
string
Enum: "vacation" "leave"

vacation (férias) ou leave (folga).

start_date
required
string <date>
end_date
required
string <date>
hours
number or null

Quantidade opcional de horas do período.

description
string or null

Responses

Request samples

Content type
application/json
{
  • "type": "vacation",
  • "start_date": "2026-07-01",
  • "end_date": "2026-07-15",
  • "hours": 8,
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar uma folga ou férias

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

allocationId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da folga ou das férias.

Request Body schema: application/json
type
required
string
Enum: "vacation" "leave"

vacation (férias) ou leave (folga).

start_date
required
string <date>
end_date
required
string <date>
hours
number or null

Quantidade opcional de horas do período.

description
string or null

Responses

Request samples

Content type
application/json
{
  • "type": "vacation",
  • "start_date": "2026-07-01",
  • "end_date": "2026-07-15",
  • "hours": 8,
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir uma folga ou férias

Faz exclusão lógica do registro.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

allocationId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da folga ou das férias.

Responses

Listar histórico de calendário

Períodos que atribuem um calendário de trabalho ao usuário, do mais recente para o mais antigo. Um período aberto tem end_at nulo.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Novo período de calendário

calendar_id e start_at são obrigatórios.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

Request Body schema: application/json
calendar_id
required
string
start_at
required
string <date>

Primeiro dia desta atribuição de calendário.

end_at
string or null <date>

Último dia desta atribuição de calendário. Null enquanto o período está aberto.

Responses

Request samples

Content type
application/json
{
  • "calendar_id": "c96r3a88u0k0b3e6hft0",
  • "start_at": "2026-01-01",
  • "end_at": "2026-12-31"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar um período de calendário

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

calendarHistoryId
required
string
Example: c96r3a88u0k0b3e6hftg

ID do histórico de calendário.

Request Body schema: application/json
calendar_id
required
string
start_at
required
string <date>

Primeiro dia desta atribuição de calendário.

end_at
string or null <date>

Último dia desta atribuição de calendário. Null enquanto o período está aberto.

Responses

Request samples

Content type
application/json
{
  • "calendar_id": "c96r3a88u0k0b3e6hft0",
  • "start_at": "2026-01-01",
  • "end_at": "2026-12-31"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir um período de calendário

Faz exclusão lógica do período.

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

ID do usuário

calendarHistoryId
required
string
Example: c96r3a88u0k0b3e6hftg

ID do histórico de calendário.

Responses

Equipes

Equipes agrupam usuários dentro da conta.

Listar equipes

Lista as equipes da conta

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Exemplo de um único ID
  • id=1,5,7 - Exemplo de vários IDs

Filtra por ID. Use uma lista de IDs separada por vírgula para vários IDs.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Nova equipe

Cria uma equipe. name é obrigatório.

Authorizations:
Token
Request Body schema: application/json
name
required
string

Nome da equipe

Responses

Request samples

Content type
application/json
{
  • "name": "Projects"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter equipe

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar equipe

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

Request Body schema: application/json
name
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "Projects"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir equipe

Exclui a equipe de forma lógica. Uma equipe atribuída a um usuário não pode ser excluída.

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

Responses

Membros da equipe

Usuários que pertencem a uma equipe.

Listar membros da equipe

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

query Parameters
include_archived_users
boolean
Default: false

Quando verdadeiro, a lista de membros inclui arquivados. O padrão os exclui.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Lista usuários disponíveis para adicionar

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Adicionar usuário à equipe

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

id
required
integer
Example: 5

ID do usuário

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Remove o usuário da equipe

Authorizations:
Token
path Parameters
teamId
required
integer
Example: 11

ID da equipe

id
required
integer
Example: 5

ID do usuário

Responses

Campos personalizados

Campos personalizados ligados aos registros da conta.

Listar campos personalizados

Authorizations:
Token
query Parameters
entity
string
Enum: "time_entries" "projects" "customers" "tasks" "users" "todos"

Filtra pelo tipo de registro ao qual o campo pertence

type
string
Enum: "text" "enum" "numeric" "date" "money" "time" "user"

Filtra pelo tipo do campo.

id
string

Filtra pelo id do campo personalizado.

active
integer
Example: active=1

Filtra pelo status ativo ("1" é ativo e "0" é arquivado)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Novo campo personalizado

Authorizations:
Token
Request Body schema: application/json
name
required
string
description
string or null
entity
required
string
Enum: "time_entries" "projects" "customers" "tasks" "users"

Registro ao qual o campo pertence. A criação aceita time_entries, projects, customers, tasks e users. A listagem pode filtrar todos, mas criar um campo para atividades é rejeitado.

type
required
string
Enum: "text" "enum" "numeric" "date" "money" "time" "user"
active
boolean
required
boolean
importance
string or null
position
integer
is_restricted
boolean
restricted_roles
Array of strings

Responses

Request samples

Content type
application/json
{
  • "name": "Cost center",
  • "description": "string",
  • "entity": "time_entries",
  • "type": "text",
  • "active": true,
  • "required": false,
  • "importance": "string",
  • "position": 0,
  • "is_restricted": false,
  • "restricted_roles": [ ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter campo personalizado

Campos do tipo enum incluem as opções.

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar campo personalizado

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Request Body schema: application/json
name
required
string
description
string or null
entity
required
string
Enum: "time_entries" "projects" "customers" "tasks" "users"

Registro ao qual o campo pertence. A criação aceita time_entries, projects, customers, tasks e users. A listagem pode filtrar todos, mas criar um campo para atividades é rejeitado.

type
required
string
Enum: "text" "enum" "numeric" "date" "money" "time" "user"
active
boolean
required
boolean
importance
string or null
position
integer
is_restricted
boolean
restricted_roles
Array of strings

Responses

Request samples

Content type
application/json
{
  • "name": "Cost center",
  • "description": "string",
  • "entity": "time_entries",
  • "type": "text",
  • "active": true,
  • "required": false,
  • "importance": "string",
  • "position": 0,
  • "is_restricted": false,
  • "restricted_roles": [ ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Exclui o campo personalizado

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Responses

Listar opções de enum

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Nova opção de enum

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Request Body schema: application/json
custom_field_id
string
name
required
string
active
boolean

Responses

Request samples

Content type
application/json
{
  • "custom_field_id": "c96r3a88u0k0b3e6hft0",
  • "name": "Buildings",
  • "active": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter opção de enum

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

enumOptionId
required
string
Example: c96r3a88u0k0b3e6hftg

ID da opção de enum

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar opção de enum

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

enumOptionId
required
string
Example: c96r3a88u0k0b3e6hftg

ID da opção de enum

Request Body schema: application/json
custom_field_id
string
name
required
string
active
boolean

Responses

Request samples

Content type
application/json
{
  • "custom_field_id": "c96r3a88u0k0b3e6hft0",
  • "name": "Buildings",
  • "active": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir opção de enum

Authorizations:
Token
path Parameters
customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

enumOptionId
required
string
Example: c96r3a88u0k0b3e6hftg

ID da opção de enum

Responses

Lista a configuração de campos personalizados do projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

query Parameters
active
integer
Example: active=1

Filtra pelo status ativo ("1" é ativo e "0" é arquivado)

custom_field_id
string

Filtra as configurações pelo id do campo personalizado.

id
string

Filtra pelo id da configuração. A resposta omite o id.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Obtém a configuração do campo personalizado no projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Salva a configuração do campo personalizado no projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Request Body schema: application/json
custom_field_id
string
project_id
integer
position
integer
importance
string or null
required
boolean
active
boolean

Responses

Request samples

Content type
application/json
{
  • "custom_field_id": "c96r3a88u0k0b3e6hft0",
  • "project_id": 7,
  • "position": 0,
  • "importance": "string",
  • "required": false,
  • "active": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Remove a configuração do campo personalizado no projeto

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

ID do projeto

customFieldId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do campo personalizado

Responses

Aprovação de horas

Envio e aprovação semanal das horas.

Lista as aprovações de horas

Timesheets enviados e aprovados travam os lançamentos de horas relacionados. Lançamentos travados devolvem is_locked e locked_reason.

Authorizations:
Token
query Parameters
user_id
Array of integers or guids
Examples:
  • user_id=5 - Exemplo de um único ID
  • user_id=1,5,7 - Exemplo de vários IDs

Filtra pelo ID do usuário. Use uma lista de IDs separada por vírgula para vários IDs.

approver_user_id
string

Filtra pelo aprovador. Use uma lista de IDs separada por vírgula para vários IDs.

status
string
Enum: "draft" "submitted" "approved" "rejected"
period_start
string <date>

Apenas aprovações cujo período começa nesta data ou depois

period_end
string <date>

Apenas aprovações cujo período termina nesta data ou antes

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

Quantidade de itens a retornar

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}

Enviar timesheet

Envia a semana do usuário atual, ou de user_id quando quem chama pode forçar o envio.

Authorizations:
Token
Request Body schema: application/json
user_id
integer

Se omitido, usa o usuário autenticado

period_start
required
string <date>
period_end
required
string <date>

Responses

Request samples

Content type
application/json
{
  • "user_id": 0,
  • "period_start": "2026-10-05",
  • "period_end": "2026-10-11"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obtém uma aprovação de horas

Authorizations:
Token
path Parameters
timesheetApprovalId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da aprovação de horas

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Aprovar timesheet

Authorizations:
Token
path Parameters
timesheetApprovalId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da aprovação de horas

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Rejeitar timesheet

comment é obrigatório.

Authorizations:
Token
path Parameters
timesheetApprovalId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da aprovação de horas

Request Body schema: application/json
comment
required
string

Responses

Request samples

Content type
application/json
{
  • "comment": "Missing Monday hours"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Desfazer aprovação

Authorizations:
Token
path Parameters
timesheetApprovalId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da aprovação de horas

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Desfazer envio

Authorizations:
Token
path Parameters
timesheetApprovalId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da aprovação de horas

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Trocar aprovador

Authorizations:
Token
path Parameters
timesheetApprovalId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da aprovação de horas

Request Body schema: application/json
approver_user_id
required
integer

Responses

Request samples

Content type
application/json
{
  • "approver_user_id": 2
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Taxas

Taxas de cobrança, custo e imposto guardadas com histórico.

Listar taxas

type é obrigatório. billable exige project_id. Sem user_id, lista a taxa do projeto. cost exige user_id. tax é a taxa de imposto da conta.

Authorizations:
Token
query Parameters
type
required
string
Enum: "billable" "cost" "tax"

billable, cost ou tax.

project_id
string

Obrigatório quando type é billable.

user_id
string

Obrigatório quando type é cost. Substituição opcional do membro quando type é billable.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Salvar uma taxa

Cria a taxa vigente. Envie rate_start_at_new para guardar a taxa anterior como histórico a partir dessa data. Sem esse campo, a taxa vigente é substituída. Uma taxa nula limpa o valor.

Authorizations:
Token
Request Body schema: application/json
type
required
string
Enum: "billable" "cost" "tax"
rate
required
number or null
project_id
string
user_id
string
rate_start_at_new
string <date>

Data inicial de um novo período histórico. Precisa ser posterior ao início da taxa vigente.

Responses

Request samples

Content type
application/json
{
  • "type": "billable",
  • "rate": 0,
  • "project_id": "string",
  • "user_id": "string",
  • "rate_start_at_new": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter a taxa vigente

Usa os mesmos filtros da listagem. data vem vazio quando não existe taxa.

Authorizations:
Token
query Parameters
type
required
string
Enum: "billable" "cost" "tax"
project_id
string
user_id
string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir a taxa vigente

Remove a taxa vigente e reabre o período anterior quando ele existe.

Authorizations:
Token
query Parameters
type
required
string
Enum: "billable" "cost" "tax"
project_id
string
user_id
string

Responses

Comentários

Comentários em atividades.

Listar comentários

Exige entity_type e entity_id. Os comentários fixados vêm primeiro. Envie next_page_query_params para ler a página seguinte.

Authorizations:
Token
query Parameters
entity_type
required
string
Value: "todo"
entity_id
required
string
opt_page_limit
integer [ 1 .. 100 ]
Default: 50

Quantidade de itens a retornar

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "total_rows": 0,
  • "next_page_query_params": { }
}

Novo comentário

content é obrigatório. Mencione um usuário com @Nome.

Authorizations:
Token
Request Body schema: application/json
entity_type
required
string
Value: "todo"
entity_id
required
string
content
required
string

Texto do comentário. Mencione um usuário com @Nome.

attachment_ids
Array of strings

Ids de anexos já enviados para este comentário.

Responses

Request samples

Content type
application/json
{
  • "entity_type": "todo",
  • "entity_id": "string",
  • "content": "string",
  • "attachment_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar um comentário

Envie content, pinned ou os dois. pinned true define pinned_at. pinned false limpa o valor.

Authorizations:
Token
path Parameters
commentId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do comentário.

Request Body schema: application/json
content
string
pinned
boolean

Envie true para fixar o comentário, ou false para desafixar.

Responses

Request samples

Content type
application/json
{
  • "content": "string",
  • "pinned": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir um comentário

Faz exclusão lógica do comentário.

Authorizations:
Token
path Parameters
commentId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do comentário.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Calendários

Calendários de trabalho e seus feriados.

Listar calendários

Authorizations:
Token
query Parameters
name
string

Filtro de nome sem diferenciar maiúsculas.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Novo calendário

Exige permissão para editar as configurações da conta. name é obrigatório. parent_id herda feriados de outro calendário.

Authorizations:
Token
Request Body schema: application/json
name
required
string

Nome do calendário.

parent_id
string or null

Calendário pai cujos feriados também são listados.

Responses

Request samples

Content type
application/json
{
  • "name": "Brazil",
  • "parent_id": "c96r3a88u0k0b3e6hftg"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Obter um calendário

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar um calendário

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

Request Body schema: application/json
name
required
string

Nome do calendário.

parent_id
string or null

Calendário pai cujos feriados também são listados.

Responses

Request samples

Content type
application/json
{
  • "name": "Brazil",
  • "parent_id": "c96r3a88u0k0b3e6hftg"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir um calendário

Faz exclusão lógica do calendário. Falha enquanto um histórico de calendário de usuário ainda aponta para ele.

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

Responses

Listar feriados

Inclui os feriados do calendário pai quando parent_id está definido.

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

query Parameters
year
integer
Example: year=2026

Limita os feriados a um ano.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Novo feriado

holiday_date é obrigatório e precisa ser único no calendário.

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

Request Body schema: application/json
holiday_date
required
string <date>
description
string

Responses

Request samples

Content type
application/json
{
  • "holiday_date": "2019-08-24",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Editar um feriado

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

holidayId
required
string
Example: c96r3a88u0k0b3e6hftg

ID do feriado.

Request Body schema: application/json
holiday_date
required
string <date>

Data do feriado.

description
string or null

Nome do feriado.

Responses

Request samples

Content type
application/json
{
  • "holiday_date": "2026-01-01",
  • "description": "New Year"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Excluir um feriado

Faz exclusão lógica do feriado.

Authorizations:
Token
path Parameters
calendarId
required
string
Example: c96r3a88u0k0b3e6hft0

ID do calendário.

holidayId
required
string
Example: c96r3a88u0k0b3e6hftg

ID do feriado.

Responses

Webhooks

Assinaturas que entregam eventos da conta em uma URL externa.

Lista os tipos de evento de webhook

Authorizations:
Token

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Lista as assinaturas de webhook

Cada entrega é um HTTP POST com Content-Type: application/json. O RabbitWork assina o corpo bruto com HMAC-SHA256 usando o segredo da assinatura e envia o digest hexadecimal em X-Signature. As entregas também incluem X-Event-Id, X-Event-Type e X-Delivery-Id.

Authorizations:
Token

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "usage": { }
}

Nova assinatura de webhook

O segredo de assinatura é devolvido apenas nesta resposta.

Authorizations:
Token
Request Body schema: application/json
name
required
string
url
required
string <uri>
event_types
required
Array of strings
Items Enum: "project.created" "project.updated" "project.deleted" "customer.created" "customer.updated" "customer.deleted" "rate.created" "rate.updated" "rate.deleted" "user.created" "user.updated" "user.deleted" "task.created" "task.updated" "task.deleted" "team.created" "team.updated" "team.deleted" "team_user.created" "team_user.deleted" "project_user.created" "project_user.updated" "project_user.deleted" "project_task.created" "project_task.updated" "project_task.deleted" "time_entry.created" "time_entry.updated" "time_entry.deleted" "time_entry.timer_started" "time_entry.timer_stopped" "todo_list.created" "todo_list.updated" "todo_list.deleted" "todo_list.restored" "todo.created" "todo.updated" "todo.deleted" "todo.restored" "timesheet_approval.created" "timesheet_approval.update"
enabled
boolean
secret
string

Opcional na criação e na atualização. Quando omitido, o RabbitWork gera um. O valor volta só quando a assinatura é criada ou o segredo é regenerado. Use-o para verificar X-Signature.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Edita a assinatura de webhook

Envie regenerate_secret como true para trocar o segredo de assinatura. O novo segredo é devolvido uma única vez.

Authorizations:
Token
path Parameters
webhookSubscriptionId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da assinatura de webhook

Request Body schema: application/json
name
required
string
url
required
string <uri>
event_types
required
Array of strings
Items Enum: "project.created" "project.updated" "project.deleted" "customer.created" "customer.updated" "customer.deleted" "rate.created" "rate.updated" "rate.deleted" "user.created" "user.updated" "user.deleted" "task.created" "task.updated" "task.deleted" "team.created" "team.updated" "team.deleted" "team_user.created" "team_user.deleted" "project_user.created" "project_user.updated" "project_user.deleted" "project_task.created" "project_task.updated" "project_task.deleted" "time_entry.created" "time_entry.updated" "time_entry.deleted" "time_entry.timer_started" "time_entry.timer_stopped" "todo_list.created" "todo_list.updated" "todo_list.deleted" "todo_list.restored" "todo.created" "todo.updated" "todo.deleted" "todo.restored" "timesheet_approval.created" "timesheet_approval.update"
enabled
boolean
secret
string

Opcional na criação e na atualização. Quando omitido, o RabbitWork gera um. O valor volta só quando a assinatura é criada ou o segredo é regenerado. Use-o para verificar X-Signature.

regenerate_secret
boolean

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Exclui a assinatura de webhook

Authorizations:
Token
path Parameters
webhookSubscriptionId
required
string
Example: c96r3a88u0k0b3e6hft0

ID da assinatura de webhook

Responses

Lista as entregas de webhook

Authorizations:
Token
query Parameters
event_type
string
Enum: "project.created" "project.updated" "project.deleted" "customer.created" "customer.updated" "customer.deleted" "rate.created" "rate.updated" "rate.deleted" "user.created" "user.updated" "user.deleted" "task.created" "task.updated" "task.deleted" "team.created" "team.updated" "team.deleted" "team_user.created" "team_user.deleted" "project_user.created" "project_user.updated" "project_user.deleted" "project_task.created" "project_task.updated" "project_task.deleted" "time_entry.created" "time_entry.updated" "time_entry.deleted" "time_entry.timer_started" "time_entry.timer_stopped" "todo_list.created" "todo_list.updated" "todo_list.deleted" "todo_list.restored" "todo.created" "todo.updated" "todo.deleted" "todo.restored" "timesheet_approval.created" "timesheet_approval.update"
status
string
Enum: "pending" "delivered" "failed" "retrying"

Filtra as entregas pelo status.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}