# Autenticação
URL: /docs/autenticacao
🔐 Bearer Token [#-bearer-token]
Todas as requisições requerem autenticação via **Bearer Token** no header `Authorization`:
```http
Authorization: Bearer SEU_TOKEN_AQUI
```
**Importante:** O token de acesso é fornecido pela ADVBOX para parceiros e integradores aprovados. Não compartilhe seu token.
🛡️ Segurança do Token [#️-segurança-do-token]
O token de acesso é a chave de entrada da sua integração — qualquer pessoa que o possua pode fazer requisições em nome da sua conta. Por isso, trate-o com o mesmo cuidado que uma senha.
**Boas práticas:**
* **Nunca exponha o token no código-fonte** — armazene-o em variáveis de ambiente (`.env`) e nunca o versione no Git
* **Nunca inclua o token real em exemplos ou documentações internas** — use sempre um placeholder como `SEU_TOKEN_AQUI`
* **Revogue imediatamente** caso suspeite que o token foi comprometido — entre em contato com a ADVBOX para emissão de um novo
* **Não compartilhe o token por canais inseguros** — evite e-mail, WhatsApp ou qualquer mensagem que possa ser interceptada
⚠️ Atenção ao usar assistentes de IA [#️-atenção-ao-usar-assistentes-de-ia]
Ao usar ferramentas de IA (como Claude, ChatGPT ou Cursor) para apoiar sua integração, tome cuidado:
* **Nunca cole seu token real no chat do assistente** — as conversas podem ser armazenadas e revisadas
* Use sempre o placeholder `SEU_TOKEN_AQUI` nos exemplos que enviar ao assistente
* Substitua pelo token real apenas no seu ambiente local, fora do chat
* Lembre-se: o assistente não precisa do token real para gerar o código — ele só precisa saber onde o token deve ser inserido
***
🧪 Testando a API [#-testando-a-api]
**Nota sobre CORS:** A funcionalidade "Try it out" não está disponível devido às políticas de CORS da API.
**Ferramentas recomendadas:**
* [Postman](https://www.postman.com/)
* [Insomnia](https://insomnia.rest/)
* cURL (linha de comando)
Todos os endpoints incluem exemplos de requisição e resposta para facilitar os testes.
⚡ Rate Limits [#-rate-limits]
Para garantir a estabilidade do serviço, aplicamos os seguintes limites por conta:
| Método | Limite | Período |
| ------ | --------------- | ------------------ |
| GET | 30 requisições | Por minuto |
| POST | 500 requisições | Por dia (por rota) |
| PUT | 500 requisições | Por dia |
Ao atingir o limite, a API retorna o status **429 Too Many Requests**. Aguarde o período indicado antes de novas requisições.
# Bem-vindo
URL: /docs
Bem-vindo à API ADVBOX [#bem-vindo-à-api-advbox]
API REST oficial para integração com a plataforma ADVBOX — sistema completo de gestão jurídica.
**Acesso exclusivo** para parceiros e integradores aprovados pela ADVBOX.
🚀 Visão Geral [#-visão-geral]
A API ADVBOX permite que você integre seu sistema com nossa plataforma, possibilitando:
* **Gestão de Processos Judiciais** — Criar, consultar e atualizar processos
* **Gerenciamento de Contatos** — Clientes, partes processuais e relacionados
* **Acompanhamento de Movimentações** — Publicações, histórico e andamentos processuais
* **Controle de Tarefas** — Organização de atividades e prazos
* **Gestão Financeira** — Transações, honorários e controle de custos
🌐 URL Base [#-url-base]
```
https://app.advbox.com.br/api/v1
```
📚 Comece a Integrar [#-comece-a-integrar]
***
**Versão da API:** 1.2.0
**Última atualização:** Abril 2026
# Visão Geral
URL: /docs/referencia
Esta página reúne todos os 20 endpoints da API ADVBOX organizados por área. Use como ponto de partida para encontrar o recurso que precisa e acessar a documentação detalhada de cada operação.
**⚙️ Antes de começar:** A maioria dos endpoints que criam ou atualizam registros exige IDs específicos da sua conta — como o ID do usuário responsável, da fase processual ou da categoria financeira. Esses IDs são obtidos através do endpoint **Settings**, listado ao final desta página. Consulte-o primeiro.
**🤖 Gerando código de integração?** Cada endpoint tem um botão **Copiar para IA** no topo da página. Cole o conteúdo no assistente de sua preferência para gerar o código automaticamente. Para integrações que envolvem múltiplos endpoints, use a Documentação Completa com todos os 20 endpoints de uma vez.
📁 Contatos (Customers) [#-contatos-customers]
Gerencie clientes, fornecedores e contatos do escritório. Crie novos leads, busque por CPF/CNPJ/email, e consulte aniversariantes para campanhas de relacionamento.
**IDs necessários (obter em `/settings`):**
* `users_id` - ID do usuário responsável pelo contato
* `customers_origins_id` - ID da origem do lead (Indicação, Facebook, Google, etc.)
***
⚖️ Processos (Lawsuits) [#️-processos-lawsuits]
Gerencie processos judiciais completos: criação, atualização, consulta de movimentações, histórico processual e publicações. Filtre por cliente, fase processual, tipo de ação, responsável, datas e muito mais.
**IDs necessários (obter em `/settings`):**
* `users_id` - ID do usuário responsável pelo processo
* `customers_id` - ID do cliente vinculado ao processo (obter em `/customers`)
* `stages_id` - ID da fase processual (ex: Planejamento, Produção, Andamento)
* `type_lawsuits_id` - ID do tipo de processo (ex: Trabalhista, Cível, Criminal)
***
📋 Tarefas (Posts) [#-tarefas-posts]
Gerencie posts, anotações e atividades relacionadas aos processos e clientes. Crie lembretes, registre interações importantes e acompanhe o histórico de comunicação.
**IDs necessários (obter em `/settings`):**
* `tasks_id` - ID do tipo de tarefa (ex: 1º Contato com Lead, Acompanhar Citação, Protocolar Petição)
***
📰 Publicações (Publications) [#-publicações-publications]
Consulte publicações oficiais dos Diários da Justiça vinculadas aos processos judiciais. Acompanhe intimações, sentenças e demais publicações capturadas automaticamente pelo sistema.
***
💰 Transações (Transactions) [#-transações-transactions]
Gerencie transações financeiras do escritório: honorários recebidos, despesas processuais, custas judiciais e outras movimentações. Crie novas transações (receitas/despesas), atualize valores e datas, e consulte com filtros avançados.
**IDs necessários (obter em `/settings`):**
* `users_id` - ID do usuário responsável
* `debit_account` - ID da conta bancária (campo `financial.banks[]`)
* `categories_id` - ID da categoria financeira (campo `financial.categories[]`)
* `cost_centers_id` - ID do centro de custo (campo `financial.cost_centers[]`)
***
⚙️ Configurações (Settings) [#️-configurações-settings]
**🔑 ENDPOINT ESSENCIAL** - Consulte PRIMEIRO antes de usar outros endpoints!
Este endpoint retorna todos os IDs e dados cadastrais da sua conta necessários para criar/atualizar registros em outros endpoints.
📋 O que este endpoint retorna: [#-o-que-este-endpoint-retorna]
| Campo | Descrição | Usado em |
| ------------------- | ----------------------------------------------- | -------------------------------------------- |
| **`users`** | Lista de usuários do escritório | /customers, /lawsuits, /posts, /transactions |
| **`origins`** | Origens de leads (ex: Facebook, Indicação) | /customers (campo `customers_origins_id`) |
| **`tasks`** | Tipos de tarefas cadastradas | /posts (campo `tasks_id`) |
| **`stages`** | Fases processuais (ex: Planejamento, Andamento) | /lawsuits (campo `stages_id`) |
| **`type_lawsuits`** | Tipos de processo (ex: Trabalhista, Cível) | /lawsuits (campo `type_lawsuits_id`) |
💡 Como usar: [#-como-usar]
1. **Faça uma requisição GET `/settings`**
2. **Guarde os IDs retornados** (users, origins, tasks, stages, type\_lawsuits)
3. **Use esses IDs** ao criar/atualizar contatos, processos e tarefas
**Exemplo:** Para criar um contato, você precisa informar `users_id` (responsável) e `customers_origins_id` (origem). Ambos vêm do `/settings`.
***
📊 Resumo dos Recursos [#-resumo-dos-recursos]
| Recurso | Endpoints | Principais Operações |
| ---------------- | --------- | -------------------------------------------- |
| **Customers** | 4 | Listar, Criar, Buscar, Aniversários |
| **Lawsuits** | 8 | CRUD completo + Histórico/Movimentações |
| **Posts** | 2 | Listar e Criar tarefas |
| **Publications** | 1 | Consultar publicações |
| **Transactions** | 4 | Listar, Buscar, Criar e Atualizar transações |
| **Settings** | 1 | Consultar configurações |
**Total:** 20 endpoints documentados
# Uso com IAs
URL: /docs/uso-com-ias
🤖 Como funciona [#-como-funciona]
Você pode usar o assistente de IA de sua preferência para gerar o código de integração com a API ADVBOX. Para isso, basta fornecer ao assistente a documentação do endpoint que deseja usar — ele terá todas as informações necessárias para escrever o código por você.
***
📋 Botão "Copiar para IA" [#-botão-copiar-para-ia]
Cada página de endpoint possui um botão **"Copiar para IA"** logo abaixo do título. Ao clicar, o conteúdo completo daquele endpoint é copiado — incluindo parâmetros, campos obrigatórios, exemplos de requisição e resposta.
**Como usar:**
1. Acesse a página do endpoint desejado
2. Clique em **Copiar para IA**
3. Cole no assistente de sua preferência
4. Descreva o que você precisa fazer com esse endpoint — o assistente vai gerar o código com base na documentação copiada.
Use também o botão **Abrir com IA** para abrir o assistente diretamente já com o contexto da página atual.
***
📄 Documentação completa [#-documentação-completa]
Para integrações que envolvem mais de um endpoint, você pode fornecer toda a documentação de uma vez:
***
💡 Dicas [#-dicas]
* **Seja específico** — quanto mais detalhes você der sobre o que precisa, melhor será o resultado
* **Descreva o fluxo completo** — se a integração envolver mais de um endpoint, explique a ordem das operações
* **Peça tratamento de erros** — solicite que o código cubra situações inesperadas, como falhas de autenticação ou indisponibilidade da API
* **Nunca compartilhe seu token real** — use sempre um placeholder como `SEU_TOKEN_AQUI` nos exemplos que enviar ao assistente. Substitua pelo token real apenas no seu ambiente local, fora do chat.
**Segurança do token:** As conversas com assistentes de IA podem ser armazenadas. Nunca cole seu token real no chat — o assistente não precisa dele para gerar o código, apenas para saber onde ele deve ser inserido. Consulte a página de [Autenticação](/docs/autenticacao) para mais boas práticas.
A Documentação Completa é gerada automaticamente — qualquer atualização nos endpoints é refletida sem necessidade de edição manual.
# Crie um novo contato
URL: /docs/customers/createCustomer
Cria um novo contato no sistema.
**Campos obrigatórios:**
* `users_id` - ID do usuário responsável (deve pertencer ao escritório)
* `customers_origins_id` - ID da origem do contato (deve pertencer ao escritório)
* `name` - Nome do contato
**Campos opcionais — Pessoais:**
* `email`, `identification` (CPF/CNPJ), `phone`, `cellphone`
* `birthdate` (YYYY-MM-DD), `gender`, `occupation`, `document`
**Campos opcionais — Endereço:**
* `street`, `region`, `city`, `state`, `country`, `postalcode`
**Campos opcionais — Trabalhistas:**
* `number_ctps`, `number_pis`, `number_cid`, `notes`
**Validações importantes:**
* `identification` (CPF/CNPJ) é validado com algoritmo real e bloqueia duplicação
* `email` é validado mas permite duplicação
* `postalcode` DEVE ter formatação 99999-999 (não aceita sem hífen)
* `birthdate` deve ser no formato YYYY-MM-DD
* `phone` e `cellphone` aceitam com ou sem formatação
## POST /customers
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Crie um novo contato
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
**Campos obrigatórios:** users_id, customers_origins_id, name
| Campo | Tipo | Descrição |
|-------|------|----------|
| users_id | integer | **[Required]** ID do usuário responsável (deve existir e pertencer ao escritório) |
| customers_origins_id | integer | **[Required]** ID da origem do contato (deve existir e pertencer ao escritório) |
| name | string | **[Required]** Nome completo do contato |
| email | string (email) | **[Optional]** Email do contato. Validado mas permite duplicação. |
| document | string | **[Optional]** Número do documento do contato (campo livre, sem validação) |
| identification | string | **[Optional]** CPF ou CNPJ do contato. Aceita com ou sem formatação. Validado com algoritmo real e bloqueia duplicação. |
| phone | string | **[Optional]** Telefone do contato. Aceita com ou sem formatação. |
| cellphone | string | **[Optional]** Celular do contato. Aceita com ou sem formatação. |
| birthdate | string (date) | **[Optional]** Data de nascimento no formato YYYY-MM-DD |
| occupation | string | **[Optional]** Profissão ou ocupação do contato |
| postalcode | string | **[Optional]** CEP no formato 99999-999 (hífen obrigatório) |
| city | string | **[Optional]** Cidade do contato |
| state | string | **[Optional]** Estado do contato (sigla com 2 letras) |
| notes | string | **[Optional]** Observações ou notas adicionais sobre o contato |
| gender | string | **[Optional]** Gênero do contato (ex: M, F) |
| street | string | **[Optional]** Logradouro do contato (rua, avenida, etc.) |
| region | string | **[Optional]** Bairro do contato |
| country | string | **[Optional]** País do contato (ex: BRASIL) |
| number_ctps | string | **[Optional]** Número da Carteira de Trabalho (CTPS) |
| number_pis | string | **[Optional]** Número do PIS/PASEP |
| number_cid | string | **[Optional]** Código CID (classificação de doença) |
#### Exemplo: minimo — Criação mínima (campos obrigatórios)
```json
{
"users_id": 123456,
"customers_origins_id": 789012,
"name": "Maria Silva"
}
```
#### Exemplo: completo — Criação completa (todos os campos)
```json
{
"users_id": 123456,
"customers_origins_id": 789012,
"name": "Maria Silva",
"email": "maria.silva@example.com",
"identification": "123.456.789-01",
"phone": "(11) 3333-4444",
"cellphone": "(11) 98888-7777",
"birthdate": "1990-05-15",
"occupation": "Advogada",
"postalcode": "01234-567",
"street": "Rua Exemplo, 123",
"region": "Centro",
"city": "São Paulo",
"state": "SP",
"country": "BRASIL",
"gender": "F",
"number_ctps": "12345",
"number_pis": "67890",
"number_cid": "CID123",
"notes": "Contato preferencial"
}
```
### Respostas
#### 201 — Contato criado com sucesso
##### Exemplo
```json
{
"success": true,
"customers_id": 12345678
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: campos_obrigatorios — Campos obrigatórios ausentes
```json
{
"message": "The given data was invalid.",
"errors": {
"users_id": [
"The responsible user is required"
],
"name": [
"The customer name field is required"
],
"customers_origins_id": [
"The customer origin is required"
]
}
}
```
##### Exemplo: users_id_invalido — Usuário não pertence ao escritório
```json
{
"message": "The given data was invalid.",
"errors": {
"users_id": [
"You must enter a user associated with your office"
]
}
}
```
##### Exemplo: origin_invalida — Origem não pertence ao escritório
```json
{
"message": "The given data was invalid.",
"errors": {
"customers_origins_id": [
"You must enter an origin associated with your office"
]
}
}
```
##### Exemplo: nome_duplicado — Cliente com mesmo nome já existe
```json
{
"message": "The given data was invalid.",
"errors": {
"duplicate": [
"Client with this name already exists."
]
}
}
```
##### Exemplo: email_invalido — Formato de e-mail inválido
```json
{
"message": "The given data was invalid.",
"errors": {
"email": [
"The email is invalid"
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
#### 500 — Erro interno do servidor
_Sem corpo de resposta._
# Obtenha um contato pelo ID
URL: /docs/customers/getCustomerById
Retorna os dados completos de um contato específico baseado no seu ID único.
**Observações importantes:**
* Data de nascimento retorna no formato `DD/MM/YYYY`
* Campos de texto retornam em MAIÚSCULAS
* Inclui array de processos associados (`lawsuits`)
## GET /customers/{id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha um contato pelo ID
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| id | integer | Sim | **[Required]** ID único do contato |
### Respostas
#### 200 — Contato encontrado com sucesso
##### Exemplo: encontrado — Contato encontrado
```json
{
"id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"gender": "M",
"cellphone": "(11) 98888-1234",
"phone": "(11) 3333-5678",
"email": "JOAO.PEREIRA@EMAIL.COM",
"occupation": "ENGENHEIRO",
"street": "RUA DAS FLORES, 123",
"postalcode": "01234-567",
"region": "JARDIM PRIMAVERA",
"city": "SAO PAULO",
"state": "SP",
"country": "BRASIL",
"birthdate": "15/05/1985",
"number_ctps": null,
"number_pis": null,
"number_cid": null,
"notes": "Cliente referenciado pelo parceiro",
"origin": "ESCRITORIO",
"created_at": "2026-01-15 10:30:00",
"lawsuits": [
{
"lawsuit_id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null
},
{
"lawsuit_id": 1234502,
"process_number": null,
"protocol_number": "PROT-2026-002"
}
]
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 404 — Registro não encontrado
##### Exemplo
```json
{
"error": "Customer not found"
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha uma lista de contatos
URL: /docs/customers/getCustomers
Retorna uma lista de contatos com opções avançadas de filtro e paginação.
**Como funcionam os filtros:**
* Múltiplos filtros são combinados com **AND** (interseção)
* Filtros de texto são **case-insensitive**
* `name` aceita **busca parcial** (qualquer parte do nome)
* Outros campos requerem **busca exata** (email, city, state, document, occupation)
* `identification` aceita CPF **com ou sem pontuação**
* `phone` aceita **com ou sem formatação** (10-11 dígitos)
* Filtros de data (`created_start` e `created_end`) **devem ser usados juntos**
A resposta inclui `totalCount` (total de registros), `data` (array de contatos) e informações de paginação (`limit` e `offset`).
## GET /customers
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha uma lista de contatos
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| name | string | Não | **[Optional]** Busca parcial no nome do contato (qualquer parte do nome). |
| phone | string | Não | **[Optional]** Telefone do contato. Aceita 10-11 dígitos com ou sem formatação. Retorna erro se formato inválido. |
| identification | string | Não | **[Optional]** CPF/CNPJ do contato. Aceita com ou sem pontuação/traços. |
| document | string | Não | **[Optional]** Número do documento do contato (busca exata). |
| email | string (email) | Não | **[Optional]** E-mail do contato (busca exata, case-insensitive). |
| city | string | Não | **[Optional]** Cidade do contato (busca exata, case-insensitive). |
| state | string | Não | **[Optional]** Sigla do estado do contato (ex: SC, SP, PR). |
| occupation | string | Não | **[Optional]** Ocupação ou profissão do contato (busca exata). |
| birthdays | boolean | Não | **[Optional]** Filtra contatos aniversariantes do mês atual (true/false). |
| created_start | string (date) | Não | **[Optional]** Data inicial do range (formato: YYYY-MM-DD). DEVE ser usado COM created_end. |
| created_end | string (date) | Não | **[Optional]** Data final do range (formato: YYYY-MM-DD). DEVE ser usado COM created_start. |
| limit | integer | Não | **[Optional]** Número máximo de registros a retornar (padrão: 1000, máximo: 1000). |
| offset | integer | Não | **[Optional]** Número de registros a pular antes de iniciar a resposta (padrão: 0). |
### Respostas
#### 200 — Lista de contatos retornada com sucesso
##### Exemplo: sem_filtro — Lista sem filtro (primeiros resultados)
```json
{
"offset": 0,
"limit": 10,
"totalCount": 87,
"data": [
{
"id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"document": null,
"cellphone": "(11) 98888-1234",
"gender": null,
"civil_status": null,
"phone": null,
"email": null,
"occupation": null,
"street": null,
"postalcode": null,
"region": null,
"city": null,
"state": "SP",
"country": "BRASIL",
"birthdate": "15/05/1985",
"number_ctps": null,
"number_pis": null,
"number_cid": null,
"notes": null,
"origin": "ESCRITORIO",
"created_at": "2026-01-15 10:30:00",
"lawsuits": [
{
"lawsuit_id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null
}
]
},
{
"id": 9000002,
"name": "ANA COSTA",
"identification": null,
"document": null,
"cellphone": "(21) 97777-5678",
"gender": null,
"civil_status": null,
"phone": null,
"email": null,
"occupation": null,
"street": null,
"postalcode": null,
"region": null,
"city": null,
"state": "RJ",
"country": "BRASIL",
"birthdate": "",
"number_ctps": null,
"number_pis": null,
"number_cid": null,
"notes": null,
"origin": "INDICACAO",
"created_at": "2026-01-15 10:30:00",
"lawsuits": []
}
],
"query": {}
}
```
##### Exemplo: com_filtro — Lista com filtro por nome
```json
{
"offset": 0,
"limit": 10,
"totalCount": 1,
"data": [
{
"id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"document": null,
"cellphone": "(11) 98888-1234",
"gender": null,
"civil_status": null,
"phone": null,
"email": null,
"occupation": null,
"street": null,
"postalcode": null,
"region": null,
"city": null,
"state": "SP",
"country": "BRASIL",
"birthdate": "15/05/1985",
"number_ctps": null,
"number_pis": null,
"number_cid": null,
"notes": null,
"origin": "ESCRITORIO",
"created_at": "2026-01-15 10:30:00",
"lawsuits": [
{
"lawsuit_id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null
}
]
}
],
"query": {
"name": "JOAO PEREIRA"
}
}
```
##### Exemplo: vazio — Nenhum contato encontrado
```json
{
"offset": 0,
"limit": 10,
"totalCount": 0,
"data": [],
"query": {
"name": "NOME INEXISTENTE"
}
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha aniversariantes do mês
URL: /docs/customers/getCustomersBirthdays
Retorna lista de contatos com aniversário no **mês atual**.
**Observações importantes:**
* Sempre retorna aniversários do **mês atual**
* Data de nascimento retorna no formato `DD/MM/YYYY`
* Campos de texto retornam em MAIÚSCULAS
* Paginação funciona normalmente (limit e offset)
* Limit máximo é 1000
## GET /customers/birthdays
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha aniversariantes do mês
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| month | integer | Não | **[Optional]** Mês para filtrar aniversariantes (1-12). |
| limit | integer | Não | **[Optional]** Número máximo de registros a retornar (padrão e máximo: 1000) |
| offset | integer | Não | **[Optional]** Número de registros a pular para paginação |
### Respostas
#### 200 — Lista de aniversários do mês atual retornada com sucesso
##### Exemplo: com_aniversarios — Contatos com aniversario no mes atual
```json
{
"offset": 0,
"limit": 1000,
"totalCount": 2,
"data": [
{
"id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"document": null,
"cellphone": "(11) 98888-1234",
"gender": "M",
"civil_status": "CASADO(A)",
"phone": null,
"email": "JOAO.PEREIRA@EMAIL.COM",
"occupation": "ENGENHEIRO",
"street": null,
"postalcode": null,
"region": null,
"city": "SAO PAULO",
"state": "SP",
"country": "BRASIL",
"birthdate": "15/04/1985",
"number_ctps": null,
"number_pis": null,
"number_cid": null,
"notes": null,
"origin": "ESCRITORIO",
"created_at": "2026-01-15 10:30:00",
"lawsuits": [
{
"lawsuit_id": 1234501,
"process_number": null,
"protocol_number": null
}
]
}
],
"query": {
"birthdays": true
}
}
```
##### Exemplo: sem_aniversarios — Nenhum aniversario no mes atual
```json
{
"offset": 0,
"limit": 1000,
"totalCount": 0,
"data": [],
"query": {
"birthdays": true
}
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Crie um novo processo
URL: /docs/lawsuits/createLawsuit
Cria um novo processo judicial no sistema.
**Campos obrigatórios:**
* `users_id` - ID do usuário responsável (deve pertencer ao escritório)
* `customers_id` - Array de IDs de clientes (mínimo 1, devem pertencer à conta)
* `stages_id` - ID da fase processual (deve pertencer à conta)
* `type_lawsuits_id` - ID do tipo de processo (deve pertencer à conta)
**Validações importantes:**
* `process_number` deve ser um número CNJ válido e oficialmente distribuído. Aceita apenas números reais de processos judiciais.
* `date` deve ser no formato YYYY-MM-DD (valida calendário)
* `folder` aceita no máximo 30 caracteres
* Todos os IDs são validados se pertencem ao escritório autenticado
* `customers_id` deve ter pelo menos 1 elemento (array vazio não é aceito)
**Campos derivados automaticamente (não enviar):**
* `group_id` / `group` — derivados de `type_lawsuits_id`
* `steps_id` / `step` — derivados de `stages_id`
## POST /lawsuits
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Crie um novo processo
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
**Campos obrigatórios:** users_id, customers_id, stages_id, type_lawsuits_id
| Campo | Tipo | Descrição |
|-------|------|----------|
| users_id | string,integer | **[Required]** ID do usuário responsável pelo processo. Deve existir e pertencer ao escritório autenticado. Aceita string ou integer. |
| customers_id | array | **[Required]** Array de IDs de clientes associados ao processo. Deve conter pelo menos 1 cliente. Todos os IDs devem pertencer à conta autenticada. |
| stages_id | string,integer | **[Required]** ID da fase processual. Deve existir e pertencer à conta autenticada. Aceita string ou integer. |
| type_lawsuits_id | string,integer | **[Required]** ID do tipo de processo. Deve existir e pertencer à conta autenticada. Aceita string ou integer. |
| process_number | string | **[Optional]** Número do processo no formato CNJ (formato: NNNNNNN-DD.AAAA.J.TR.OOOO). Deve ser um número CNJ real e oficialmente distribuído. A API valida se o número existe nas bases do Poder Judiciário. Opcional. |
| protocol_number | string | **[Optional]** Número de protocolo do processo. Campo livre, sem validação de formato. |
| folder | string | **[Optional]** Nome da pasta para organização do processo. Máximo 30 caracteres. |
| date | string (date) | **[Optional]** Data do processo no formato YYYY-MM-DD. A data deve ser válida no calendário. |
| notes | string | **[Optional]** Observações detalhadas sobre o processo, incluindo histórico, notas importantes e contexto adicional para referência futura. |
| fees_expec | integer | **[Optional]** Valor esperado de honorários (em reais, inteiro). |
| fees_money | integer | **[Optional]** Valor de honorários em dinheiro (em reais, inteiro). |
| contingency | integer | **[Optional]** Valor de contingência do processo (em reais, inteiro). |
| status_closure | string (date) | **[Optional]** Data de fechamento do processo no formato YYYY-MM-DD. |
| exit_production | string (date) | **[Optional]** Data do trânsito em julgado no formato YYYY-MM-DD. |
| exit_execution | string (date) | **[Optional]** Data do arquivamento no formato YYYY-MM-DD. |
#### Exemplo: minimo — Criação mínima (campos obrigatórios)
```json
{
"users_id": "123456",
"customers_id": [
1234567
],
"stages_id": "2345678",
"type_lawsuits_id": "1234567"
}
```
#### Exemplo: completo — Criação completa (todos os campos)
```json
{
"users_id": "123456",
"customers_id": [
1234567
],
"stages_id": "2345678",
"type_lawsuits_id": "1234567",
"protocol_number": "PROT-2026-001",
"folder": "PASTA CLIENTE A",
"date": "2026-04-02",
"notes": "Processo iniciado para cliente referente a disputa contratual",
"fees_expec": 10000,
"fees_money": 5000,
"contingency": 2500,
"status_closure": "2026-04-02",
"exit_production": "2026-03-01",
"exit_execution": "2026-03-15"
}
```
### Respostas
#### 201 — Processo criado com sucesso
##### Exemplo
```json
{
"success": true,
"lawsuits_id": 12358596
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: campos_obrigatorios — Campos obrigatórios ausentes
```json
{
"message": "The given data was invalid.",
"errors": {
"customers_id": [
"The customer is required."
],
"users_id": [
"The responsible user is required"
],
"stages_id": [
"The stage is required"
],
"type_lawsuits_id": [
"The type lawsuit is required"
]
}
}
```
##### Exemplo: customers_id_invalido — Cliente não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"customers_id.0": [
"One or more customers do not belong to your account"
]
}
}
```
##### Exemplo: stages_id_invalido — Fase processual não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"stages_id": [
"The stage do not belong to your account"
]
}
}
```
##### Exemplo: type_lawsuits_id_invalido — Tipo de processo não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"type_lawsuits_id": [
"The type lawsuit do not belong to your account"
]
}
}
```
##### Exemplo: users_id_invalido — Usuário não pertence ao escritório
```json
{
"message": "The given data was invalid.",
"errors": {
"users_id": [
"You must enter a user associated with your office"
]
}
}
```
##### Exemplo: customers_id_vazio — Array customers_id enviado vazio
```json
{
"message": "The given data was invalid.",
"errors": {
"customers_id": [
"The customer is required."
]
}
}
```
##### Exemplo: folder_longo — Campo folder excede 30 caracteres
```json
{
"message": "The given data was invalid.",
"errors": {
"folder": [
"The folder cannot exceed 30 characters"
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
#### 500 — Erro interno do servidor
_Sem corpo de resposta._
# Crie uma movimentação manual para um processo
URL: /docs/lawsuits/createLawsuitMovement
Cria uma nova movimentação manual (andamento) para um processo existente.
**Campos obrigatórios:**
* `lawsuit_id` - ID do processo (deve existir e pertencer ao escritório)
* `date` - Data da movimentação no formato **DD/MM/YYYY**
* `description` - Descrição da movimentação (mínimo 10 caracteres)
**Validações importantes:**
* `description`: mínimo de 10 caracteres
* `date`: formato **DD/MM/YYYY** obrigatório (diferente de outros endpoints)
* `lawsuit_id`: deve ser um ID válido de processo existente no escritório
**Comportamento:**
* Movimentações criadas por este endpoint têm `origin=MANUAL`
* Podem ser filtradas no endpoint GET /movements usando o parâmetro `?origin=MANUAL`
## POST /lawsuits/movement
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Crie uma movimentação manual para um processo
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
**Campos obrigatórios:** lawsuit_id, date, description
| Campo | Tipo | Descrição |
|-------|------|----------|
| lawsuit_id | integer | **[Required]** ID do processo |
| date | string | **[Required]** Data da movimentação no formato DD/MM/YYYY |
| description | string | **[Required]** Descrição da movimentação (mínimo 10 caracteres) |
#### Exemplo: exemplo — Criar movimentação
```json
{
"lawsuit_id": 123456,
"date": "02/04/2026",
"description": "Audiência de conciliação agendada"
}
```
### Respostas
#### 201 — Movimentação criada com sucesso
##### Exemplo
```json
{
"success": true,
"lawsuits_id": 123
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: campos_obrigatorios — Campos obrigatórios ausentes
```json
{
"message": "The given data was invalid.",
"errors": {
"description": [
"Informe os dados do andamento"
],
"date": [
"Informe a data do andamento"
],
"lawsuit_id": [
"Informe um processo válido"
]
}
}
```
##### Exemplo: description_curta — Descrição com menos de 10 caracteres
```json
{
"message": "The given data was invalid.",
"errors": {
"description": [
"O andamento deve ter no mínimo 10 caracteres"
]
}
}
```
##### Exemplo: date_invalida — Formato de data inválido (esperado: DD/MM/YYYY)
```json
{
"message": "The given data was invalid.",
"errors": {
"date": [
"Informe uma data válida"
]
}
}
```
##### Exemplo: lawsuit_id_invalido — Processo não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"lawsuit_id": [
"Informe um processo válido"
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha o histórico de tarefas de um processo
URL: /docs/lawsuits/getHistoryByLawsuitId
Retorna lista de tarefas (histórico) associadas a um processo específico.
**Filtros disponíveis:**
* `status` - Filtra tarefas por status (pending, completed ou all)
**Comportamento:**
* Sem filtro de status: retorna todas as tarefas (`status: "all"`)
* Com `status=pending`: retorna apenas tarefas pendentes
* Com `status=completed`: retorna apenas tarefas concluídas
* Array vazio quando não há tarefas no status especificado
**⚠️ Importante:**
* Parâmetros `limit` e `offset` **não funcionam** neste endpoint
* A API retorna todas as tarefas do processo de uma vez
* Retorna array vazio para lawsuit\_id inexistente ou sem permissão (não retorna erro 404)
## GET /history/{lawsuit_id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha o histórico de tarefas de um processo
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| lawsuit_id | integer | Sim | **[Required]** ID único do processo |
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| status | string | Não | **[Optional]** Filtrar tarefas por status (pending = pendentes, completed = concluídas) |
### Respostas
#### 200 — Lista de tarefas retornada com sucesso
##### Exemplo: all_tasks — Todas as tarefas (sem filtro)
```json
{
"status": "all",
"data": [
{
"process_number": "0001234-56.2024.8.26.0100",
"protocol_number": "PROT-12345",
"task": "AUDIÊNCIA",
"reward": 1500,
"start": "2026-02-15 10:00:00",
"date_deadline": "2026-02-15 12:00:00",
"comments": "Audiência de conciliação",
"local": "Sala 301",
"created_at": "2026-01-10 14:30:00",
"author": "JOÃO SILVA",
"responsible": "MARIA SANTOS",
"customers": "PEDRO OLIVEIRA"
}
]
}
```
##### Exemplo: pending_tasks — Apenas tarefas pendentes
```json
{
"status": "pending",
"data": [
{
"process_number": null,
"protocol_number": "PROT-12345",
"task": "PETIÇÃO",
"reward": 0,
"start": "2026-02-20 09:00:00",
"date_deadline": "2026-02-25 18:00:00",
"comments": "Elaborar petição de recurso",
"local": null,
"created_at": "2026-02-18 11:00:00",
"author": "JOÃO SILVA",
"responsible": "MARIA SANTOS",
"customers": "PEDRO OLIVEIRA"
}
],
"query": "pending"
}
```
##### Exemplo: completed_empty — Nenhuma tarefa concluída
```json
{
"status": "completed",
"data": [],
"query": "completed"
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha as últimas movimentações com filtros
URL: /docs/lawsuits/getLastMovements
Retorna o **último andamento** de cada processo do escritório, agrupado por processo.
**Comportamento:**
* Cada processo aparece **uma única vez** — sempre com seu andamento mais recente
* Se um processo tem múltiplos andamentos, apenas o mais recente é retornado
* Para listar todos os andamentos de um processo específico, use `GET /movements/{lawsuit_id}`
**Como funcionam os filtros:**
* Múltiplos filtros são combinados com **AND** (interseção)
* Todos os parâmetros são **opcionais**
* `lawsuit_id`: retorna o último andamento daquele processo específico (1 item)
* `process_number`, `protocol_number`: busca exata pelo número do processo
* `date_start` e `date_end`: filtram pela data do último andamento do processo
**Paginação:**
* Padrão: 100 itens por página (limit=100, offset=0)
* `totalCount` representa o número de **processos distintos** com andamentos
**Ordenação:**
* Processos ordenados pela data do último andamento (mais recentes primeiro)
## GET /last_movements
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha as últimas movimentações com filtros
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| lawsuit_id | integer | Não | **[Optional]** ID exato do processo. |
| process_number | string | Não | **[Optional]** Número exato do processo. |
| protocol_number | string | Não | **[Optional]** Número exato do protocolo. |
| date_start | string (date) | Não | **[Optional]** Data inicial para filtrar movimentações (formato: YYYY-MM-DD). |
| date_end | string (date) | Não | **[Optional]** Data final para filtrar movimentações (formato: YYYY-MM-DD). |
### Respostas
#### 200 — Últimas movimentações encontradas com sucesso
##### Exemplo: allMovements — Todas as movimentações (sem filtro)
```json
{
"offset": 0,
"limit": 100,
"totalCount": 250,
"data": [
{
"lawsuit_id": 12345,
"date": "2025-02-15",
"title": "Audiência de conciliação realizada",
"header": "TJSP - Tribunal de Justiça de São Paulo",
"process_number": "0001234-56.2024.8.26.0100",
"protocol_number": null,
"customers": "João Silva, Maria Santos"
},
{
"lawsuit_id": 12346,
"date": "2025-02-14",
"title": "Sentença publicada",
"header": "TJRJ - Tribunal de Justiça do Rio de Janeiro",
"process_number": "0005678-90.2024.8.19.0001",
"protocol_number": "PROT-2024-001",
"customers": "Pedro Oliveira, Ana Costa"
}
]
}
```
##### Exemplo: byLawsuitId — Filtrar por ID do processo
```json
{
"offset": 0,
"limit": 100,
"totalCount": 8,
"data": [
{
"lawsuit_id": 12345,
"date": "2025-02-15",
"title": "Audiência de conciliação realizada",
"header": "TJSP - Tribunal de Justiça de São Paulo",
"process_number": "0001234-56.2024.8.26.0100",
"protocol_number": null,
"customers": "João Silva, Maria Santos"
}
]
}
```
##### Exemplo: byDateRange — Filtrar por intervalo de datas
```json
{
"offset": 0,
"limit": 100,
"totalCount": 15,
"data": [
{
"lawsuit_id": 12347,
"date": "2025-01-25",
"title": "Recurso interposto",
"header": "TJMG - Tribunal de Justiça de Minas Gerais",
"process_number": "0009876-54.2024.8.13.0024",
"protocol_number": "PROT-2025-042",
"customers": "Carlos Mendes, Empresa XYZ Ltda"
}
]
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha um processo pelo ID
URL: /docs/lawsuits/getLawsuitById
Retorna os dados completos de um processo específico baseado no seu ID único.
**Resposta inclui:**
* Dados básicos do processo (número CNJ, protocolo, pasta, data)
* Informações financeiras (honorários esperados, contingência)
* Tipo e grupo do processo
* Fase e etapa processual
* Usuário responsável
* Array de clientes associados
* Datas de criação e encerramentos
## GET /lawsuits/{id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha um processo pelo ID
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| id | integer | Sim | **[Required]** ID único do processo |
### Respostas
#### 200 — Processo encontrado com sucesso
##### Exemplo: encontrado — Processo encontrado
```json
{
"id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": "PROT-2026-001",
"folder": "PASTA CLIENTE A",
"process_date": "2026-01-15",
"fees_expec": 15000,
"fees_money": 8000,
"contingency": 3000,
"type_lawsuit_id": 1234567,
"type": "ACAO TRABALHISTA",
"group_id": 200001,
"group": "TRABALHISTA",
"created_at": "2026-01-15 10:30:00",
"status_closure": null,
"exit_production": null,
"exit_execution": null,
"responsible_id": 100001,
"responsible": "MARIA SILVA",
"stages_id": 300001,
"stage": "FASE INSTRUTORIA",
"steps_id": 3,
"step": "JUDICIAL",
"notes": "Processo referente a reclamacao trabalhista",
"customers": [
{
"customer_id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"origin": "ESCRITORIO"
},
{
"customer_id": 9000002,
"name": "EMPRESA XYZ LTDA",
"identification": "12.345.678/0001-90",
"origin": "PARTE CONTRARIA"
}
]
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 404 — Registro não encontrado
##### Exemplo
```json
{
"error": "Lawsuit not found"
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha uma lista de processos
URL: /docs/lawsuits/getLawsuits
Retorna uma lista de processos com opções avançadas de filtro e paginação.
**Como funcionam os filtros:**
* Múltiplos filtros são combinados com **AND** (interseção)
* Filtros de texto são **case-insensitive**
* Alguns campos aceitam **busca parcial** (name, group, type, responsible, stage, step, notes)
* Outros requerem **valor exato** (customer\_id, process\_number, protocol\_number, folder, identification)
* Filtros de data funcionam como **range** (use \_start e \_end juntos)
A resposta inclui `totalCount` (total de registros), `data` (array de processos) e informações de paginação (`limit` e `offset`).
## GET /lawsuits
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha uma lista de processos
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| name | string | Não | **[Optional]** Busca parcial no nome dos contatos associados ao processo. |
| customer_id | integer | Não | **[Optional]** ID exato do contato associado ao processo. |
| identification | string | Não | **[Optional]** CPF ou CNPJ do contato associado ao processo. Aceita formatação com pontos e traços. |
| process_number | string | Não | **[Optional]** Número exato do processo. |
| protocol_number | string | Não | **[Optional]** Número exato do protocolo do processo. |
| folder | string | Não | **[Optional]** Nome exato da pasta do processo. |
| notes | string | Não | **[Optional]** Busca parcial nas anotações ou comentários do processo. |
| group | string | Não | **[Optional]** Busca parcial no grupo do processo. Case-insensitive. |
| type | string | Não | **[Optional]** Busca parcial no tipo do processo. |
| responsible | string | Não | **[Optional]** Busca parcial no nome do responsável. |
| stage | string | Não | **[Optional]** Busca parcial no nome da fase processual ou ID numérico. |
| step | string | Não | **[Optional]** Busca parcial no nome do passo. |
| process_date_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data do processo (formato: AAAA-MM-DD). |
| process_date_end | string (date) | Não | **[Optional]** Data final para filtrar por data do processo (formato: AAAA-MM-DD). |
| status_closure_start | string (date) | Não | **[Optional]** Data de início da filtragem dos processos por data de fechamento (formato: AAAA-MM-DD). |
| status_closure_end | string (date) | Não | **[Optional]** Data final para filtrar processos por data de fechamento (formato: AAAA-MM-DD). |
| exit_production_start | string (date) | Não | **[Optional]** Data inicial para filtrar processos por data de trânsito em julgado (formato: AAAA-MM-DD). |
| exit_production_end | string (date) | Não | **[Optional]** Data final para filtrar processos por data de trânsito em julgado (formato: AAAA-MM-DD). |
| exit_execution_start | string (date) | Não | **[Optional]** Data inicial para filtrar processos por data de arquivamento (formato: AAAA-MM-DD). |
| exit_execution_end | string (date) | Não | **[Optional]** Data final para filtrar processos por data de arquivamento (formato: AAAA-MM-DD). |
| created_start | string (date) | Não | **[Optional]** Data inicial para filtrar processos por data de criação (formato: AAAA-MM-DD). |
| created_end | string (date) | Não | **[Optional]** Data final para filtrar processos por data de criação (formato: AAAA-MM-DD). |
| limit | integer | Não | **[Optional]** Número de registros a retornar por página (padrão: 1000, recomendado: até 100). |
| offset | integer | Não | **[Optional]** Número de registros a pular para paginação (padrão: 0). |
### Respostas
#### 200 — Lista de processos retornada com sucesso
##### Exemplo: sem_filtro — Lista sem filtro (primeiros resultados)
```json
{
"offset": 0,
"limit": 10,
"totalCount": 48,
"data": [
{
"id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null,
"folder": "PASTA CLIENTE A",
"process_date": "2026-01-15",
"fees_expec": 15000,
"fees_money": null,
"contingency": null,
"type_lawsuit_id": 1234567,
"type": "ACAO TRABALHISTA",
"group_id": 200001,
"group": "TRABALHISTA",
"created_at": "2026-01-15 10:30:00",
"status_closure": null,
"exit_production": null,
"exit_execution": null,
"responsible_id": 100001,
"responsible": "MARIA SILVA",
"stages_id": 300001,
"stage": "FASE INSTRUTORIA",
"steps_id": 3,
"step": "JUDICIAL",
"notes": null,
"customers": [
{
"customer_id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"origin": "ESCRITORIO"
}
]
},
{
"id": 1234502,
"process_number": null,
"protocol_number": null,
"folder": "PASTA CLIENTE B",
"process_date": "2026-01-15",
"fees_expec": null,
"fees_money": null,
"contingency": null,
"type_lawsuit_id": 1234567,
"type": "ACAO TRABALHISTA",
"group_id": 200001,
"group": "TRABALHISTA",
"created_at": "2026-01-15 10:30:00",
"status_closure": null,
"exit_production": null,
"exit_execution": null,
"responsible_id": 100001,
"responsible": "CARLOS SOUZA",
"stages_id": 300001,
"stage": "AGUARDANDO AUDIENCIA",
"steps_id": 3,
"step": "JUDICIAL",
"notes": null,
"customers": [
{
"customer_id": 9000002,
"name": "ANA COSTA",
"identification": null,
"origin": "INDICACAO"
}
]
}
],
"query": {}
}
```
##### Exemplo: com_filtro — Lista com filtro por responsavel
```json
{
"offset": 0,
"limit": 10,
"totalCount": 3,
"data": [
{
"id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null,
"folder": "PASTA CLIENTE A",
"process_date": "2026-01-15",
"fees_expec": 15000,
"fees_money": null,
"contingency": null,
"type_lawsuit_id": 1234567,
"type": "ACAO TRABALHISTA",
"group_id": 200001,
"group": "TRABALHISTA",
"created_at": "2026-01-15 10:30:00",
"status_closure": null,
"exit_production": null,
"exit_execution": null,
"responsible_id": 100001,
"responsible": "MARIA SILVA",
"stages_id": 300001,
"stage": "FASE INSTRUTORIA",
"steps_id": 3,
"step": "JUDICIAL",
"notes": null,
"customers": [
{
"customer_id": 9000001,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"origin": "ESCRITORIO"
}
]
}
],
"query": {
"responsible": "MARIA SILVA"
}
}
```
##### Exemplo: vazio — Nenhum processo encontrado
```json
{
"offset": 0,
"limit": 10,
"totalCount": 0,
"data": [],
"query": {
"responsible": "NOME INEXISTENTE"
}
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha as movimentações de um processo
URL: /docs/lawsuits/getMovementsByLawsuitId
Retorna lista de movimentações (andamentos processuais) associadas a um processo específico.
**Filtros disponíveis:**
* `origin` - Filtra por origem (TRIBUNAL ou MANUAL)
**Comportamento:**
* Sem filtro: retorna todas as movimentações
* Com `origin=TRIBUNAL`: apenas movimentações do tribunal
* Com `origin=MANUAL`: apenas movimentações criadas manualmente
**⚠️ Respostas especiais:**
* **204 No Content:** Retornado quando não há movimentações (ao invés de 404)
* ID inexistente ou inválido também retorna **204**
* Token inválido redireciona (302) para `/login`
## GET /movements/{lawsuit_id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha as movimentações de um processo
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| lawsuit_id | integer | Sim | **[Required]** ID único do processo |
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| origin | string | Não | **[Optional]** Filtrar por origem das movimentações (TRIBUNAL = do tribunal, MANUAL = criadas manualmente) |
### Respostas
#### 200 — Lista de movimentações retornada com sucesso
##### Exemplo: all_movements — Todas as movimentações (sem filtro)
```json
{
"data": [
{
"lawsuit_id": 1234567,
"date": "2025-01-17",
"title": "PETIÇÃO INTERMEDIÁRIA",
"header": "TJSP - Tribunal de Justiça",
"process_number": "0001234-56.2024.8.26.0100",
"protocol_number": null,
"customers": "MARIA SANTOS, JOÃO SILVA"
}
],
"query": []
}
```
##### Exemplo: tribunal_only — Apenas do tribunal
```json
{
"data": [
{
"lawsuit_id": 1234567,
"date": "2025-01-17",
"title": "CONCLUSOS PARA DESPACHO",
"header": "TJSP - Tribunal de Justiça",
"process_number": "0001234-56.2024.8.26.0100",
"protocol_number": null,
"customers": "MARIA SANTOS, JOÃO SILVA"
}
],
"query": {
"origin": "TRIBUNAL"
}
}
```
#### 204 — Sem movimentações (No Content) - retornado quando não há dados ou ID inexistente
_Sem corpo de resposta._
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Atualize um processo existente
URL: /docs/lawsuits/updateLawsuit
Atualiza dados de um processo específico no sistema.
**⚠️ Importante:** Envie apenas os campos que deseja atualizar. Campos não incluídos no request permanecerão inalterados.
**Campos atualizáveis:**
* `users_id` - Responsável pelo processo (deve existir na conta)
* `stages_id` - Fase processual (deve existir na conta; atualiza `step` automaticamente)
* `type_lawsuits_id` - Tipo de processo (deve existir na conta; atualiza `group` automaticamente)
* `process_number` - Número CNJ (validado; envie string vazia para limpar)
* `protocol_number` - Número de protocolo
* `folder` - Nome da pasta (máximo 30 caracteres)
* `date` - Data do processo (formato YYYY-MM-DD)
* `notes` - Observações do processo
* `fees_expec` - Valor esperado de honorários (inteiro, em reais)
* `fees_money` - Valor de honorários em dinheiro (inteiro, em reais)
* `contingency` - Valor de contingência (inteiro, em reais)
* `status_closure` - Data de fechamento (YYYY-MM-DD; envie string vazia para limpar)
* `exit_production` - Data do trânsito em julgado (YYYY-MM-DD; envie string vazia para limpar)
* `exit_execution` - Data do arquivamento (YYYY-MM-DD; envie string vazia para limpar)
**Validações aplicadas:**
* `process_number`: Valida formato CNJ contra bases do Judiciário
* `folder`: Máximo 30 caracteres
* `date`, `status_closure`, `exit_production`, `exit_execution`: Formato YYYY-MM-DD obrigatório
* `stages_id` e `type_lawsuits_id`: Devem pertencer à sua conta
## PUT /lawsuits/{id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Atualize um processo existente
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| id | integer | Sim | **[Required]** ID único do processo a ser atualizado |
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
| Campo | Tipo | Descrição |
|-------|------|----------|
| users_id | string | **[Optional]** ID do usuário responsável pelo processo (deve existir na conta) |
| stages_id | string | **[Optional]** ID da fase processual (deve existir na conta; atualiza `step` automaticamente) |
| type_lawsuits_id | string | **[Optional]** ID do tipo de processo (deve existir na conta; atualiza `group` automaticamente) |
| process_number | string | **[Optional]** Número do processo CNJ (validado contra bases oficiais). Envie string vazia (`""`) para limpar. |
| protocol_number | string | **[Optional]** Número de protocolo do processo |
| folder | string | **[Optional]** Nome da pasta (máximo 30 caracteres) |
| date | string (date) | **[Optional]** Data do processo no formato YYYY-MM-DD |
| notes | string | **[Optional]** Observações detalhadas sobre o processo |
| fees_expec | integer | **[Optional]** Valor esperado de honorários (em reais, inteiro) |
| fees_money | integer | **[Optional]** Valor de honorários em dinheiro (em reais, inteiro) |
| contingency | integer | **[Optional]** Valor de contingência do processo (em reais, inteiro) |
| status_closure | string (date) | **[Optional]** Data de fechamento no formato YYYY-MM-DD. Envie string vazia (`""`) para limpar. |
| exit_production | string (date) | **[Optional]** Data do trânsito em julgado no formato YYYY-MM-DD. Envie string vazia (`""`) para limpar. |
| exit_execution | string (date) | **[Optional]** Data do arquivamento no formato YYYY-MM-DD. Envie string vazia (`""`) para limpar. |
#### Exemplo: minimo — Atualização mínima (um campo)
```json
{
"folder": "PASTA CLIENTE A"
}
```
#### Exemplo: completo — Atualização completa (todos os campos)
```json
{
"users_id": "100001",
"stages_id": "300001",
"type_lawsuits_id": "1234567",
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": "PROT-2026-001",
"folder": "PASTA CLIENTE A",
"date": "2026-04-02",
"notes": "Processo atualizado com todos os campos",
"fees_expec": 15000,
"fees_money": 8000,
"contingency": 3000,
"status_closure": "2026-04-02",
"exit_production": "2026-03-01",
"exit_execution": "2026-03-15"
}
```
#### Exemplo: limpar_datas — Limpar campos de data
```json
{
"status_closure": "",
"exit_production": "",
"exit_execution": ""
}
```
### Respostas
#### 200 — Processo atualizado com sucesso
##### Exemplo
```json
{
"success": true,
"lawsuits_id": "1234567"
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: id_nao_encontrado — ID não encontrado ou sem permissão
```json
{
"message": "The given data was invalid.",
"errors": {
"auth": [
"You dont have permission to edit this lawsuit."
]
}
}
```
##### Exemplo: stages_id_invalido — Fase processual não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"stages_id": [
"The stage do not belong to your account"
]
}
}
```
##### Exemplo: users_id_invalido — Usuário não pertence ao escritório
```json
{
"message": "The given data was invalid.",
"errors": {
"users_id": [
"You must enter a user associated with your office"
]
}
}
```
##### Exemplo: type_lawsuits_id_invalido — Tipo de processo não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"type_lawsuits_id": [
"The type lawsuit do not belong to your account"
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha publicações de um processo
URL: /docs/publications/getPublicationsByLawsuitId
Retorna lista de publicações associadas a um processo específico.
Cada publicação inclui informações como título, conteúdo, data de publicação e fonte.
## GET /publications/{lawsuit_id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha publicações de um processo
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| lawsuit_id | integer | Sim | **[Required]** ID do processo para buscar publicações. |
### Respostas
#### 200 — Lista de publicações do processo encontrada com sucesso
##### Exemplo: with_publications — Processo com publicações
```json
{
"data": [
{
"process_number": "1234567-89.2024.8.00.0000",
"protocol_number": null,
"start": "2025-01-15 00:00:00",
"date_deadline": null,
"local": null,
"created_at": "2025-01-14 10:30:00",
"author": "João Silva",
"responsible": "Maria Santos",
"customers": "Cliente A, Cliente B",
"publication": "Intimação para apresentação de documentos",
"date": "2025-01-15"
}
]
}
```
##### Exemplo: empty — Processo sem publicações
```json
{
"data": []
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 404 — Registro não encontrado
##### Exemplo
```json
{
"error": "Not found"
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Criar nova tarefa
URL: /docs/tasks/createPost
Cria uma nova tarefa no sistema associada a um processo e usuários responsáveis.
**Campos Obrigatórios:**
* `from`: ID do usuário criador (deve pertencer ao escritório)
* `guests`: Array com IDs dos responsáveis (mínimo 1, devem pertencer ao escritório)
* `tasks_id`: ID do tipo de tarefa
* `lawsuits_id`: ID do processo
* `start_date`: Data de início (aceita YYYY-MM-DD ou DD/MM/YYYY)
**Validações:**
* API valida se usuários pertencem ao escritório autenticado
* API detecta e impede tarefas duplicadas
* Array `guests` não pode ser vazio (mínimo 1 usuário)
* Guests podem incluir o próprio criador
**Horário de término:**
* `end_date` pode ser enviado sozinho
* `end_time` **requer `end_date` junto** — sem ele o horário de término é ignorado
**Retorno:**
Em caso de sucesso, retorna status 200 com ID da tarefa criada.
## POST /posts
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Criar nova tarefa
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
**Campos obrigatórios:** from, guests, tasks_id, lawsuits_id, start_date
| Campo | Tipo | Descrição |
|-------|------|----------|
| from | string | **[Required]** ID do usuário criador da tarefa. Deve pertencer ao escritório autenticado. |
| guests | array | **[Required]** Array com IDs dos usuários responsáveis pela tarefa. Mínimo 1 usuário. Todos devem pertencer ao escritório autenticado. |
| tasks_id | string | **[Required]** ID do tipo de tarefa. |
| lawsuits_id | string | **[Required]** ID do processo ao qual a tarefa está associada. |
| start_date | string | **[Required]** Data de início da tarefa. Aceita formatos YYYY-MM-DD ou DD/MM/YYYY. |
| start_time | string | **[Optional]** Hora de início da tarefa (formato HH:MM). |
| end_date | string | **[Optional]** Data de término da tarefa. Aceita formatos YYYY-MM-DD ou DD/MM/YYYY. |
| end_time | string | **[Optional]** Hora de término da tarefa (formato HH:MM). ⚠️ **Requer `end_date` junto** — sem ele o horário de término é ignorado. |
| date_deadline | string | **[Optional]** Data de prazo da tarefa. Aceita formatos YYYY-MM-DD ou DD/MM/YYYY. |
| local | string | **[Optional]** Local onde a tarefa será realizada. |
| comments | string | **[Optional]** Observações ou descrição detalhada da tarefa. |
| urgent | boolean | **[Optional]** Flag indicando se a tarefa é urgente. |
| important | boolean | **[Optional]** Flag indicando se a tarefa é importante. |
| display_schedule | boolean | **[Optional]** Flag indicando se a tarefa deve ser exibida na agenda. |
#### Exemplo: minimo — Criação mínima (campos obrigatórios)
```json
{
"from": "12345",
"guests": [
12345,
67890
],
"tasks_id": "100",
"lawsuits_id": "5000",
"start_date": "2026-04-02"
}
```
#### Exemplo: completo — Criação completa (todos os campos)
```json
{
"from": "12345",
"guests": [
12345,
67890
],
"tasks_id": "100",
"lawsuits_id": "5000",
"start_date": "2026-04-02",
"start_time": "14:30",
"end_date": "2026-04-02",
"end_time": "16:00",
"date_deadline": "2026-04-09",
"local": "Sala de reuniões - 3º andar",
"comments": "Reunião de acompanhamento do processo",
"urgent": true,
"important": true,
"display_schedule": true
}
```
### Respostas
#### 200 — Tarefa criada com sucesso
##### Exemplo
```json
{
"success": true,
"posts_id": 180922743
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: campos_obrigatorios — Campos obrigatórios ausentes
```json
{
"message": "The given data was invalid.",
"errors": {
"lawsuits_id": [
"The process is required"
],
"start_date": [
"The appointment date field is required"
],
"from": [
"The sender user is required"
],
"tasks_id": [
"The task field is required"
],
"guests": [
"Please provide the task assignees"
]
}
}
```
##### Exemplo: lawsuits_id_invalido — Processo não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"lawsuits_id": [
"The process is invalid"
]
}
}
```
##### Exemplo: tasks_id_invalido — Tarefa não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"tasks_id": [
"The task field is invalid"
]
}
}
```
##### Exemplo: guests_invalido — Responsável não pertence ao escritório
```json
{
"message": "The given data was invalid.",
"errors": {
"guests": [
"You must enter an assignees associated with your office"
]
}
}
```
##### Exemplo: tarefa_duplicada — Tarefa duplicada (mesmo tipo + processo + data)
```json
{
"message": "The given data was invalid.",
"errors": {
"duplicate": [
"Task with this data already exists."
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
#### 500 — Erro interno — geralmente causado por tipo de dado incorreto (ex: guests enviado como inteiro em vez de array)
##### Exemplo
```json
{
"message": "Server Error"
}
```
# Obtenha uma lista de tarefas com filtros opcionais
URL: /docs/tasks/getPosts
Retorna lista de tarefas do escritório com múltiplos filtros opcionais.
**📋 Comportamento do filtro de status:**
* **Sem filtros:** retorna todas as tarefas (pendentes e concluídas)
* **Com `user_name` ou `user_id`:** retorna APENAS tarefas onde aquele usuário específico está pendente
* **Com `lawsuit_id`:** retorna APENAS tarefas pendentes do processo
* **Com `completed_start/completed_end`:** retorna APENAS tarefas concluídas no período
**Nota:** Tarefas podem ter múltiplos usuários com status diferentes. O filtro por usuário considera o status individual daquele usuário na tarefa.
**⚠️ IMPORTANTE - Filtros de Data:**
* **Cada par de datas deve ser usado completo** (start + end juntos)
* Usar apenas 1 parâmetro do par (ex: só `date_start` sem `date_end`) faz a API **IGNORAR** o filtro
* Pares disponíveis: `date_start/date_end`, `created_start/created_end`, `deadline_start/deadline_end`, `completed_start/completed_end`
* Você pode usar **um ou mais pares** ao mesmo tempo
**Como funcionam os filtros:**
* Múltiplos filtros são combinados com **AND** (interseção)
* Todos os parâmetros são **opcionais**
* `user_name`: busca **parcial** (LIKE)
* `user_id`, `id`, `task_id`, `lawsuit_id`: busca **exata**
**Paginação:**
* Default: limit=1000, offset=0
* Limit recomendado: entre 1 e 100
**Estrutura da resposta:**
* Cada tarefa inclui objeto `lawsuit` com dados do processo
* Cada tarefa inclui array `users` com responsáveis
## GET /posts
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha uma lista de tarefas com filtros opcionais
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| date_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data da tarefa (formato: YYYY-MM-DD). **Deve ser usado com date_end**. |
| date_end | string (date) | Não | **[Optional]** Data final para filtrar por data da tarefa (formato: YYYY-MM-DD). **Deve ser usado com date_start**. |
| created_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data de criação (formato: YYYY-MM-DD). **Deve ser usado com created_end**. |
| created_end | string (date) | Não | **[Optional]** Data final para filtrar por data de criação (formato: YYYY-MM-DD). **Deve ser usado com created_start**. |
| deadline_start | string (date) | Não | **[Optional]** Data inicial para filtrar por prazo (formato: YYYY-MM-DD). **Deve ser usado com deadline_end**. |
| deadline_end | string (date) | Não | **[Optional]** Data final para filtrar por prazo (formato: YYYY-MM-DD). **Deve ser usado com deadline_start**. |
| completed_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data de conclusão (formato: YYYY-MM-DD). **Deve ser usado com completed_end**. |
| completed_end | string (date) | Não | **[Optional]** Data final para filtrar por data de conclusão (formato: YYYY-MM-DD). **Deve ser usado com completed_start**. |
| user_id | string | Não | **[Optional]** ID exato do usuário responsável. |
| user_name | string | Não | **[Optional]** Nome do usuário responsável (busca parcial case-insensitive). |
| task_id | string | Não | **[Optional]** ID exato do tipo de tarefa. |
| id | integer | Não | **[Optional]** ID exato de uma tarefa específica. |
| lawsuit_id | string | Não | **[Optional]** ID exato do processo associado. |
| limit | integer | Não | **[Optional]** Número de itens por página (recomendado: 1-100). |
| offset | integer | Não | **[Optional]** Número de itens a pular antes de iniciar a resposta (paginação). |
### Respostas
#### 200 — Lista de tarefas retornada com sucesso
##### Exemplo: allTasks — Todas as tarefas (sem filtro)
```json
{
"offset": 0,
"limit": 100,
"totalCount": 532,
"data": [
{
"id": 123456789,
"date": "2025-05-12 00:00:00",
"date_deadline": null,
"task": "AUDIÊNCIA PRELIMINAR",
"reward": 0,
"notes": "Comparecer à audiência preliminar do processo. Levar documentos de identificação do cliente e procuração.",
"local": null,
"lawsuits_id": 1234567,
"created_at": "2025-05-12 15:47:45",
"lawsuit": {
"id": 1234567,
"process_number": "0001234-56.2025.8.26.0100",
"protocol_number": null,
"customers": [
{
"customer_id": 1234567,
"name": "João Silva",
"identification": null,
"customers_origins_id": null
}
]
},
"users": [
{
"user_id": 163,
"name": "Maria Oliveira",
"completed": null,
"important": 1,
"urgent": 0
}
]
}
]
}
```
##### Exemplo: byDateRange — Filtrar por data de criação
```json
{
"offset": 0,
"limit": 100,
"totalCount": 11,
"data": [
{
"id": 234567890,
"date": "2025-10-07 00:00:00",
"date_deadline": null,
"task": "CONTESTAÇÃO COMPLEXA",
"reward": 150,
"notes": "Preparar contestação detalhada",
"local": null,
"lawsuits_id": 23456789,
"created_at": "2025-10-07 12:10:27",
"lawsuit": {
"id": 23456789,
"process_number": "0009876-54.2025.8.13.0024",
"protocol_number": "123456789",
"customers": [
{
"customer_id": 23456789,
"name": "Carlos Mendes",
"identification": null,
"customers_origins_id": 456789
}
]
},
"users": [
{
"user_id": 123456,
"name": "Pedro Santos",
"completed": null,
"important": 0,
"urgent": 0
}
]
}
]
}
```
##### Exemplo: byUserAndCompleted — Filtrar por usuário e tarefas concluídas
```json
{
"offset": 0,
"limit": 100,
"totalCount": 5,
"data": [
{
"id": 345678901,
"date": "2025-04-27 00:00:00",
"date_deadline": null,
"task": "SOLICITAR DOCUMENTOS",
"reward": 10,
"notes": null,
"local": null,
"lawsuits_id": 34567890,
"created_at": "2025-04-22 09:36:31",
"lawsuit": {
"id": 34567890,
"process_number": null,
"protocol_number": null,
"customers": [
{
"customer_id": 34567890,
"name": "Ana Costa",
"identification": null,
"customers_origins_id": 567890
}
]
},
"users": [
{
"user_id": 234567,
"name": "Roberto Lima",
"completed": "2025-12-18 17:27:50",
"important": 0,
"urgent": 0
}
]
}
]
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Crie uma nova transação financeira
URL: /docs/transactions/createTransaction
Cria uma transação financeira (receita ou despesa) no sistema.
**Campos obrigatórios:**
* `users_id` - ID do usuário responsável (obtenha em GET `/api/v1/settings` → `users[]`)
* `entry_type` - Tipo da transação: `income` (receita) ou `expense` (despesa)
* `debit_account` - ID da conta bancária (obtenha em GET `/api/v1/settings` → `financial.banks[]`)
* `categories_id` - ID da categoria financeira (obtenha em GET `/api/v1/settings` → `financial.categories[]`)
* `cost_centers_id` - ID do centro de custo (obtenha em GET `/api/v1/settings` → `financial.cost_centers[]`)
* `amount` - Valor da transação em reais
* `date_due` - Data de vencimento (YYYY-MM-DD)
**Validações importantes:**
* `entry_type` DEVE corresponder ao tipo da categoria:
* `entry_type="income"` aceita APENAS categorias com `type="CRÉDITO"`
* `entry_type="expense"` aceita APENAS categorias com `type="DÉBITO"`
* Todos os IDs são validados se pertencem ao escritório autenticado
* `lawsuits_id` REQUER `customers_id` junto — sem ele retorna erro 422
* `date_payment` não pode ser futura (deve ser hoje ou passada)
* `amount` deve ser maior que zero — `amount: 0` causa erro 500 na API
* Execute GET `/api/v1/settings` primeiro para obter os IDs válidos
**Transformações automáticas:**
* Campo `description` é convertido para MAIÚSCULAS
* IDs são resolvidos para nomes no GET (users\_id→responsible, categories\_id→category)
**Rate Limit:** 500 requisições por dia
## POST /transactions
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Crie uma nova transação financeira
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
**Campos obrigatórios:** users_id, entry_type, debit_account, categories_id, cost_centers_id, amount, date_due
| Campo | Tipo | Descrição |
|-------|------|----------|
| users_id | integer | **[Required]** ID do usuário responsável. Obtido via GET `/api/v1/settings` → `users[]` |
| entry_type | string | **[Required]** Tipo da transação: `income` (receita) ou `expense` (despesa). ⚠️ Deve corresponder ao tipo da categoria: income requer categorias tipo CRÉDITO, expense requer categorias tipo DÉBITO. |
| debit_account | integer | **[Required]** ID da conta de débito. Obtido via GET `/api/v1/settings` → `financial.banks[]` |
| categories_id | integer | **[Required]** ID da categoria. ⚠️ O tipo da categoria (CRÉDITO/DÉBITO) DEVE corresponder ao entry_type. Obtido via GET `/api/v1/settings` → `financial.categories[]` |
| cost_centers_id | integer | **[Required]** ID do centro de custo. Obtido via GET `/api/v1/settings` → `financial.cost_centers[]` |
| amount | — | **[Required]** Valor da transação em reais (ex: 1234.90 ou "1.234,90"). Aceita `number` ou `string` nos formatos brasileiro (vírgula) ou internacional (ponto) |
| date_due | string (date) | **[Required]** Data de vencimento no formato YYYY-MM-DD |
| customers_id | integer | **[Optional]** ID do cliente. Quando fornecido, popula os campos `name` e `identification` no GET |
| lawsuits_id | integer | **[Optional]** ID do processo. Popula o campo `lawsuit_id` no GET. ⚠️ **Requer `customers_id` junto** — enviar sem `customers_id` retorna erro 422 |
| sectors_id | integer | **[Optional]** ID do setor. Deve pertencer ao escritório autenticado, caso contrário retorna erro 422 |
| description | string | **[Optional]** Descrição da transação. Será convertida automaticamente para MAIÚSCULAS |
| date_payment | string (date) | **[Optional]** Data de pagamento no formato YYYY-MM-DD. ⚠️ Não pode ser futura (deve ser hoje ou passada) |
#### Exemplo: receita_simples — Receita (income) - Apenas campos obrigatórios
```json
{
"users_id": 12345,
"entry_type": "income",
"debit_account": 1001,
"categories_id": 100,
"cost_centers_id": 500,
"amount": 1500,
"date_due": "2026-03-15"
}
```
#### Exemplo: despesa_simples — Despesa (expense) - Apenas campos obrigatórios
```json
{
"users_id": 12345,
"entry_type": "expense",
"debit_account": 1001,
"categories_id": 200,
"cost_centers_id": 500,
"amount": 250.5,
"date_due": "2026-03-10"
}
```
#### Exemplo: receita_completa — Receita (income) - Todos os campos
```json
{
"users_id": 12345,
"entry_type": "income",
"debit_account": 1001,
"categories_id": 100,
"cost_centers_id": 500,
"amount": 5000,
"date_due": "2026-03-20",
"customers_id": 67890,
"lawsuits_id": 54321,
"description": "Honorários advocatícios - Processo ABC",
"date_payment": "2026-02-10",
"competence": "02/2026"
}
```
#### Exemplo: despesa_completa — Despesa (expense) - Todos os campos
```json
{
"users_id": 12345,
"entry_type": "expense",
"debit_account": 1001,
"categories_id": 200,
"cost_centers_id": 500,
"amount": 350,
"date_due": "2026-03-05",
"description": "Conta de água - Escritório",
"date_payment": "2026-02-10",
"competence": "02/2026"
}
```
### Respostas
#### 200 — Transação criada com sucesso
##### Exemplo
```json
{
"success": true,
"transactions_id": 12948208
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: campos_obrigatorios — Campos obrigatórios ausentes
```json
{
"message": "The given data was invalid.",
"errors": {
"entry_type": [
"Select the transaction type: credit or debit"
],
"users_id": [
"The responsible user is required"
],
"date_due": [
"The date due field is required"
],
"categories_id": [
"The category field is required"
],
"amount": [
"The amount field is required"
],
"debit_account": [
"The bank account field is required"
],
"cost_centers_id": [
"The cost center field is required"
]
}
}
```
##### Exemplo: categories_id_invalido — Categoria não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"categories_id": [
"The category field is invalid"
]
}
}
```
##### Exemplo: debit_account_invalido — Conta bancária não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"debit_account": [
"The bank account is invalid"
]
}
}
```
##### Exemplo: cost_centers_id_invalido — Centro de custo não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"cost_centers_id": [
"validation.special_exists"
]
}
}
```
##### Exemplo: users_id_invalido — Usuário não pertence ao escritório
```json
{
"message": "The given data was invalid.",
"errors": {
"users_id": [
"You must enter a user associated with your office"
]
}
}
```
##### Exemplo: date_due_invalida — Formato de data inválido (esperado: YYYY-MM-DD)
```json
{
"message": "The given data was invalid.",
"errors": {
"date_due": [
"The date due is invalid"
],
"competence": [
"validation.date_format"
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha uma transação pelo ID
URL: /docs/transactions/getTransactionById
Retorna os dados completos de uma transação financeira específica baseado no seu ID único.
**Resposta inclui:**
* Dados financeiros (valor, tipo, categoria)
* Conta de débito e banco
* Centro de custo e departamento
* Datas de vencimento, pagamento e criação
* Vínculos com processo, cliente e departamento (quando houver)
## GET /transactions/{id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha uma transação pelo ID
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| id | integer | Sim | **[Required]** ID único da transação |
### Respostas
#### 200 — Transação encontrada com sucesso
##### Exemplo: encontrado — Transacao encontrada
```json
{
"id": 5000001,
"users_id": 100001,
"debit_account": 135001,
"bank": "CONTA PRINCIPAL",
"categories_id": 1,
"category": "HONORARIOS INICIAIS",
"entry_type": "income",
"cost_centers_id": 41001,
"cost_center": "GERAL",
"customers_id": 9000001,
"lawsuits_id": 1234501,
"departments_id": null,
"department": null,
"description": "HONORARIOS CONTRATUAIS",
"amount": 5000,
"date_due": "2026-04-30",
"date_payment": null,
"created_at": "2026-04-02 10:30:00"
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 404 — Registro não encontrado
##### Exemplo
```json
{
"error": "Transaction not found"
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha uma lista de transações financeiras
URL: /docs/transactions/getTransactions
Retorna lista de transações financeiras com diversos filtros opcionais incluindo informações de processos, clientes, datas e dados financeiros.
**Como funcionam os filtros:**
* Múltiplos filtros são combinados com **AND** (interseção)
* Filtros de texto como `responsible`, `customer_name`, `debit_bank`, `description`, `category` e `cost_center` são **busca parcial** (case-insensitive)
* Filtros como `lawsuit_id`, `process_number` são **busca exata**
* Filtros de data funcionam como **range** (use \_start e \_end juntos)
* `competence_start/end` usa formato **MM/YYYY** (ex: 03/2026), diferente dos demais filtros de data
A resposta inclui `totalCount`, `limit`, `offset` e array `data` com as transações.
## GET /transactions
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha uma lista de transações financeiras
### Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| lawsuit_id | integer | Não | **[Optional]** ID exato do processo associado à transação. |
| category | string | Não | **[Optional]** Busca parcial na categoria da transação. Case-insensitive. Exemplos: ALUGUEL, HONORÁRIOS, ENERGIA. |
| responsible | string | Não | **[Optional]** Busca parcial no nome do responsável. Case-insensitive. |
| customer_name | string | Não | **[Optional]** Busca parcial no nome do cliente. Case-insensitive. |
| debit_bank | string | Não | **[Optional]** Busca parcial no banco de débito. Case-insensitive. |
| cost_center | string | Não | **[Optional]** Busca parcial no centro de custo. Case-insensitive. |
| description | string | Não | **[Optional]** Busca parcial na descrição da transação. Case-insensitive. |
| process_number | string | Não | **[Optional]** Número exato do processo associado à transação (ex: 5003807-92.2020.8.24.0067). Busca exata - não aceita busca parcial. |
| protocol_number | string | Não | **[Optional]** Número do protocolo associado à transação. |
| customer_identification | string | Não | **[Optional]** CPF ou CNPJ do cliente. **IMPORTANTE:** Validação obrigatória - deve ser CPF/CNPJ válido, caso contrário retorna erro `Invalid identification.` |
| created_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data de criação (formato: YYYY-MM-DD). **Deve ser usado junto com `created_end`.** |
| created_end | string (date) | Não | **[Optional]** Data final para filtrar por data de criação (formato: YYYY-MM-DD). **Deve ser usado junto com `created_start`.** |
| date_due_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data de vencimento (formato: YYYY-MM-DD). **Deve ser usado junto com `date_due_end`.** |
| date_due_end | string (date) | Não | **[Optional]** Data final para filtrar por data de vencimento (formato: YYYY-MM-DD). **Deve ser usado junto com `date_due_start`.** |
| date_payment_start | string (date) | Não | **[Optional]** Data inicial para filtrar por data de pagamento (formato: YYYY-MM-DD). **Deve ser usado junto com `date_payment_end`.** |
| date_payment_end | string (date) | Não | **[Optional]** Data final para filtrar por data de pagamento (formato: YYYY-MM-DD). **Deve ser usado junto com `date_payment_start`.** |
| competence_start | string | Não | **[Optional]** Competência inicial para filtrar (formato: MM/YYYY, ex: 03/2026). **Deve ser usado junto com `competence_end`.** |
| competence_end | string | Não | **[Optional]** Competência final para filtrar (formato: MM/YYYY, ex: 03/2026). **Deve ser usado junto com `competence_start`.** |
### Respostas
#### 200 — Lista de transações financeiras retornada com sucesso
##### Exemplo: sem_filtro — Lista sem filtro (primeiros resultados)
```json
{
"offset": 0,
"limit": 1000,
"totalCount": 42,
"data": [
{
"id": 5000001,
"entry_type": "income",
"date_due": "2026-04-30",
"date_payment": null,
"competence": "04/2026",
"amount": 5000,
"description": "HONORARIOS CONTRATUAIS",
"responsible": "MARIA SILVA",
"category": "HONORARIOS INICIAIS",
"lawsuit_id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"debit_bank": "CONTA PRINCIPAL",
"credit_bank": null,
"cost_center": "GERAL"
},
{
"id": 5000002,
"entry_type": "expense",
"date_due": "2026-04-15",
"date_payment": "2026-04-15",
"competence": "04/2026",
"amount": 350,
"description": null,
"responsible": "CARLOS SOUZA",
"category": "CUSTAS PROCESSUAIS",
"lawsuit_id": null,
"process_number": null,
"protocol_number": null,
"name": null,
"identification": null,
"debit_bank": "CONTA PRINCIPAL",
"credit_bank": null,
"cost_center": "GERAL"
}
]
}
```
##### Exemplo: com_filtro — Lista com filtro por categoria
```json
{
"offset": 0,
"limit": 1000,
"totalCount": 12,
"data": [
{
"id": 5000001,
"entry_type": "income",
"date_due": "2026-04-30",
"date_payment": null,
"competence": "04/2026",
"amount": 5000,
"description": "HONORARIOS CONTRATUAIS",
"responsible": "MARIA SILVA",
"category": "HONORARIOS INICIAIS",
"lawsuit_id": 1234501,
"process_number": "0001234-56.2026.5.15.0001",
"protocol_number": null,
"name": "JOAO PEREIRA",
"identification": "111.222.333-44",
"debit_bank": "CONTA PRINCIPAL",
"credit_bank": null,
"cost_center": "GERAL"
}
]
}
```
##### Exemplo: vazio — Nenhuma transacao encontrada
```json
{
"offset": 0,
"limit": 1000,
"totalCount": 0,
"data": []
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Atualize uma transação financeira existente
URL: /docs/transactions/updateTransaction
Atualiza campos de uma transação financeira (receita ou despesa) existente no sistema.
**Campos alteráveis (7 confirmados):**
* `entry_type` - Tipo da transação (income/expense)
* `categories_id` - Categoria financeira
* `amount` - Valor da transação
* `date_due` - Data de vencimento
* `date_payment` - Data de pagamento (marcar como paga/em aberto)
* `description` - Descrição
* `competence` - Competência (MM/YYYY)
**Validações importantes:**
* Para alterar `categories_id`, é **OBRIGATÓRIO** enviar `entry_type` junto (validação de tipo ativa)
* Validação de tipo continua: `entry_type="income"` aceita APENAS categorias `type="CRÉDITO"`
* Validação de tipo continua: `entry_type="expense"` aceita APENAS categorias `type="DÉBITO"`
* Pode alterar múltiplos campos simultaneamente
* Para marcar como **paga**: envie `"date_payment": "2026-02-10"`
* Para marcar como **em aberto**: envie `"date_payment": null`
**Resposta:**
* Sempre retorna `{"success":true,"lawsuits_id":"ID"}` (não `transactions_id`)
**Rate Limit:** 500 requisições por dia
## PUT /transactions/{id}
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Atualize uma transação financeira existente
### Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|-------------|----------|
| id | integer | Sim | ID da transação a ser atualizada |
### Corpo da Requisição (application/json)
*Corpo obrigatório.*
| Campo | Tipo | Descrição |
|-------|------|----------|
| entry_type | string | **[Optional]** Tipo da transação: `income` (receita) ou `expense` (despesa). ⚠️ **OBRIGATÓRIO ao alterar `categories_id`** (validação de tipo) |
| categories_id | integer | **[Optional]** ID da categoria financeira. ⚠️ **Deve enviar `entry_type` junto** (validação de tipo). Obtido via GET `/api/v1/settings` → `financial.categories[]` |
| amount | — | **[Optional]** Valor da transação em reais (ex: 500.00 ou "1.234,90"). Aceita `number` ou `string` |
| date_due | string (date) | **[Optional]** Data de vencimento no formato YYYY-MM-DD |
| date_payment | — | **[Optional]** Data de pagamento no formato YYYY-MM-DD. Use `null` para marcar como em aberto, ou uma data para marcar como paga |
| description | string | **[Optional]** Descrição da transação. Será convertida automaticamente para MAIÚSCULAS |
| competence | string | **[Optional]** Competência no formato MM/YYYY (ex: 05/2026) |
#### Exemplo: corrigir_valor — Corrigir valor de uma transação
```json
{
"amount": 2500
}
```
#### Exemplo: mudar_vencimento — Mudar data de vencimento
```json
{
"date_due": "2026-06-30"
}
```
#### Exemplo: marcar_como_paga — Marcar transação como paga
```json
{
"date_payment": "2026-02-11"
}
```
#### Exemplo: marcar_em_aberto — Marcar transação como em aberto
```json
{
"date_payment": null
}
```
#### Exemplo: mudar_tipo — Alterar tipo da transação (despesa → receita)
```json
{
"entry_type": "income",
"categories_id": 105
}
```
#### Exemplo: multiplas_alteracoes — Atualizar múltiplos campos simultaneamente
```json
{
"amount": 850,
"date_due": "2026-07-20",
"date_payment": "2026-02-11",
"description": "Pagamento de fornecedor XYZ",
"competence": "07/2026"
}
```
### Respostas
#### 200 — Transação atualizada com sucesso
##### Exemplo
```json
{
"success": true,
"lawsuits_id": "98765432"
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 404 — Registro não encontrado
##### Exemplo
```json
{
"error": "Transaction not found"
}
```
#### 422 — Dados inválidos — um ou mais campos falharam na validação
##### Exemplo: entry_type_obrigatorio — entry_type obrigatório ao atualizar
```json
{
"message": "The given data was invalid.",
"errors": {
"entry_type": [
"Select the transaction type: credit or debit"
]
}
}
```
##### Exemplo: date_due_invalida — Formato de data inválido
```json
{
"message": "The given data was invalid.",
"errors": {
"date_due": [
"The date due is invalid"
]
}
}
```
##### Exemplo: categories_id_invalido — Categoria inválida ou não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"categories_id": [
"The category field is invalid"
]
}
}
```
##### Exemplo: debit_account_invalido — Conta bancária não pertence à conta
```json
{
"message": "The given data was invalid.",
"errors": {
"debit_account": [
"The bank account is invalid"
]
}
}
```
##### Exemplo: competence_invalido — Formato de competência inválido (esperado: MM/YYYY)
```json
{
"message": "The given data was invalid.",
"errors": {
"competence": [
"validation.date_format"
]
}
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```
# Obtenha configurações da conta
URL: /docs/settings/getSettings
Retorna configurações e metadados da conta autenticada: usuários, origens de leads, tipos de tarefas, fases processuais, tipos de processos e dados financeiros.
**Este endpoint fornece os IDs de referência necessários para criar/atualizar registros em outros endpoints.**
Campos retornados: [#campos-retornados]
* **`users`** - Usuários do escritório (use `id` em: Customers, Lawsuits, Tasks, Transactions)
* **`origins`** - Origens de leads (use `id` como `customers_origins_id` em: Customers)
* **`tasks`** - Tipos de tarefas disponíveis (use `id` como `tasks_id` em: Tasks/Posts)
* **`stages`** - Fases processuais (use `id` como `stages_id` em: Lawsuits)
* **`type_lawsuits`** - Tipos de processos por área do direito (use `id` como `type_lawsuits_id` em: Lawsuits)
* **`financial`** - Dados financeiros:
* **`banks`** - Contas bancárias (use `id` como `debit_account` em: Transactions)
* **`categories`** - Categorias financeiras com tipo CRÉDITO/DÉBITO (use `id` como `categories_id` em: Transactions)
* **`cost_centers`** - Centros de custo (use `id` como `cost_centers_id` em: Transactions)
* **`departments`** - Departamentos (use `id` como `sectors_id` em: Transactions)
**Recomendação:** Execute este endpoint ao inicializar sua integração e armazene os IDs em cache para uso nas operações subsequentes.
⚠️ Os IDs retornados são específicos da sua conta.
## GET /settings
**Autenticação:** Bearer Token (header `Authorization: Bearer `)
Obtenha configurações da conta
### Respostas
#### 200 — Configurações da conta encontradas com sucesso
##### Exemplo: configuracoes — Configuracoes do escritorio
```json
{
"users": [
{
"id": 100001,
"name": "MARIA SILVA",
"email": "maria.silva@escritorio.com.br",
"cellphone": "(11) 99999-1234"
},
{
"id": 100002,
"name": "CARLOS SOUZA",
"email": "carlos.souza@escritorio.com.br",
"cellphone": "(11) 98888-5678"
}
],
"origins": [
{
"id": 422001,
"origin": "ESCRITORIO"
},
{
"id": 422002,
"origin": "INDICACAO"
},
{
"id": 422003,
"origin": "INSTAGRAM"
},
{
"id": 422004,
"origin": "FACEBOOK"
}
],
"tasks": [
{
"id": 500001,
"task": "AUDIENCIA",
"reward": 150
},
{
"id": 500002,
"task": "PETICAO INICIAL",
"reward": 100
},
{
"id": 500003,
"task": "RECURSO",
"reward": 200
}
],
"stages": [
{
"id": 300001,
"stage": "FASE INSTRUTORIA",
"step": "JUDICIAL"
},
{
"id": 300002,
"stage": "AGUARDANDO AUDIENCIA",
"step": "JUDICIAL"
},
{
"id": 300003,
"stage": "RECURSO PROTOCOLADO",
"step": "RECURSAL"
}
],
"type_lawsuits": [
{
"id": 1234567,
"type": "ACAO TRABALHISTA",
"group": "TRABALHISTA"
},
{
"id": 1234568,
"type": "ACAO CIVIL PUBLICA",
"group": "CIVEL"
},
{
"id": 1234569,
"type": "ACAO PENAL",
"group": "CRIMINAL"
}
],
"financial": {
"banks": [
{
"id": 135001,
"name": "CONTA PRINCIPAL",
"institution": "BANCO DO BRASIL"
},
{
"id": 135002,
"name": "CONTA POUPANCA",
"institution": "CAIXA ECONOMICA"
}
],
"categories": [
{
"id": 1,
"category": "HONORARIOS INICIAIS",
"type": "income"
},
{
"id": 2,
"category": "HONORARIOS DE EXITO",
"type": "income"
},
{
"id": 101,
"category": "CUSTAS PROCESSUAIS",
"type": "expense"
}
],
"cost_centers": [
{
"id": 41001,
"cost_center": "GERAL"
},
{
"id": 41002,
"cost_center": "CIVEL"
},
{
"id": 41003,
"cost_center": "TRABALHISTA"
}
],
"departments": [
{
"id": 10001,
"department": "CONTENCIOSO"
},
{
"id": 10002,
"department": "CONSULTIVO"
}
]
}
}
```
#### 401 — Não autenticado — token inválido ou ausente
##### Exemplo
```json
{
"error": "Unauthenticated."
}
```
#### 429 — Limite de requisições atingido — aguarde antes de tentar novamente
##### Exemplo
```json
{
"message": "Too Many Requests"
}
```