# Documentacao Completa da API - Perfex CRM (p4)
> **Para Agentes de IA**: Este documento descreve TODOS os endpoints disponiveis na API REST do Perfex CRM. Use-o como referencia para integracoes, automacoes e operacoes via API. A base URL depende da instancia (ex: `https://seudominio.com/p4/api/`).
---
## Sumario
1. [Autenticacao](#1-autenticacao)
2. [Formato de Requisicoes e Respostas](#2-formato-de-requisicoes-e-respostas)
3. [Codigos HTTP](#3-codigos-http)
4. [Clientes (Customers)](#4-clientes-customers)
5. [Contatos (Contacts)](#5-contatos-contacts)
6. [Leads](#6-leads)
7. [Notas de Leads (Lead Notes)](#7-notas-de-leads)
8. [Fontes de Leads (Leads Sources)](#8-fontes-de-leads)
9. [Status de Leads (Leads Status)](#9-status-de-leads)
10. [Projetos (Projects)](#10-projetos-projects)
11. [Marcos (Milestones)](#11-marcos-milestones)
12. [Tarefas (Tasks)](#12-tarefas-tasks)
13. [Comentarios de Tarefas (Task Comments)](#13-comentarios-de-tarefas)
14. [Checklist de Tarefas (Task Checklist)](#14-checklist-de-tarefas)
15. [Responsaveis de Tarefas (Task Assignees)](#15-responsaveis-de-tarefas)
16. [Seguidores de Tarefas (Task Followers)](#16-seguidores-de-tarefas)
17. [Registro de Horas (Timesheets)](#17-registro-de-horas-timesheets)
18. [Notas Gerais (Notes)](#18-notas-gerais-notes)
19. [Faturas (Invoices)](#19-faturas-invoices)
20. [Orcamentos (Estimates)](#20-orcamentos-estimates)
21. [Propostas (Proposals)](#21-propostas-proposals)
22. [Pagamentos (Payments)](#22-pagamentos-payments)
23. [Notas de Credito (Credit Notes)](#23-notas-de-credito-credit-notes)
24. [Despesas (Expenses)](#24-despesas-expenses)
25. [Categorias de Despesas (Expense Categories)](#25-categorias-de-despesas)
26. [Contratos (Contracts)](#26-contratos-contracts)
27. [Tipos de Contrato (Contract Types)](#27-tipos-de-contrato)
28. [Itens de Contrato (Contract Items)](#28-itens-de-contrato)
29. [Entregas de Contrato (Contract Deliveries)](#29-entregas-de-contrato)
30. [Faturas de Contrato (Contract Invoices)](#30-faturas-de-contrato)
31. [Pagamentos de Faturas de Contrato](#31-pagamentos-de-faturas-de-contrato)
32. [Garantias de Contrato (Contract Guarantees)](#32-garantias-de-contrato)
33. [Multi-Pipeline](#33-multi-pipeline)
34. [Inversoes de Projeto (Project Investments)](#34-inversoes-de-projeto)
35. [Orcamentos de Projeto (Project Budgets)](#35-orcamentos-de-projeto)
36. [Faturas de Orcamento (Project Budget Invoices)](#36-faturas-de-orcamento-de-projeto)
37. [Comprovantes de Pagamento (Project Invoice Receipts)](#37-comprovantes-de-pagamento-de-projeto)
38. [Visao Financeira do Projeto (Project Financial Overview)](#38-visao-financeira-do-projeto)
39. [Demonstracoes Financeiras do Cliente](#39-demonstracoes-financeiras-do-cliente)
40. [Balancos Financeiros do Cliente](#40-balancos-financeiros-do-cliente)
41. [DRE do Cliente](#41-dre-do-cliente)
42. [Informacoes Bancarias do Cliente](#42-informacoes-bancarias-do-cliente)
43. [Socios do Cliente](#43-socios-do-cliente)
44. [Diretores do Cliente](#44-diretores-do-cliente)
45. [Conselho do Cliente](#45-conselho-do-cliente)
46. [Gerentes do Cliente](#46-gerentes-do-cliente)
47. [Garantias do Cliente](#47-garantias-do-cliente)
48. [Cofre do Cliente (Vault)](#48-cofre-do-cliente-vault)
49. [Documentos CIS](#49-documentos-cis)
50. [Historico KYC](#50-historico-kyc)
51. [Extrato do Cliente (Customer Statement)](#51-extrato-do-cliente)
52. [Tickets de Suporte](#52-tickets-de-suporte)
53. [Funcionarios (Staff)](#53-funcionarios-staff)
54. [Departamentos](#54-departamentos)
55. [Cargos (Roles)](#55-cargos-roles)
56. [Itens/Produtos (Items)](#56-itens-produtos)
57. [Moedas (Currencies)](#57-moedas-currencies)
58. [Impostos (Taxes)](#58-impostos-taxes)
59. [Paises (Countries)](#59-paises-countries)
60. [Modos de Pagamento (Payment Modes)](#60-modos-de-pagamento)
61. [Campos Personalizados (Custom Fields)](#61-campos-personalizados)
62. [Calendario (Calendar)](#62-calendario)
63. [Assinaturas (Subscriptions)](#63-assinaturas-subscriptions)
64. [Pesquisas (Surveys)](#64-pesquisas-surveys)
65. [Lembretes (Reminders)](#65-lembretes-reminders)
66. [Metas (Goals)](#66-metas-goals)
67. [Anuncios (Announcements)](#67-anuncios-announcements)
68. [Base de Conhecimento (Knowledge Base)](#68-base-de-conhecimento)
69. [Arquivos (Files)](#69-arquivos-files)
70. [Relatorios (Reports)](#70-relatorios-reports)\
71. [Marketing Assets do Cliente (Client Marketing Assets)](#71-marketing-assets-do-cliente)\
72. [Senhas da Equipe (Team Passwords)](#72-senhas-da-equipe-team-passwords)
73. [Categorias de Goals](#73-categorias-de-goals)
74. [Tags de Goals](#74-tags-de-goals)
75. [Milestones de Goals](#75-milestones-de-goals)
76. [Notas de Goals](#76-notas-de-goals)
77. [Membros de Goals](#77-membros-de-goals)
78. [Progresso de Goals](#78-progresso-de-goals)
79. [Templates de Goals](#79-templates-de-goals)
80. [KPIs de Goals](#80-kpis-de-goals)
81. [Lead Scoring](#81-lead-scoring)
82. [Leads - Novos Endpoints e Lead Score](#82-leads-novos-endpoints)
83. [Multi-Pipeline - Lead Score](#83-multi-pipeline-lead-score)
---
## 1. Autenticacao
A API suporta autenticacao via **JWT (JSON Web Token)** como metodo principal.
### 1.1 Obter Token JWT
```
POST /api/login/auth
Content-Type: application/json
```
**Body:**
```json
{
"email": "[email protected]",
"password": "sua_senha"
}
```
**Resposta (200):**
```json
{
"status": true,
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
```
**Resposta (401):**
```json
{
"status": false,
"message": "Invalid login credentials"
}
```
### 1.2 Validar Token / Ver Dados do Usuario Autenticado
```
POST /api/login/view
Authorization: Bearer {token}
```
**Resposta:** Retorna dados do usuario autenticado (id, nome, email, permissoes).
### 1.3 Obter API Key
```
POST /api/login/key
Authorization: Bearer {token}
```
### 1.4 Usando o Token em Todas as Requisicoes
Adicione o header em TODAS as chamadas:
```
Authorization: Bearer {token}
```
> **Nota para Agente IA**: Sempre obtenha o token primeiro com `/api/login/auth` e use-o em todas as chamadas subsequentes. O token tem validade longa (padrao ~10 anos), entao pode ser reutilizado entre sessoes.
---
## 2. Formato de Requisicoes e Respostas
### Requisicoes
- **GET/DELETE**: Parametros via URL ou query string (`?param=valor`)
- **POST**: Body em `application/json` ou `application/x-www-form-urlencoded`
- **PUT**: Body em JSON (raw)
- **Upload de arquivos**: `multipart/form-data`
### Respostas
Todas as respostas sao em JSON com estrutura padrao:
**Sucesso (listagem):**
```json
{
"status": true,
"data": [ ... ]
}
```
**Sucesso (item unico):**
```json
{
"status": true,
"data": { ... }
}
```
**Sucesso (criacao):**
```json
{
"status": true,
"message": "Record created successfully",
"id": 123
}
```
**Erro:**
```json
{
"status": false,
"message": "Descricao do erro"
}
```
---
## 3. Codigos HTTP
| Codigo | Significado | Quando ocorre |
|--------|-------------|---------------|
| 200 | OK | Requisicao bem-sucedida |
| 201 | Criado | Recurso criado com sucesso |
| 400 | Requisicao Invalida | Dados faltando, formato errado ou validacao falhou |
| 401 | Nao Autorizado | Token ausente, invalido ou expirado |
| 404 | Nao Encontrado | ID informado nao existe |
| 405 | Metodo Nao Permitido | Usando GET em endpoint que so aceita POST, etc. |
| 409 | Conflito | Registro tem vinculos e nao pode ser deletado |
| 500 | Erro Interno | Erro no servidor |
---
## 4. Clientes (Customers)
Gerencia empresas/clientes no CRM.
### Listar todos os clientes
```
GET /api/customers
```
### Obter cliente por ID
```
GET /api/customers/{id}
```
Retorna dados do cliente incluindo custom fields.
### Buscar clientes
```
GET /api/customers/search/{palavra_chave}
```
### Criar cliente
```
POST /api/customers
Content-Type: application/json
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `company` | string | Nome da empresa |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `vat` | string | CNPJ/CPF |
| `phonenumber` | string | Telefone |
| `website` | string | Site |
| `groups_in` | array | IDs de grupos |
| `default_language` | string | Idioma padrao (ex: "portuguese_br") |
| `default_currency` | integer | ID da moeda padrao |
| `currency` | integer | ID da moeda (alias) |
| `address` | string | Endereco |
| `city` | string | Cidade |
| `state` | string | Estado |
| `zip` | string | CEP |
| `country` | integer | ID do pais |
| `billing_street` | string | Rua de cobranca |
| `billing_city` | string | Cidade de cobranca |
| `billing_state` | string | Estado de cobranca |
| `billing_zip` | string | CEP de cobranca |
| `billing_country` | integer | Pais de cobranca |
| `shipping_street` | string | Rua de entrega |
| `shipping_city` | string | Cidade de entrega |
| `shipping_state` | string | Estado de entrega |
| `shipping_zip` | string | CEP de entrega |
| `shipping_country` | integer | Pais de entrega |
| `custom_fields` | object | Campos personalizados |
**Exemplo:**
```json
{
"company": "Empresa ABC Ltda",
"vat": "12.345.678/0001-90",
"phonenumber": "+55 11 99999-9999",
"address": "Rua Exemplo, 123",
"city": "Sao Paulo",
"state": "SP",
"country": 30
}
```
### Atualizar cliente
```
PUT /api/customers/{id}
Content-Type: application/json
```
Mesmos campos que criacao. Campo `company` obrigatorio.
### Deletar cliente
```
DELETE /api/customers/{id}
```
---
## 5. Contatos (Contacts)
Gerencia contatos (pessoas) vinculados a clientes.
### Listar contatos de um cliente
```
GET /api/contacts/{customer_id}
```
### Obter contato especifico
```
GET /api/contacts/{customer_id}/{contact_id}
```
### Buscar contatos
```
GET /api/contacts/search/{palavra_chave}
```
### Criar contato
```
POST /api/contacts
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `customer_id` | integer | ID do cliente |
| `firstname` | string | Nome |
| `lastname` | string | Sobrenome |
| `email` | string | Email |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `title` | string | Cargo |
| `phonenumber` | string | Telefone |
| `is_primary` | integer | Contato principal (0/1) |
| `permissions` | array | Permissoes no portal |
| `invoice_emails` | integer | Receber emails de fatura (0/1) |
| `estimate_emails` | integer | Receber emails de orcamento (0/1) |
| `credit_note_emails` | integer | Receber emails de nota de credito (0/1) |
| `contract_emails` | integer | Receber emails de contrato (0/1) |
| `task_emails` | integer | Receber emails de tarefa (0/1) |
| `project_emails` | integer | Receber emails de projeto (0/1) |
| `ticket_emails` | integer | Receber emails de ticket (0/1) |
| `custom_fields` | object | Campos personalizados |
### Atualizar contato
```
PUT /api/contacts/{id}
```
Campos `firstname`, `lastname`, `email` obrigatorios.
### Deletar contato
```
DELETE /api/contacts/{customer_id}
```
---
## 6. Leads
Gerencia leads (oportunidades de negocio).
### Listar todos os leads
```
GET /api/leads
```
### Obter lead por ID
```
GET /api/leads/{id}
```
### Buscar leads
```
GET /api/leads/search/{palavra_chave}
```
### Criar lead
```
POST /api/leads
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `name` | string | Nome do lead |
| `source` | integer | ID da fonte |
| `status` | integer | ID do status |
| `assigned` | integer | ID do funcionario responsavel |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente vinculado |
| `contact` | string | Nome do contato |
| `email` | string | Email |
| `phonenumber` | string | Telefone |
| `company` | string | Empresa |
| `address` | string | Endereco |
| `city` | string | Cidade |
| `state` | string | Estado |
| `country` | integer | ID do pais |
| `zip` | string | CEP |
| `website` | string | Site |
| `description` | string | Descricao |
| `tags` | string | Tags separadas por virgula |
| `is_public` | integer | Lead publico (0/1) |
| `lead_value` | decimal | Valor estimado |
| `custom_fields` | object | Campos personalizados |
### Atualizar lead
```
PUT /api/leads/{id}
```
### Deletar lead
```
DELETE /api/leads/{id}
```
---
## 7. Notas de Leads
Gerencia notas/observacoes vinculadas a leads especificos.
### Listar notas de um lead
```
GET /api/lead_notes/{lead_id}
```
Retorna array de notas com informacoes do staff.
### Criar nota de lead
```
POST /api/lead_notes
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `lead_id` | integer | ID do lead |
| `description` | string | Conteudo da nota |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `date_contacted` | string | Data de contato (YYYY-MM-DD) |
### Atualizar nota
```
PUT /api/lead_notes/{note_id}
```
Campo `description` obrigatorio.
### Deletar nota
```
DELETE /api/lead_notes/{note_id}
```
---
## 8. Fontes de Leads
Gerencia as origens/fontes de leads (ex: Google, Indicacao, Site).
### Listar fontes
```
GET /api/leads_sources
```
### Criar fonte
```
POST /api/leads_sources
```
Campo obrigatorio: `name` (string)
### Atualizar fonte
```
PUT /api/leads_sources/{id}
```
### Deletar fonte
```
DELETE /api/leads_sources/{id}
```
---
## 9. Status de Leads
Gerencia os status possiveis de leads (ex: Novo, Contatado, Qualificado).
### Listar status
```
GET /api/leads_status
```
### Criar status
```
POST /api/leads_status
```
Campo obrigatorio: `name` (string)
### Atualizar status
```
PUT /api/leads_status/{id}
```
### Deletar status
```
DELETE /api/leads_status/{id}
```
---
## 10. Projetos (Projects)
Gerencia projetos vinculados a clientes.
### Listar projetos
```
GET /api/projects
```
### Obter projeto por ID
```
GET /api/projects/{id}
```
### Buscar projetos
```
GET /api/projects/search/{palavra_chave}
```
### Criar projeto
```
POST /api/projects
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `name` | string | Nome do projeto |
| `rel_type` | string | Tipo de relacao (geralmente "customer") |
| `clientid` | integer | ID do cliente |
| `billing_type` | integer | Tipo de cobranca (1=Preco Fixo, 2=Por Hora Projeto, 3=Por Hora Tarefa) |
| `start_date` | string | Data inicio (YYYY-MM-DD) |
| `status` | integer | Status (1=Nao Iniciado, 2=Em Progresso, 3=Em Espera, 4=Cancelado, 5=Concluido) |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `deadline` | string | Data limite (YYYY-MM-DD) |
| `project_cost` | decimal | Custo do projeto |
| `project_rate_per_hour` | decimal | Valor por hora |
| `estimated_hours` | decimal | Horas estimadas |
| `description` | string | Descricao |
| `project_members` | array | IDs de membros do projeto |
| `custom_fields` | object | Campos personalizados |
### Atualizar projeto
```
PUT /api/projects/{id}
```
### Deletar projeto
```
DELETE /api/projects/{id}
```
---
## 11. Marcos (Milestones)
Gerencia marcos/etapas de projetos.
### Listar marcos
```
GET /api/milestones
```
### Obter marco por ID
```
GET /api/milestones/{id}
```
### Buscar marcos
```
GET /api/milestones/search/{palavra_chave}
```
### Criar marco
```
POST /api/milestones
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `project_id` | integer | ID do projeto |
| `name` | string | Nome do marco |
| `due_date` | string | Data limite (YYYY-MM-DD) |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `description` | string | Descricao |
| `description_visible_to_customer` | integer | Visivel ao cliente (0/1) |
| `milestone_order` | integer | Ordem de exibicao |
### Atualizar marco
```
PUT /api/milestones/{id}
```
### Deletar marco
```
DELETE /api/milestones/{id}
```
---
## 12. Tarefas (Tasks)
Gerencia tarefas que podem ser vinculadas a projetos, clientes ou leads.
### Listar tarefas
```
GET /api/tasks
```
### Obter tarefa por ID
```
GET /api/tasks/{id}
```
### Buscar tarefas
```
GET /api/tasks/search/{palavra_chave}
```
### Criar tarefa
```
POST /api/tasks
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `name` | string | Nome da tarefa |
| `startdate` | string | Data inicio (YYYY-MM-DD) |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `duedate` | string | Data limite (YYYY-MM-DD) |
| `priority` | integer | Prioridade (1=Baixa, 2=Media, 3=Alta, 4=Urgente) |
| `status` | integer | Status (1=Nao Iniciada, 2=Aguardando, 3=Testando, 4=Em Progresso, 5=Concluida) |
| `rel_type` | string | Tipo de relacao ("project", "customer", "lead", "invoice", "estimate") |
| `rel_id` | integer | ID da entidade relacionada |
| `milestone` | integer | ID do marco |
| `billable` | integer | Faturavel (0/1) |
| `is_public` | integer | Tarefa publica (0/1) |
| `description` | string | Descricao |
| `hourly_rate` | decimal | Valor por hora |
| `assignees` | array | IDs de responsaveis |
| `followers` | array | IDs de seguidores |
| `tags` | string | Tags separadas por virgula |
| `custom_fields` | object | Campos personalizados |
### Atualizar tarefa
```
PUT /api/tasks/{id}
```
### Deletar tarefa
```
DELETE /api/tasks/{id}
```
---
## 13. Comentarios de Tarefas
Gerencia comentarios/discussoes em tarefas.
### Listar comentarios de uma tarefa
```
GET /api/task_comments/{task_id}
```
Retorna array com informacoes do staff e anexos.
### Criar comentario
```
POST /api/task_comments
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `taskid` | integer | ID da tarefa |
| `content` | string | Conteudo do comentario |
### Atualizar comentario
```
PUT /api/task_comments/{comment_id}
```
Campo `content` obrigatorio.
### Deletar comentario
```
DELETE /api/task_comments/{comment_id}
```
---
## 14. Checklist de Tarefas
Gerencia itens de checklist (subtarefas) dentro de tarefas.
### Listar checklist de uma tarefa
```
GET /api/task_checklist/{task_id}
```
### Criar item de checklist
```
POST /api/task_checklist
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `taskid` | integer | ID da tarefa |
| `description` | string | Descricao do item |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `finished` | integer | Concluido (0/1) |
| `list_order` | integer | Ordem na lista |
### Atualizar item
```
PUT /api/task_checklist/{id}
```
### Deletar item
```
DELETE /api/task_checklist/{id}
```
### Alternar status de conclusao (toggle)
```
POST /api/task_checklist/{id}/toggle
```
Alterna entre concluido/nao concluido.
### Reordenar itens
```
POST /api/task_checklist/reorder
```
**Body:**
```json
{
"order": [3, 1, 4, 2]
}
```
Array com IDs na ordem desejada.
---
## 15. Responsaveis de Tarefas
Gerencia quem esta atribuido para executar as tarefas.
### Listar responsaveis de uma tarefa
```
GET /api/task_assignees/{task_id}
```
### Atribuir responsavel
```
POST /api/task_assignees
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `taskid` | integer | ID da tarefa |
| `assignee` | integer | ID do funcionario |
### Atribuir em massa
```
POST /api/task_assignees/bulk
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `taskid` | integer | ID da tarefa |
| `assignees` | array | Array de IDs de funcionarios |
**Exemplo:**
```json
{
"taskid": 10,
"assignees": [1, 3, 5]
}
```
### Remover responsavel
```
DELETE /api/task_assignees/{task_id}/{staff_id}
```
> **Nota**: Responsaveis (assignees) sao quem EXECUTA a tarefa. Diferente de seguidores (followers) que apenas ACOMPANHAM.
---
## 16. Seguidores de Tarefas
Gerencia quem acompanha (recebe notificacoes) tarefas.
### Listar seguidores
```
GET /api/task_followers/{task_id}
```
### Adicionar seguidor
```
POST /api/task_followers
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `taskid` | integer | ID da tarefa |
| `follower` | integer | ID do funcionario |
### Adicionar em massa
```
POST /api/task_followers/bulk
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `taskid` | integer | ID da tarefa |
| `followers` | array | Array de IDs de funcionarios |
### Remover seguidor
```
DELETE /api/task_followers/{task_id}/{staff_id}
```
---
## 17. Registro de Horas (Timesheets)
Gerencia registros de tempo gasto em tarefas.
### Listar registros
```
GET /api/timesheets
GET /api/timesheets/{id}
```
### Criar registro
```
POST /api/timesheets
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `task_id` | integer | ID da tarefa |
| `start_time` | string | Inicio (YYYY-MM-DD HH:MM:SS ou timestamp) |
| `end_time` | string | Fim (YYYY-MM-DD HH:MM:SS ou timestamp) |
| `staff_id` | integer | ID do funcionario |
| `hourly_rate` | decimal | Valor por hora |
| `note` | string | Observacao |
### Atualizar registro
```
PUT /api/timesheets/{id}
```
### Deletar registro
```
DELETE /api/timesheets/{id}
```
---
## 18. Notas Gerais (Notes)
Gerencia notas vinculadas a qualquer entidade do sistema.
### Listar notas de uma entidade
```
GET /api/notes/{rel_type}/{rel_id}
```
**Valores validos para `rel_type`:**
- `customer` - Notas de clientes
- `project` - Notas de projetos
- `contract` - Notas de contratos
- `staff` - Notas de funcionarios
- `lead` - Notas de leads
- `invoice` - Notas de faturas
- `estimate` - Notas de orcamentos
- `proposal` - Notas de propostas
- `expense` - Notas de despesas
- `ticket` - Notas de tickets
**Exemplo:**
```
GET /api/notes/customer/5
```
Retorna todas as notas do cliente com ID 5.
### Obter nota especifica
```
GET /api/notes/single/{note_id}
```
### Criar nota
```
POST /api/notes
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `rel_type` | string | Tipo da entidade (ver lista acima) |
| `rel_id` | integer | ID da entidade |
| `description` | string | Conteudo da nota |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `date_contacted` | string | Data de contato (YYYY-MM-DD) |
### Atualizar nota
```
PUT /api/notes/{id}
```
### Deletar nota
```
DELETE /api/notes/{id}
```
---
## 19. Faturas (Invoices)
Gerencia faturas/cobrandas do sistema.
### Listar faturas
```
GET /api/invoices
```
### Obter fatura por ID
```
GET /api/invoices/{id}
```
Retorna fatura completa com itens, totais e custom fields.
### Buscar faturas
```
GET /api/invoices/search/{palavra_chave}
```
### Criar fatura
```
POST /api/invoices
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `clientid` | integer | ID do cliente |
| `number` | integer | Numero da fatura |
| `date` | string | Data (YYYY-MM-DD) |
| `currency` | integer | ID da moeda |
| `newitems[]` | array | Itens da fatura (ver formato abaixo) |
| `billing_street` | string | Rua de cobranca |
| `allowed_payment_modes[]` | array | IDs dos modos de pagamento |
| `subtotal` | decimal | Subtotal |
| `total` | decimal | Total |
**Formato de `newitems[]`:**
```json
{
"newitems": [
{
"description": "Servico de consultoria",
"long_description": "Descricao detalhada",
"qty": 10,
"rate": 150.00,
"unit": "horas",
"taxname": ["IVA|15"]
}
]
}
```
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `duedate` | string | Data de vencimento (YYYY-MM-DD) |
| `project_id` | integer | ID do projeto |
| `discount_percent` | decimal | Desconto em percentual |
| `discount_total` | decimal | Desconto em valor |
| `discount_type` | string | Tipo de desconto |
| `adminnote` | string | Nota interna |
| `clientnote` | string | Nota para o cliente |
| `terms` | string | Termos e condicoes |
| `sale_agent` | integer | ID do vendedor |
| `recurring` | integer | Recorrencia (meses) |
| `custom_fields` | object | Campos personalizados |
### Atualizar fatura
```
PUT /api/invoices/{id}
```
### Deletar fatura
```
DELETE /api/invoices/{id}
```
---
## 20. Orcamentos (Estimates)
Gerencia orcamentos/propostas de preco.
### Listar orcamentos
```
GET /api/estimates
```
### Obter orcamento
```
GET /api/estimates/{id}
```
### Buscar orcamentos
```
GET /api/estimates/search/{palavra_chave}
```
### Criar orcamento
```
POST /api/estimates
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `clientid` | integer | ID do cliente |
| `number` | integer | Numero do orcamento |
| `date` | string | Data (YYYY-MM-DD) |
| `currency` | integer | ID da moeda |
| `newitems[]` | array | Itens (mesmo formato de faturas) |
| `billing_street` | string | Rua de cobranca |
| `subtotal` | decimal | Subtotal |
| `total` | decimal | Total |
**Campos opcionais:** Semelhantes a faturas (duedate, discount, notes, terms, custom_fields).
### Atualizar orcamento
```
PUT /api/estimates/{id}
```
### Deletar orcamento
```
DELETE /api/estimates/{id}
```
---
## 21. Propostas (Proposals)
Gerencia propostas comerciais.
### Listar propostas
```
GET /api/proposals
```
### Obter proposta
```
GET /api/proposals/{id}
```
### Buscar propostas
```
GET /api/proposals/search/{palavra_chave}
```
### Criar proposta
```
POST /api/proposals
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `subject` | string | Assunto |
| `rel_type` | string | Tipo de relacao ("lead" ou "customer") |
| `rel_id` | integer | ID do lead ou cliente |
| `proposal_to` | string | Nome do destinatario |
| `email` | string | Email do destinatario |
| `newitems[]` | array | Itens da proposta |
| `currency` | integer | ID da moeda |
| `date` | string | Data (YYYY-MM-DD) |
| `status` | integer | Status (1=Aberta, 2=Recusada, 3=Aceita, 4=Revisada, 5=Cancelada) |
| `subtotal` | decimal | Subtotal |
| `total` | decimal | Total |
### Atualizar proposta
```
PUT /api/proposals/{id}
```
### Deletar proposta
```
DELETE /api/proposals/{id}
```
---
## 22. Pagamentos (Payments)
Gerencia pagamentos recebidos vinculados a faturas.
### Listar pagamentos
```
GET /api/payments
```
### Obter pagamento
```
GET /api/payments/{id}
```
### Buscar pagamentos
```
GET /api/payments/search/{palavra_chave}
```
### Criar pagamento
```
POST /api/payments
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `invoiceid` | integer | ID da fatura |
| `amount` | decimal | Valor pago |
| `paymentmode` | integer | ID do modo de pagamento |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `date` | string | Data do pagamento (YYYY-MM-DD) |
| `transactionid` | string | ID da transacao |
| `note` | string | Observacao |
### Atualizar pagamento
```
PUT /api/payments/{id}
```
### Deletar pagamento
```
DELETE /api/payments/{id}
```
---
## 23. Notas de Credito (Credit Notes)
Gerencia notas de credito/devolucao.
### Listar notas de credito
```
GET /api/credit_notes
```
### Obter nota de credito
```
GET /api/credit_notes/{id}
```
### Buscar notas de credito
```
GET /api/credit_notes/search/{palavra_chave}
```
### Criar nota de credito
```
POST /api/credit_notes
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `clientid` | integer | ID do cliente |
| `date` | string | Data (YYYY-MM-DD) |
| `number` | integer | Numero |
| `currency` | integer | ID da moeda |
| `newitems[]` | array | Itens (mesmo formato de faturas) |
| `subtotal` | decimal | Subtotal |
| `total` | decimal | Total |
### Atualizar nota de credito
```
PUT /api/credit_notes/{id}
```
Requer todos os campos obrigatorios + `items[]` para itens existentes e `newitems[]` para novos.
### Deletar nota de credito
```
DELETE /api/credit_notes/{id}
```
---
## 24. Despesas (Expenses)
Gerencia despesas/gastos.
### Listar despesas
```
GET /api/expenses
```
### Obter despesa
```
GET /api/expenses/{id}
```
### Buscar despesas
```
GET /api/expenses/search/{palavra_chave}
```
### Criar despesa
```
POST /api/expenses
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `category` | integer | ID da categoria |
| `amount` | decimal | Valor |
| `date` | string | Data (YYYY-MM-DD) |
| `currency` | integer | ID da moeda |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `expense_name` | string | Nome da despesa |
| `note` | string | Observacao |
| `clientid` | integer | ID do cliente |
| `project_id` | integer | ID do projeto |
| `tax` | integer | ID do imposto |
| `tax2` | integer | ID do segundo imposto |
| `paymentmode` | string | Modo de pagamento |
| `billable` | integer | Faturavel (0/1) |
| `custom_fields` | object | Campos personalizados |
### Atualizar despesa
```
PUT /api/expenses/{id}
```
### Deletar despesa
```
DELETE /api/expenses/{id}
```
---
## 25. Categorias de Despesas
### Listar categorias
```
GET /api/expense_categories
```
### Criar categoria
```
POST /api/expense_categories
```
Campo obrigatorio: `name` (string)
### Atualizar categoria
```
PUT /api/expense_categories/{id}
```
### Deletar categoria
```
DELETE /api/expense_categories/{id}
```
---
## 26. Contratos (Contracts)
Gerencia contratos com clientes.
### Listar contratos
```
GET /api/contracts
```
### Obter contrato
```
GET /api/contracts/{id}
```
### Criar contrato
```
POST /api/contracts
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `subject` | string | Assunto/titulo |
| `datestart` | string | Data inicio (YYYY-MM-DD) |
| `client` | integer | ID do cliente |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `dateend` | string | Data fim (YYYY-MM-DD) |
| `contract_type` | integer | ID do tipo de contrato |
| `contract_value` | decimal | Valor do contrato |
| `description` | string | Descricao/conteudo |
| `custom_fields` | object | Campos personalizados |
### Atualizar contrato
```
PUT /api/contracts/{id}
```
### Deletar contrato
```
DELETE /api/contracts/{id}
```
---
## 27. Tipos de Contrato
### Listar tipos
```
GET /api/contract_types
```
### Criar tipo
```
POST /api/contract_types
```
Campo obrigatorio: `name` (string)
### Atualizar tipo
```
PUT /api/contract_types/{id}
```
### Deletar tipo
```
DELETE /api/contract_types/{id}
```
---
## 28. Itens de Contrato
Gerencia itens/servicos dentro de contratos. Parte do fluxo: Contrato → Itens → Entregas.
### Listar itens de um contrato
```
GET /api/contract_items?contract_id={contract_id}
```
### Obter item
```
GET /api/contract_items/{id}
```
### Criar item
```
POST /api/contract_items
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `contract_id` | integer | ID do contrato |
| `description` | string | Descricao do item |
| `qty` | decimal | Quantidade |
| `rate` | decimal | Valor unitario |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `long_description` | string | Descricao detalhada |
| `unit` | string | Unidade de medida |
| `delivered_qty` | decimal | Quantidade ja entregue |
### Atualizar item
```
PUT /api/contract_items/{id}
```
### Deletar item
```
DELETE /api/contract_items/{id}
```
### Registrar entrega rapida
```
POST /api/contract_items/{id}/deliver
```
**Body:**
```json
{
"quantity": 5
}
```
Registra entrega parcial/total do item. Atualiza automaticamente o `delivered_qty`.
### Resumo de execucao do contrato
```
GET /api/contract_items/summary/{contract_id}
```
Retorna percentuais de execucao, quantidades entregues vs planejadas para cada item.
---
## 29. Entregas de Contrato
Gerencia registros detalhados de entregas de itens de contrato.
### Listar entregas
```
GET /api/contract_deliveries?contract_id={contract_id}
GET /api/contract_deliveries?item_id={item_id}
```
### Obter entrega
```
GET /api/contract_deliveries/{id}
```
### Criar entrega
```
POST /api/contract_deliveries
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `contract_id` | integer | ID do contrato |
| `item_id` | integer | ID do item de contrato |
| `quantity` | decimal | Quantidade entregue |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `delivery_date` | string | Data da entrega (YYYY-MM-DD) |
| `description` | string | Descricao |
| `received_by` | string | Recebido por |
| `notes` | string | Observacoes |
| `status` | string | Status ("pending", "delivered", "partial") |
### Atualizar entrega
```
PUT /api/contract_deliveries/{id}
```
### Deletar entrega
```
DELETE /api/contract_deliveries/{id}
```
### Resumo de entregas
```
GET /api/contract_deliveries/summary/{contract_id}
```
### Upload de anexo em entrega
```
POST /api/contract_deliveries/{id}/attachments
Content-Type: multipart/form-data
```
Campo `file`: arquivo a ser enviado.
---
## 30. Faturas de Contrato
Gerencia faturas especificas de contratos (a receber e a pagar).
### Listar faturas
```
GET /api/contract_invoices?contract_id={contract_id}
GET /api/contract_invoices?type=receivable
GET /api/contract_invoices?type=payable
```
### Obter fatura
```
GET /api/contract_invoices/{id}
```
### Criar fatura
```
POST /api/contract_invoices
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `contract_id` | integer | ID do contrato |
| `amount` | decimal | Valor |
| `type` | string | Tipo: "receivable" (a receber) ou "payable" (a pagar) |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `invoice_number` | string | Numero da fatura |
| `due_date` | string | Vencimento (YYYY-MM-DD) |
| `issue_date` | string | Data emissao (YYYY-MM-DD) |
| `description` | string | Descricao |
| `status` | string | Status ("draft", "sent", "paid", "overdue", "cancelled") |
### Atualizar fatura
```
PUT /api/contract_invoices/{id}
```
### Deletar fatura
```
DELETE /api/contract_invoices/{id}
```
### Resumo financeiro
```
GET /api/contract_invoices/summary/{contract_id}
```
Retorna totais de faturas a receber vs a pagar, pagas vs pendentes.
### Upload de anexo
```
POST /api/contract_invoices/{id}/attachments
Content-Type: multipart/form-data
```
---
## 31. Pagamentos de Faturas de Contrato
Gerencia pagamentos vinculados a faturas de contrato.
### Listar pagamentos
```
GET /api/contract_invoice_payments?invoice_id={invoice_id}
GET /api/contract_invoice_payments?contract_id={contract_id}
```
### Obter pagamento
```
GET /api/contract_invoice_payments/{id}
```
### Criar pagamento
```
POST /api/contract_invoice_payments
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `invoice_id` | integer | ID da fatura de contrato |
| `amount` | decimal | Valor pago |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `payment_date` | string | Data do pagamento (YYYY-MM-DD) |
| `payment_method` | string | Metodo de pagamento |
| `transaction_id` | string | ID da transacao |
| `notes` | string | Observacoes |
### Atualizar pagamento
```
PUT /api/contract_invoice_payments/{id}
```
### Deletar pagamento
```
DELETE /api/contract_invoice_payments/{id}
```
### Upload de comprovante
```
POST /api/contract_invoice_payments/{id}/attachments
Content-Type: multipart/form-data
```
---
## 32. Garantias de Contrato
Vincula garantias do cliente a contratos especificos.
### Listar vinculos
```
GET /api/contract_guarantees?contract_id={contract_id}
GET /api/contract_guarantees?guarantee_id={guarantee_id}
```
### Obter vinculo
```
GET /api/contract_guarantees/{id}
```
### Vincular garantias a contrato
```
POST /api/contract_guarantees
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `contract_id` | integer | ID do contrato |
| `client_id` | integer | ID do cliente |
| `guarantee_data` | array | Dados das garantias a vincular |
### Desvincular garantia
```
DELETE /api/contract_guarantees/{id}
```
### Listar garantias disponiveis
```
GET /api/contract_guarantees/available?contract_id={id}&client_id={id}
```
Retorna garantias do cliente que ainda nao estao vinculadas ao contrato.
---
## 33. Multi-Pipeline
Gerencia pipelines personalizados para gestao de leads com multiplos funis.
### 33.1 Pipelines
#### Listar pipelines
```
GET /api/multi_pipeline/pipelines
```
#### Obter pipeline
```
GET /api/multi_pipeline/pipelines/{id}
```
#### Criar pipeline
```
POST /api/multi_pipeline/pipelines
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `name` | string | Nome do pipeline |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `description` | string | Descricao |
| `color` | string | Cor hex (ex: "#FF5733") |
| `is_default` | integer | Pipeline padrao (0/1) |
#### Atualizar pipeline
```
PUT /api/multi_pipeline/pipelines/{id}
```
#### Deletar pipeline
```
DELETE /api/multi_pipeline/pipelines/{id}
```
### 33.2 Estagios (Stages)
#### Listar estagios
```
GET /api/multi_pipeline/stages
GET /api/multi_pipeline/stages?pipeline_id={id}
```
#### Obter estagio
```
GET /api/multi_pipeline/stages/{id}
```
#### Criar estagio
```
POST /api/multi_pipeline/stages
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `pipeline_id` | integer | ID do pipeline |
| `name` | string | Nome do estagio |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `color` | string | Cor hex |
| `order` | integer | Ordem de exibicao |
| `closable` | integer | Estagio de fechamento (0/1) |
| `win_probability` | integer | Probabilidade de ganho (0-100) |
#### Atualizar estagio
```
PUT /api/multi_pipeline/stages/{id}
```
#### Deletar estagio
```
DELETE /api/multi_pipeline/stages/{id}
```
#### Reordenar estagios
```
POST /api/multi_pipeline/stages/reorder
```
**Body:**
```json
{
"stages": [
{"id": 1, "order": 0},
{"id": 2, "order": 1},
{"id": 3, "order": 2}
]
}
```
### 33.3 Status
#### Listar status
```
GET /api/multi_pipeline/statuses
```
#### Criar status
```
POST /api/multi_pipeline/statuses
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `name` | string | Nome do status |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `color` | string | Cor hex |
| `order` | integer | Ordem |
| `is_default` | integer | Status padrao (0/1) |
#### Atualizar status
```
PUT /api/multi_pipeline/statuses/{id}
```
#### Deletar status
```
DELETE /api/multi_pipeline/statuses/{id}
```
### 33.4 Movimentacao de Leads
#### Mover lead para estagio/pipeline
```
POST /api/multi_pipeline/leads/move
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `lead_id` | integer | ID do lead |
| `stage_id` | integer | ID do estagio destino |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `pipeline_id` | integer | ID do pipeline destino |
#### Historico de movimentacao
```
GET /api/multi_pipeline/leads/history/{lead_id}
```
Retorna historico com timestamps, estagios e staff responsavel.
---
## 34. Inversoes de Projeto (Project Investments)
Gerencia fontes de financiamento/investimento de projetos.
### Listar inversoes
```
GET /api/project_investments?project_id={project_id}
```
### Obter inversao
```
GET /api/project_investments/{id}
```
### Criar inversao
```
POST /api/project_investments
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `project_id` | integer | ID do projeto |
| `name` | string | Nome da inversao |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `category` | string | Categoria |
| `value` | decimal | Valor |
| `currency` | string | Moeda (padrao: "BRL") |
| `institution` | string | Instituicao financeira |
| `financing_line` | string | Linha de financiamento |
| `interest_rate_type` | string | Tipo de taxa de juros |
| `amortization_method` | string | Metodo de amortizacao |
| `interest_rate` | decimal | Taxa de juros |
| `term_months` | integer | Prazo em meses |
| `grace_period_months` | integer | Periodo de carencia |
| `start_date` | string | Data inicio (YYYY-MM-DD) |
| `notes` | string | Observacoes |
### Atualizar inversao
```
PUT /api/project_investments/{id}
```
### Deletar inversao
```
DELETE /api/project_investments/{id}
```
### Upload de anexo
```
POST /api/project_investments/{id}/attachments
Content-Type: multipart/form-data
```
### Deletar anexo
```
DELETE /api/project_investments/{id}/attachments/{attachment_id}
```
---
## 35. Orcamentos de Projeto (Project Budgets)
Gerencia orcamentos/previsoes de gastos dentro de projetos.
### Listar orcamentos
```
GET /api/project_budgets?project_id={project_id}
GET /api/project_budgets?investment_id={investment_id}
```
### Obter orcamento
```
GET /api/project_budgets/{id}
```
### Criar orcamento
```
POST /api/project_budgets
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `project_id` | integer | ID do projeto |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `investment_id` | integer | ID da inversao vinculada |
| `title` | string | Titulo |
| `reference` | string | Referencia |
| `category` | string | Categoria |
| `subcategory` | string | Subcategoria |
| `tags` | string | Tags |
| `budget_date` | string | Data (YYYY-MM-DD) |
| `supplier` | string | Fornecedor |
| `contact` | string | Contato |
| `currency` | string | Moeda (padrao: "BRL") |
| `amount` | decimal | Valor |
| `status` | string | Status (padrao: "planejado") |
| `notes` | string | Observacoes |
### Atualizar orcamento
```
PUT /api/project_budgets/{id}
```
### Deletar orcamento
```
DELETE /api/project_budgets/{id}
```
### Upload/Deletar anexos
```
POST /api/project_budgets/{id}/attachments
DELETE /api/project_budgets/{id}/attachments/{attachment_id}
```
---
## 36. Faturas de Orcamento de Projeto
Gerencia notas fiscais/faturas vinculadas a orcamentos de projeto.
### Listar faturas
```
GET /api/project_budget_invoices?project_id={project_id}
GET /api/project_budget_invoices?investment_id={id}
GET /api/project_budget_invoices?budget_id={id}
```
### Obter fatura
```
GET /api/project_budget_invoices/{id}
```
### Criar fatura
```
POST /api/project_budget_invoices
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `project_id` | integer | ID do projeto |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `investment_id` | integer | ID da inversao |
| `budget_ids` | array | IDs dos orcamentos vinculados |
| `invoice_number` | string | Numero da NF |
| `document_type` | string | Tipo (NF, NFe, NFS, NFS-e, Fatura, Recibo, DANFe) |
| `invoice_series` | string | Serie da NF |
| `invoice_key` | string | Chave da NF-e |
| `issue_date` | string | Data de emissao (YYYY-MM-DD) |
| `due_date` | string | Vencimento (YYYY-MM-DD) |
| `supplier` | string | Fornecedor |
| `short_description` | string | Descricao curta |
| `gross_value` | decimal | Valor bruto |
| `net_value` | decimal | Valor liquido |
| `tax_value` | decimal | Valor de impostos |
| `currency` | string | Moeda (padrao: "BRL") |
| `status` | string | Status: "pendente", "aprovado", "pago", "cancelado", "nota_devolucao" |
| `description` | string | Descricao detalhada |
> **Nota**: Status "nota_devolucao" SUBTRAI do total do orcamento.
### Atualizar fatura
```
PUT /api/project_budget_invoices/{id}
```
### Deletar fatura
```
DELETE /api/project_budget_invoices/{id}
```
### Upload/Deletar anexos
```
POST /api/project_budget_invoices/{id}/attachments
DELETE /api/project_budget_invoices/{id}/attachments/{attachment_id}
```
---
## 37. Comprovantes de Pagamento de Projeto
Gerencia comprovantes de pagamentos de faturas de projeto.
### Listar comprovantes
```
GET /api/project_invoice_receipts?project_id={project_id}
GET /api/project_invoice_receipts?investment_id={id}
GET /api/project_invoice_receipts?invoice_id={id}
```
### Obter comprovante
```
GET /api/project_invoice_receipts/{id}
```
### Criar comprovante
```
POST /api/project_invoice_receipts
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `project_id` | integer | ID do projeto |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `investment_id` | integer | ID da inversao |
| `invoice_ids` | array | IDs das faturas vinculadas |
| `short_description` | string | Descricao curta |
| `receipt_type` | string | Tipo do comprovante |
| `payment_date` | string | Data (YYYY-MM-DD) |
| `amount` | decimal | Valor |
| `currency` | string | Moeda (padrao: "BRL") |
| `payment_method` | string | Metodo: "TED", "PIX", "Boleto", "Cheque", "Cartao", "Deposito" |
| `document_number` | string | Numero do documento |
| `status` | string | Status: "pagamento", "reembolso", "desconto" |
| `notes` | string | Observacoes |
> **Nota**: Status "reembolso" e "desconto" SUBTRAEM do total pago.
### Atualizar comprovante
```
PUT /api/project_invoice_receipts/{id}
```
### Deletar comprovante
```
DELETE /api/project_invoice_receipts/{id}
```
### Upload/Deletar anexos
```
POST /api/project_invoice_receipts/{id}/attachments
DELETE /api/project_invoice_receipts/{id}/attachments/{attachment_id}
```
---
## 38. Visao Financeira do Projeto
Endpoints somente leitura para visao consolidada das financas do projeto.
### Visao geral completa
```
GET /api/project_financial_overview/{project_id}
```
Retorna hierarquia completa: inversoes → orcamentos → faturas → comprovantes, com totais e percentuais.
**Dados retornados incluem:**
- Total de inversoes, orcamentos, faturas e pagamentos
- `coverage_percentage`: % do investimento coberto por orcamentos
- `payment_percentage`: % das faturas pagas
- Hierarquia completa com detalhamento
### Resumo por fornecedor
```
GET /api/project_financial_overview/{project_id}/suppliers
```
Agrupa faturas e pagamentos por fornecedor com saldos.
### Itens pendentes
```
GET /api/project_financial_overview/{project_id}/pending
```
Retorna:
- Inversoes sem cobertura de orcamento
- Orcamentos sem faturas
- Faturas nao pagas
---
## 39. Demonstracoes Financeiras do Cliente
Gerencia demonstracoes financeiras (balancos, DRE) de clientes.
### Listar demonstracoes
```
GET /api/client_financial_statements?client_id={client_id}
```
### Obter demonstracao
```
GET /api/client_financial_statements/{id}
```
### Criar demonstracao
```
POST /api/client_financial_statements
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `period_start` | string | Inicio do periodo (YYYY-MM-DD) |
| `period_end` | string | Fim do periodo (YYYY-MM-DD) |
| `fiscal_year` | string | Ano fiscal |
| `type` | string | Tipo da demonstracao |
| `status` | string | Status |
| `currency` | string | Moeda |
| `description` | string | Descricao |
| `notes` | string | Observacoes |
### Atualizar demonstracao
```
PUT /api/client_financial_statements/{id}
```
### Deletar demonstracao
```
DELETE /api/client_financial_statements/{id}
```
---
## 40. Balancos Financeiros do Cliente
### Listar balancos
```
GET /api/client_financial_balances?client_id={client_id}
GET /api/client_financial_balances?financial_statement_id={id}
```
### Obter balanco
```
GET /api/client_financial_balances/{id}
```
### Criar balanco
```
POST /api/client_financial_balances
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
| `financial_statement_id` | integer | ID da demonstracao |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `total_assets` | decimal | Total de ativos |
| `total_liabilities` | decimal | Total de passivos |
| `total_equity` | decimal | Patrimonio liquido |
| `current_assets` | decimal | Ativo circulante |
| `non_current_assets` | decimal | Ativo nao circulante |
| `current_liabilities` | decimal | Passivo circulante |
| `non_current_liabilities` | decimal | Passivo nao circulante |
| `period_start` | string | Inicio do periodo |
| `period_end` | string | Fim do periodo |
| `status` | string | Status |
| `currency` | string | Moeda |
### Atualizar/Deletar
```
PUT /api/client_financial_balances/{id}
DELETE /api/client_financial_balances/{id}
```
---
## 41. DRE do Cliente
Gerencia Demonstrativos de Resultado do Exercicio (DRE).
### Listar DREs
```
GET /api/client_financial_dre?client_id={client_id}
GET /api/client_financial_dre?financial_statement_id={id}
```
### Obter DRE
```
GET /api/client_financial_dre/{id}
```
### Criar DRE
```
POST /api/client_financial_dre
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
| `financial_statement_id` | integer | ID da demonstracao |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `gross_revenue` | decimal | Receita bruta |
| `net_revenue` | decimal | Receita liquida |
| `cost_of_goods_sold` | decimal | Custo dos produtos vendidos (CPV) |
| `gross_profit` | decimal | Lucro bruto |
| `operating_expenses` | decimal | Despesas operacionais |
| `operating_income` | decimal | Resultado operacional |
| `net_income` | decimal | Lucro liquido |
| `ebitda` | decimal | EBITDA |
| `period_start` | string | Inicio do periodo |
| `period_end` | string | Fim do periodo |
| `status` | string | Status |
| `currency` | string | Moeda |
### Atualizar/Deletar
```
PUT /api/client_financial_dre/{id}
DELETE /api/client_financial_dre/{id}
```
---
## 42. Informacoes Bancarias do Cliente
Gerencia contas bancarias dos clientes.
### Listar contas bancarias
```
GET /api/client_bank_info?client_id={client_id}
```
### Obter conta
```
GET /api/client_bank_info/{id}
```
### Criar conta bancaria
```
POST /api/client_bank_info
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `bank_code` | string | Codigo do banco |
| `account_number` | string | Numero da conta |
| `account_type` | string | Tipo da conta |
| `account_holder` | string | Titular |
| `branch_code` | string | Agencia |
| `is_primary` | integer | Conta principal (0/1) |
| `notes` | string | Observacoes |
### Atualizar conta
```
PUT /api/client_bank_info/{id}
```
### Deletar conta
```
DELETE /api/client_bank_info/{id}
```
### Definir como conta principal
```
PUT /api/client_bank_info/{id}/set_primary
```
Remove a flag `is_primary` de outras contas e marca esta.
### Verificar conta
```
PUT /api/client_bank_info/{id}/verify
```
Marca a conta como verificada.
---
## 43. Socios do Cliente
Gerencia socios/acionistas vinculados a clientes (estrutura societaria).
### Listar socios
```
GET /api/client_socios?client_id={client_id}
```
### Obter socio
```
GET /api/client_socios/{id}
```
### Criar socio
```
POST /api/client_socios
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
| `tipo` | string | "pessoa_fisica" ou "empresa" |
**Campos condicionais:**
| Campo | Quando | Descricao |
|-------|--------|-----------|
| `contact_id` | tipo=pessoa_fisica | ID do contato (pessoa) |
| `customer_id` | tipo=empresa | ID da empresa socia |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `capital_social` | decimal | Capital social |
| `percentual_participacao` | decimal | Percentual de participacao (%) |
| `observacoes` | string | Observacoes |
### Atualizar socio
```
PUT /api/client_socios/{id}
```
### Deletar socio
```
DELETE /api/client_socios/{id}
```
### Arvore societaria
```
GET /api/client_socios/tree/{client_id}
```
Retorna a hierarquia completa de propriedade, incluindo socios de socios (quando empresa).
---
## 44. Diretores do Cliente
### Listar diretores
```
GET /api/client_diretores?client_id={client_id}
```
### Criar diretor
```
POST /api/client_diretores
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
| `contact_id` | integer | ID do contato |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `data_inicio` | string | Data de inicio (YYYY-MM-DD) |
| `observacoes` | string | Observacoes |
### Atualizar/Deletar
```
PUT /api/client_diretores/{id}
DELETE /api/client_diretores/{id}
```
---
## 45. Conselho do Cliente
Gerencia membros do conselho de administracao.
### Listar membros
```
GET /api/client_conselho?client_id={client_id}
```
### Criar membro
```
POST /api/client_conselho
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
| `contact_id` | integer | ID do contato |
**Campos opcionais:** `data_inicio`, `observacoes`
### Atualizar/Deletar
```
PUT /api/client_conselho/{id}
DELETE /api/client_conselho/{id}
```
---
## 46. Gerentes do Cliente
### Listar gerentes
```
GET /api/client_gerentes?client_id={client_id}
```
### Criar gerente
```
POST /api/client_gerentes
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
| `contact_id` | integer | ID do contato |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `nivel_hierarquico` | string | Nivel hierarquico |
| `data_inicio` | string | Data inicio (YYYY-MM-DD) |
| `observacoes` | string | Observacoes |
### Atualizar/Deletar
```
PUT /api/client_gerentes/{id}
DELETE /api/client_gerentes/{id}
```
---
## 47. Garantias do Cliente
Gerencia garantias/colaterais dos clientes.
### Listar garantias
```
GET /api/client_guarantees?client_id={client_id}
```
### Obter garantia
```
GET /api/client_guarantees/{id}
```
### Criar garantia
```
POST /api/client_guarantees
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `guarantee_type` | string | Tipo da garantia |
| `guarantee_value` | decimal | Valor |
| `description` | string | Descricao |
| `start_date` | string | Vigencia inicio (YYYY-MM-DD) |
| `end_date` | string | Vigencia fim (YYYY-MM-DD) |
| `reference_number` | string | Numero de referencia |
| `issuing_entity` | string | Entidade emissora |
| `currency` | string | Moeda |
| `status` | string | Status |
| `notes` | string | Observacoes |
### Atualizar/Deletar
```
PUT /api/client_guarantees/{id}
DELETE /api/client_guarantees/{id}
```
---
## 48. Cofre do Cliente (Vault)
Armazenamento seguro de credenciais (servidores, sistemas, etc.).
### Listar entradas
```
GET /api/client_vault_entries?customer_id={customer_id}
```
### Obter entrada
```
GET /api/client_vault_entries/{id}
```
### Criar entrada
```
POST /api/client_vault_entries
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `customer_id` | integer | ID do cliente |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `server_address` | string | Endereco do servidor |
| `port` | string | Porta |
| `username` | string | Usuario |
| `password` | string | Senha |
| `description` | string | Descricao |
| `visibility` | integer | Visibilidade |
| `share_in_projects` | integer | Compartilhar em projetos (0/1) |
### Atualizar/Deletar
```
PUT /api/client_vault_entries/{id}
DELETE /api/client_vault_entries/{id}
```
---
## 49. Documentos CIS
Gerencia documentos de compliance/identificacao vinculados a entidades.
### Listar documentos
```
GET /api/cis_documents?rel_type={tipo}&rel_id={id}
```
**Valores de `rel_type`:** `client`, `contact`, `financial_statement`, `client_guarantee`
### Obter documento
```
GET /api/cis_documents/{id}
```
### Upload de documento
```
POST /api/cis_documents
Content-Type: multipart/form-data
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `rel_type` | string | Tipo da entidade |
| `rel_id` | integer | ID da entidade |
| `document_type` | string | Tipo do documento |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `document_number` | string | Numero do documento |
| `issuing_authority` | string | Orgao emissor |
| `issue_date` | string | Data de emissao (YYYY-MM-DD) |
| `expiry_date` | string | Data de vencimento (YYYY-MM-DD) |
| `notes` | string | Observacoes |
### Atualizar metadados
```
PUT /api/cis_documents/{id}
```
### Deletar documento
```
DELETE /api/cis_documents/{id}
```
### Verificar documento
```
PUT /api/cis_documents/{id}/verify
```
Marca o documento como verificado/autenticado.
### Documentos proximos do vencimento
```
GET /api/cis_documents/expiring?days={30}
```
Retorna documentos que vencem nos proximos N dias (padrao: 30).
### Estatisticas de documentos
```
GET /api/cis_documents/stats?rel_type={tipo}&rel_id={id}
```
Retorna contadores (total, verificados, vencidos, proximos do vencimento).
---
## 50. Historico KYC
Gerencia aprovacoes KYC (Know Your Customer) de clientes e contatos.
### Listar historico
```
GET /api/kyc_approval_history?rel_type={tipo}&rel_id={id}
```
`rel_type`: `client` ou `contact`
### Registrar acao KYC
```
POST /api/kyc_approval_history
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `rel_type` | string | "client" ou "contact" |
| `rel_id` | integer | ID do cliente ou contato |
| `action` | string | "approved", "rejected" ou "pending_review" |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `risk_level` | string | Nivel de risco |
| `compliance_score` | integer | Pontuacao de compliance |
| `notes` | string | Observacoes |
### Ultimo status KYC
```
GET /api/kyc_approval_history/latest?rel_type={tipo}&rel_id={id}
```
### Estatisticas globais KYC
```
GET /api/kyc_approval_history/stats
```
Retorna contadores globais de aprovacoes, rejeicoes e pendentes.
---
## 51. Extrato do Cliente
### Obter extrato
```
GET /api/customer_statement/{client_id}
GET /api/customer_statement/{client_id}?from=2025-01-01&to=2025-12-31
```
**Parametros opcionais (query string):**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `from` | string | Data inicio (YYYY-MM-DD) |
| `to` | string | Data fim (YYYY-MM-DD) |
Retorna faturas, pagamentos e totais do periodo.
---
## 52. Tickets de Suporte
Gerencia tickets de atendimento.
### Listar tickets
```
GET /api/tickets
```
### Obter ticket
```
GET /api/tickets/{id}
```
### Buscar tickets
```
GET /api/tickets/search/{palavra_chave}
```
### Criar ticket
```
POST /api/tickets
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `subject` | string | Assunto |
| `department` | integer | ID do departamento |
| `contactid` | integer | ID do contato |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `priority` | integer | Prioridade (1=Baixa, 2=Media, 3=Alta) |
| `service` | integer | ID do servico |
| `assigned` | integer | ID do funcionario |
| `message` | string | Mensagem inicial |
| `tags` | string | Tags separadas por virgula |
| `custom_fields` | object | Campos personalizados |
### Atualizar ticket
```
PUT /api/tickets/{id}
```
### Deletar ticket
```
DELETE /api/tickets/{id}
```
---
## 53. Funcionarios (Staff)
Gerencia funcionarios/usuarios do sistema.
### Listar funcionarios
```
GET /api/staffs
```
### Obter funcionario
```
GET /api/staffs/{id}
```
### Buscar funcionarios
```
GET /api/staffs/search/{palavra_chave}
```
### Criar funcionario
```
POST /api/staffs
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `firstname` | string | Nome |
| `email` | string | Email |
| `password` | string | Senha |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `lastname` | string | Sobrenome |
| `hourly_rate` | decimal | Valor por hora |
| `phonenumber` | string | Telefone |
| `departments` | array | IDs de departamentos |
| `role` | integer | ID do cargo |
| `is_admin` | integer | Administrador (0/1) |
| `custom_fields` | object | Campos personalizados |
### Atualizar funcionario
```
PUT /api/staffs/{id}
```
### Deletar funcionario
```
DELETE /api/staffs/{id}
```
---
## 54. Departamentos
### Listar departamentos
```
GET /api/departments
```
### Criar departamento
```
POST /api/departments
```
Campo obrigatorio: `name` (string)
### Atualizar/Deletar
```
PUT /api/departments/{id}
DELETE /api/departments/{id}
```
---
## 55. Cargos (Roles)
### Listar cargos
```
GET /api/roles
```
### Criar cargo
```
POST /api/roles
```
Campo obrigatorio: `name` (string)
### Atualizar/Deletar
```
PUT /api/roles/{id}
DELETE /api/roles/{id}
```
---
## 56. Itens/Produtos
Gerencia itens do catalogo usados em faturas/orcamentos. **Somente leitura na API.**
### Listar itens
```
GET /api/items
```
### Obter item
```
GET /api/items/{id}
```
### Buscar itens
```
GET /api/items/search/{palavra_chave}
```
---
## 57. Moedas (Currencies)
### Listar moedas
```
GET /api/currencies
```
### Criar moeda
```
POST /api/currencies
```
### Atualizar/Deletar
```
PUT /api/currencies/{id}
DELETE /api/currencies/{id}
```
---
## 58. Impostos (Taxes)
### Listar impostos
```
GET /api/taxes
```
### Criar/Atualizar/Deletar
```
POST /api/taxes
PUT /api/taxes/{id}
DELETE /api/taxes/{id}
```
---
## 59. Paises (Countries)
**Somente leitura.**
### Listar paises
```
GET /api/countries
```
### Obter pais
```
GET /api/countries/{id}
```
---
## 60. Modos de Pagamento
### Listar modos
```
GET /api/payment_modes
```
### Criar/Atualizar/Deletar
```
POST /api/payment_modes
PUT /api/payment_modes/{id}
DELETE /api/payment_modes/{id}
```
---
## 61. Campos Personalizados (Custom Fields)
**Somente leitura.** Consulta campos personalizados configurados no sistema.
### Listar campos de um tipo
```
GET /api/custom_fields/{type}
```
**Tipos validos:** `Company`, `Leads`, `Customers`, `Contacts`, `Staff`, `Contracts`, `Tasks`, `Expenses`, `Invoice`, `Items`, `Note`, `Estimate`, `Contract`, `Proposal`, `Projects`, `Tickets`
### Obter valores de campos de uma entidade
```
GET /api/custom_fields/{type}/{entity_id}
```
**Exemplo:**
```
GET /api/custom_fields/Customers/5
```
Retorna campos personalizados e seus valores para o cliente ID 5.
> **Nota para Agente IA**: Ao criar/atualizar entidades, envie custom fields assim:
> ```json
> {
> "custom_fields": {
> "customers": {
> "1": "Valor do campo 1",
> "2": "Valor do campo 2"
> }
> }
> }
> ```
> Onde as chaves internas (1, 2) sao os IDs dos campos personalizados.
---
## 62. Calendario
Gerencia eventos do calendario.
### Listar eventos
```
GET /api/calendar
```
### Obter evento
```
GET /api/calendar/{id}
```
### Criar evento
```
POST /api/calendar
```
**Campos obrigatorios:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `title` | string | Titulo do evento |
| `start` | string | Data/hora inicio (YYYY-MM-DD HH:MM:SS) |
| `reminder_before` | integer | Lembrete (numero) |
| `reminder_before_type` | string | Tipo: "minutes", "hours", "days", "weeks" |
| `userid` | integer | ID do funcionario |
**Campos opcionais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `description` | string | Descricao |
| `end` | string | Data/hora fim |
| `color` | string | Cor hex (padrao: "#28B8DA") |
| `public` | integer | Evento publico (0/1) |
### Atualizar/Deletar
```
PUT /api/calendar/{id}
DELETE /api/calendar/{id}
```
---
## 63. Assinaturas (Subscriptions)
### Listar/Obter/Criar/Atualizar/Deletar
```
GET /api/subscriptions
GET /api/subscriptions/{id}
POST /api/subscriptions
PUT /api/subscriptions/{id}
DELETE /api/subscriptions/{id}
```
---
## 64. Pesquisas (Surveys)
### Listar/Obter/Criar/Deletar
```
GET /api/surveys
GET /api/surveys/{id}
POST /api/surveys
DELETE /api/surveys/{id}
```
> **Nota**: Nao suporta PUT (atualizacao).
---
## 65. Lembretes (Reminders)
### Listar/Obter/Criar/Deletar
```
GET /api/reminders
GET /api/reminders/{id}
POST /api/reminders
DELETE /api/reminders/{id}
```
> **Nota**: Nao suporta PUT (atualizacao).
---
## 66. Metas (Goals) - Expandido
### CRUD Basico
```
GET /api/goals - Listar goals (com filtros e paginacao)
GET /api/goals/{id} - Obter goal com achievement, tags, members, category
POST /api/goals - Criar goal (aceita tags[], members[], milestones[], kpis[])
PUT /api/goals/{id} - Atualizar goal (aceita tags[], members[])
DELETE /api/goals/{id} - Deletar goal
```
### Query Params (GET /api/goals)
| Param | Tipo | Descricao |
|-------|------|-----------|
| status | string | Filtrar por status (active, completed, cancelled) |
| category_id | int | Filtrar por categoria |
| priority | int | Filtrar por prioridade (1-5) |
| staff_id | int | Filtrar por staff |
| goal_type | int | Filtrar por tipo de goal |
| date_from | date | Data inicio (YYYY-MM-DD) |
| date_to | date | Data fim (YYYY-MM-DD) |
| search | string | Busca no subject/description |
| tag_ids | string | IDs de tags separados por virgula |
| page | int | Pagina (default 1) |
| per_page | int | Itens por pagina (default 20) |
| sort_by | string | Campo para ordenacao |
| sort_dir | string | ASC ou DESC |
### Campos Adicionais (POST/PUT)
| Campo | Tipo | Descricao |
|-------|------|-----------|
| priority | int | Prioridade 1-5 (default 3) |
| category_id | int | ID da categoria |
| parent_goal_id | int | ID do goal pai |
| recurring | int | 0 ou 1 |
| recurring_type | string | daily, weekly, monthly, yearly |
| recurring_value | int | Intervalo de recorrencia |
| total_cycles | int | Total de ciclos (0 = infinito) |
| tags | array | Array de tag IDs |
| members | array | Array de staff IDs |
| milestones | array | Array de objetos {name, target_percentage, ...} |
| kpis | array | Array de objetos {name, target_value, unit, ...} |
### Endpoints Especiais
```
GET /api/goals/{id}/achievement - Retorna calculo de achievement (total, percent, progress_bar_percent)
GET /api/goals/{id}/summary - Retorna goal completo com achievement, milestones, tags, members, kpis, notas
GET /api/goals/types - Lista tipos de goal disponiveis
GET /api/goals/staff/{staff_id} - Lista goals de um staff especifico
POST /api/goals/{id}/notify - Enviar notificacao (body: notify_type=success|failed)
```
---
## 73. Categorias de Goals (Goal Categories)
### CRUD
```
GET /api/goal_categories - Listar categorias
GET /api/goal_categories/{id} - Obter categoria
POST /api/goal_categories - Criar categoria (name obrigatorio)
PUT /api/goal_categories/{id} - Atualizar categoria
DELETE /api/goal_categories/{id} - Deletar categoria
```
**Campos:** name (required), description, color, sort_order
---
## 74. Tags de Goals (Goal Tags)
### CRUD
```
GET /api/goal_tags - Listar tags
GET /api/goal_tags/{id} - Obter tag
POST /api/goal_tags - Criar tag (name obrigatorio, unique)
PUT /api/goal_tags/{id} - Atualizar tag
DELETE /api/goal_tags/{id} - Deletar tag
```
**Campos:** name (required, unique), color
---
## 75. Milestones de Goals (Goal Milestones)
### CRUD
```
GET /api/goal_milestones - Listar milestones (?goal_id=X obrigatorio)
GET /api/goal_milestones/{id} - Obter milestone
POST /api/goal_milestones - Criar milestone
PUT /api/goal_milestones/{id} - Atualizar milestone
DELETE /api/goal_milestones/{id} - Deletar milestone
```
**Campos:** goal_id (required), name (required), description, target_percentage (DECIMAL), sort_order, notify_on_reach (0/1)
---
## 76. Notas de Goals (Goal Notes)
### CRUD
```
GET /api/goal_notes - Listar notas (?goal_id=X obrigatorio)
GET /api/goal_notes/{id} - Obter nota
POST /api/goal_notes - Criar nota (staff_id auto se nao informado)
PUT /api/goal_notes/{id} - Atualizar nota
DELETE /api/goal_notes/{id} - Deletar nota
```
**Campos:** goal_id (required), content (required), staff_id, note_type (default: comment)
---
## 77. Membros de Goals (Goal Members)
### Endpoints
```
GET /api/goal_members/{goal_id} - Listar membros do goal
POST /api/goal_members - Adicionar membro (goal_id + staff_id)
DELETE /api/goal_members/{goal_id}/{staff_id} - Remover membro
POST /api/goal_members/bulk - Sincronizar membros (goal_id + staff_ids[])
```
---
## 78. Progresso de Goals (Goal Progress)
### Endpoints
```
GET /api/goal_progress/{goal_id} - Historico de progresso (?limit=50)
POST /api/goal_progress - Registrar snapshot de progresso (goal_id)
GET /api/goal_progress/{goal_id}/chart - Dados formatados para grafico (labels + values)
```
---
## 79. Templates de Goals (Goal Templates)
### CRUD
```
GET /api/goal_templates - Listar templates
GET /api/goal_templates/{id} - Obter template
POST /api/goal_templates - Criar template (is_template=1 automatico)
PUT /api/goal_templates/{id} - Atualizar template
DELETE /api/goal_templates/{id} - Deletar template
POST /api/goal_templates/create_from - Criar goal a partir de template (template_id + overrides)
```
---
## 80. KPIs de Goals (Goal KPIs)
### CRUD
```
GET /api/goal_kpis - Listar KPIs (?goal_id=X)
GET /api/goal_kpis/{id} - Obter KPI
POST /api/goal_kpis - Criar KPI
PUT /api/goal_kpis/{id} - Atualizar KPI
DELETE /api/goal_kpis/{id} - Deletar KPI
```
**Campos:** goal_id (required), name (required), description, target_value, current_value, unit, sort_order
---
## 81. Lead Scoring
### Criterios
```
GET /api/lead_scoring/criteria - Listar criterios (enriched)
GET /api/lead_scoring/criteria/{id} - Obter criterio detalhado
POST /api/lead_scoring/criteria - Criar criterio
PUT /api/lead_scoring/criteria/{id} - Atualizar criterio
DELETE /api/lead_scoring/criteria/{id} - Deletar criterio
```
### Scores
```
GET /api/lead_scoring/scores - Listar todos os scores (?min_score=X&max_score=Y)
GET /api/lead_scoring/scores/{lead_id} - Score de um lead especifico
GET /api/lead_scoring/scores/{lead_id}/breakdown - Detalhamento do score (quais criterios aplicados)
```
### Operacoes
```
POST /api/lead_scoring/recalculate - Recalcular scores (body: lead_ids[] ou vazio para bulk)
GET /api/lead_scoring/operators - Listar operadores disponiveis (is, is_not, contains, etc)
GET /api/lead_scoring/available_criteria - Listar criterios possiveis (built-in + custom fields)
```
### Exemplo de Breakdown Response
```json
{
"lead_id": 42,
"total_score": 78,
"breakdown": [
{
"flexibleleadscore_criteria": "lead-source",
"flexibleleadscore_display_value": "Website",
"calculated_score": 30
},
{
"flexibleleadscore_criteria": "lead-status",
"flexibleleadscore_display_value": "Qualified",
"calculated_score": 48
}
]
}
```
---
## 82. Leads - Novos Endpoints e Lead Score
### Lead Score Integrado
Todos os endpoints de Leads agora retornam o campo `lead_score` automaticamente:
```
GET /api/leads - Lista com lead_score em cada lead
GET /api/leads/{id} - Lead individual com lead_score
GET /api/leads/search/{key} - Busca com lead_score
POST /api/leads - Resposta inclui lead_score calculado
PUT /api/leads/{id} - Recalcula e retorna lead_score atualizado
```
### Filtro Avancado de Leads
```
GET /api/leads/filter
```
| Param | Tipo | Descricao |
|-------|------|-----------|
| min_score | int | Score minimo |
| max_score | int | Score maximo |
| status | int | Status do lead |
| source | int | Fonte do lead |
| assigned | int | Staff atribuido |
| search | string | Busca por nome/email/empresa |
| sort_by | string | Ordenar por: dateadded, name, company, email, lastcontact, lead_value, score |
| sort_dir | string | ASC ou DESC |
| limit | int | Limite (default 50) |
| offset | int | Offset (default 0) |
### Exemplo
```
GET /api/leads/filter?min_score=50&sort_by=score&sort_dir=DESC&limit=20
```
---
## 83. Multi-Pipeline - Novos Endpoints com Lead Score
### Lead Score na Movimentacao
```
POST /api/multi_pipeline/leads/move - Resposta agora inclui lead_score
GET /api/multi_pipeline/leads/history/{lead_id} - Resposta inclui lead_score atual
```
### Leads por Pipeline com Score
```
GET /api/multi_pipeline/leads/pipeline/{pipeline_id}
```
| Param | Tipo | Descricao |
|-------|------|-----------|
| min_score | int | Filtrar score minimo |
| max_score | int | Filtrar score maximo |
Retorna lista de leads do pipeline com `lead_score` e `stage_name`, ordenados por score DESC.
---
## Integracao Visual do Lead Score
O Lead Score agora aparece visualmente em:
- **Kanban de Leads** (/admin/leads) - Badge colorido em cada card
- **Kanban Multi-Pipeline** (/admin/multi_pipeline) - Mesmo badge (compartilham template)
- **Lista/Tabela de Leads** - Coluna "Lead Score" com badge colorido
- **Tabela Multi-Pipeline Summary** - Coluna "Score" com badge colorido
**Cores do badge:**
- Vermelho: score < 30
- Amarelo: score 30-70
- Verde: score > 70
## 67. Anuncios (Announcements)
### Listar/Obter/Criar/Atualizar/Deletar
```
GET /api/announcements
GET /api/announcements/{id}
POST /api/announcements
PUT /api/announcements/{id}
DELETE /api/announcements/{id}
```
---
## 68. Base de Conhecimento
### Listar/Obter/Criar/Atualizar/Deletar
```
GET /api/knowledge_base
GET /api/knowledge_base/{id}
POST /api/knowledge_base
PUT /api/knowledge_base/{id}
DELETE /api/knowledge_base/{id}
```
---
## 69. Arquivos (Files)
Gerencia arquivos vinculados a entidades.
### Listar arquivos de uma entidade
```
GET /api/files?rel_type={tipo}&rel_id={id}
```
### Deletar arquivo
```
DELETE /api/files/{id}
```
> **Nota**: Upload via API nao esta totalmente implementado (retorna 501). Use os endpoints de attachments dos controllers especificos (contract_deliveries, project_investments, etc.).
---
## 70. Relatorios (Reports)
**Somente leitura.**
### Obter relatorio
```
GET /api/reports
GET /api/reports/{type}
```
---
## 71. Marketing Assets do Cliente (Client Marketing Assets)
Gerencia os dados de marketing dos clientes (relacao 1:1 com cliente). Inclui identidade de marca, identidade visual, redes sociais, publico-alvo, personas, estrategias de funil, inbound, outbound, diretrizes da marca e arquivos. Permite exportar tudo como Manual de Marketing em PDF.
### Obter marketing assets por client_id
```
GET /api/client_marketing_assets?client_id={client_id}
```
### Obter marketing assets por ID
```
GET /api/client_marketing_assets/{id}
```
### Criar/Atualizar marketing assets (Upsert)
```
POST /api/client_marketing_assets
```
> **Nota**: Este endpoint faz upsert - se ja existir um registro para o `client_id`, ele atualiza ao inves de criar duplicata.
**Campo obrigatorio:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `client_id` | integer | ID do cliente |
**Campos opcionais - Identidade da Marca:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `company_description` | text | Descricao da empresa |
| `slogan` | string(500) | Slogan |
| `mission` | text | Missao |
| `vision` | text | Visao |
| `values` | text | Valores |
| `industry` | string(191) | Industria/Setor |
| `market_segment` | string(191) | Segmento de mercado |
| `differentials` | text | Diferenciais |
| `brand_story` | text | Historia da marca |
**Campos opcionais - Identidade Visual:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `color_primary` | string(10) | Cor primaria (hex, ex: #336699) |
| `color_secondary` | string(10) | Cor secundaria |
| `color_accent` | string(10) | Cor de acento |
| `color_background` | string(10) | Cor de fundo |
| `color_text` | string(10) | Cor do texto |
| `font_primary` | string(100) | Fonte primaria |
| `font_secondary` | string(100) | Fonte secundaria |
| `font_headings` | string(100) | Fonte para titulos |
**Campos opcionais - Redes Sociais:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `website` | string(500) | URL do website |
| `facebook` | string(500) | URL do Facebook |
| `instagram` | string(500) | URL do Instagram |
| `linkedin` | string(500) | URL do LinkedIn |
| `twitter` | string(500) | URL do Twitter/X |
| `youtube` | string(500) | URL do YouTube |
| `tiktok` | string(500) | URL do TikTok |
| `pinterest` | string(500) | URL do Pinterest |
| `threads` | string(500) | URL do Threads |
| `whatsapp` | string(50) | Numero do WhatsApp |
| `telegram` | string(500) | URL do Telegram |
| `other_social` | text | Outras redes sociais |
**Campos opcionais - Publico-Alvo e Personas:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `target_age_range` | string(100) | Faixa etaria (ex: 25-45 anos) |
| `target_gender` | string(50) | Genero |
| `target_income_level` | string(100) | Nivel de renda |
| `target_geographic` | string(500) | Regiao geografica |
| `target_interests` | text | Interesses do publico |
| `target_description` | text | Descricao do publico-alvo |
| `persona_1_name` | string(191) | Nome da Persona 1 |
| `persona_1_description` | text | Descricao da Persona 1 |
| `persona_1_pain_points` | text | Dores da Persona 1 |
| `persona_1_goals` | text | Objetivos da Persona 1 |
| `persona_2_name` | string(191) | Nome da Persona 2 |
| `persona_2_description` | text | Descricao da Persona 2 |
| `persona_2_pain_points` | text | Dores da Persona 2 |
| `persona_2_goals` | text | Objetivos da Persona 2 |
| `persona_3_name` | string(191) | Nome da Persona 3 |
| `persona_3_description` | text | Descricao da Persona 3 |
| `persona_3_pain_points` | text | Dores da Persona 3 |
| `persona_3_goals` | text | Objetivos da Persona 3 |
**Campos opcionais - Estrategias de Funil:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `funnel_tofu_strategy` | text | Estrategia Topo de Funil |
| `funnel_tofu_channels` | text | Canais ToFu |
| `funnel_tofu_content_types` | text | Tipos de conteudo ToFu |
| `funnel_tofu_kpis` | text | KPIs do ToFu |
| `funnel_mofu_strategy` | text | Estrategia Meio de Funil |
| `funnel_mofu_channels` | text | Canais MoFu |
| `funnel_mofu_content_types` | text | Tipos de conteudo MoFu |
| `funnel_mofu_kpis` | text | KPIs do MoFu |
| `funnel_bofu_strategy` | text | Estrategia Fundo de Funil |
| `funnel_bofu_channels` | text | Canais BoFu |
| `funnel_bofu_content_types` | text | Tipos de conteudo BoFu |
| `funnel_bofu_kpis` | text | KPIs do BoFu |
**Campos opcionais - Estrategias Inbound:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `inbound_seo_strategy` | text | Estrategia SEO e palavras-chave |
| `inbound_content_strategy` | text | Estrategia de conteudo |
| `inbound_lead_magnets` | text | Lead magnets / iscas digitais |
| `inbound_email_flows` | text | Fluxos de email / automacao |
| `inbound_cta_primary` | text | CTA principal |
| `inbound_cta_secondary` | text | CTA secundario |
| `inbound_cta_lead_capture` | text | CTA de captura de leads |
| `inbound_landing_pages` | text | Landing pages |
| `inbound_social_strategy` | text | Estrategia social organica |
| `inbound_blog_categories` | text | Categorias do blog |
**Campos opcionais - Estrategias Outbound:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `outbound_cold_email` | text | Cold email / cadencias |
| `outbound_cold_call_script` | text | Script de cold call |
| `outbound_linkedin_strategy` | text | Abordagem LinkedIn |
| `outbound_paid_ads_strategy` | text | Midia paga (Google/Meta/LinkedIn Ads) |
| `outbound_events_strategy` | text | Eventos e networking |
| `outbound_partnerships` | text | Parcerias e co-marketing |
| `outbound_referral_program` | text | Programa de indicacao |
| `outbound_direct_mail` | text | Mala direta / brindes |
**Campos opcionais - Diretrizes da Marca:**
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `tone_of_voice` | string(191) | Tom de voz |
| `brand_personality` | text | Personalidade da marca |
| `brand_dos` | text | O que fazer (comunicacao) |
| `brand_donts` | text | O que nao fazer (comunicacao) |
| `brand_hashtags` | text | Hashtags da marca |
| `brand_notes` | text | Observacoes gerais |
### Atualizar marketing assets
```
PUT /api/client_marketing_assets/{id}
```
Envia JSON no body com os campos a atualizar. Campos protegidos (`id`, `client_id`, `dateadded`, `addedfrom`) sao ignorados.
### Deletar marketing assets
```
DELETE /api/client_marketing_assets/{id}
```
Deleta o registro e todos os arquivos vinculados.
### Listar arquivos de marketing
```
GET /api/client_marketing_assets/{id}/files
```
Retorna array de arquivos (logos, manuais, materiais) vinculados ao registro.
### Upload de arquivo
```
POST /api/client_marketing_assets/{id}/files
```
**Content-Type:** `multipart/form-data`
| Campo | Tipo | Descricao |
|-------|------|-----------|
| `file` | file | Arquivo para upload (max 10MB) |
| `document_type` | string | Tipo: Logo Principal, Logo Horizontal, Logo Vertical, Logo Icone, Logo Fundo Branco, Logo Fundo Escuro, Manual de Marca, Material de Marketing, Apresentacao Institucional, Cartao de Visita, Papelaria, Outro |
### Deletar arquivo
```
DELETE /api/client_marketing_assets/{id}/files/{file_id}
```
### Exportar Manual de Marketing em PDF
```
GET /api/client_marketing_assets/{id}/pdf
```
Retorna PDF completo (9 paginas) com: capa, identidade da marca, identidade visual com paleta de cores, publico-alvo e personas, estrategia de funil (ToFu/MoFu/BoFu), estrategias inbound, estrategias outbound, diretrizes da marca e presenca digital.
**Exemplo de fluxo completo:**
```
1. POST /api/client_marketing_assets → Criar/atualizar dados (com client_id + campos)
2. POST /api/client_marketing_assets/1/files → Upload de logo e materiais
3. GET /api/client_marketing_assets/1/files → Listar arquivos
4. GET /api/client_marketing_assets/1/pdf → Exportar Manual de Marketing em PDF
5. GET /api/client_marketing_assets?client_id=1 → Consultar todos os dados
6. PUT /api/client_marketing_assets/1 → Atualizar campos especificos
7. DELETE /api/client_marketing_assets/1/files/5 → Remover arquivo
8. DELETE /api/client_marketing_assets/1 → Remover tudo
```
---
## 72. Senhas da Equipe (Team Passwords)
Gerencia senhas da equipe organizadas por categorias e 6 tipos diferentes: normal, bank_account, credit_card, email, server e software_license.
### 72.1 Categorias
#### Listar Categorias
```
GET /api/team_passwords/categories
Authorization: Bearer {token}
```
**Resposta:** Array de categorias
```json
[
{
"id": "1",
"name": "Servidores Producao",
"description": "Senhas dos servidores de producao",
"parent_id": "0"
}
]
```
#### Obter Categoria por ID
```
GET /api/team_passwords/categories/{id}
Authorization: Bearer {token}
```
#### Criar Categoria
```
POST /api/team_passwords/categories
Authorization: Bearer {token}
Content-Type: application/x-www-form-urlencoded
```
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da categoria |
| description | string | Nao | Descricao |
| parent_id | integer | Nao | ID da categoria pai (para subcategorias) |
#### Atualizar Categoria
```
PUT /api/team_passwords/categories/{id}
Authorization: Bearer {token}
Content-Type: application/json
```
Enviar JSON com os campos a atualizar (name, description, parent_id).
#### Deletar Categoria
```
DELETE /api/team_passwords/categories/{id}
Authorization: Bearer {token}
```
**Atencao:** Deletar uma categoria remove TODOS os itens de senha dentro dela (cascata).
---
### 72.2 Entradas de Senha
Todos os endpoints de senha seguem o padrao:
```
/api/team_passwords/{type}
/api/team_passwords/{type}/{id}
```
Onde `{type}` pode ser: `normal`, `bank_account`, `credit_card`, `email`, `server`, `software_license`
#### Listar Entradas
```
GET /api/team_passwords/{type}
Authorization: Bearer {token}
```
**Filtrar por categoria:**
```
GET /api/team_passwords/{type}?mgt_id={category_id}
```
#### Obter Entrada por ID
```
GET /api/team_passwords/{type}/{id}
Authorization: Bearer {token}
```
#### Criar Entrada
```
POST /api/team_passwords/{type}
Authorization: Bearer {token}
Content-Type: application/x-www-form-urlencoded
```
#### Atualizar Entrada
```
PUT /api/team_passwords/{type}/{id}
Authorization: Bearer {token}
Content-Type: application/json
```
#### Deletar Entrada
```
DELETE /api/team_passwords/{type}/{id}
Authorization: Bearer {token}
```
---
### 72.3 Campos por Tipo
#### Normal
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da entrada |
| url | string | Nao | URL do servico |
| user_name | string | Nao | Nome de usuario |
| password | string | Nao | Senha (criptografada automaticamente) |
| notice | string | Nao | Observacoes |
| mgt_id | integer | Nao | ID da categoria |
| enable_log | string | Nao | Habilitar log de acesso |
| relate_to | string | Nao | Tipo de relacao (contract/project) |
| relate_id | string | Nao | ID(s) do relacionamento |
#### Bank Account (Conta Bancaria)
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da entrada |
| url | string | Nao | URL do banco online |
| user_name | string | Nao | Usuario do banco |
| pin | string | Nao | PIN (criptografado automaticamente) |
| bank_name | string | Nao | Nome do banco |
| bank_code | string | Nao | Codigo do banco |
| account_holder | string | Nao | Titular da conta |
| account_number | string | Nao | Numero da conta |
| iban | string | Nao | IBAN |
| notice | string | Nao | Observacoes |
| password | string | Nao | Senha adicional |
| mgt_id | integer | Nao | ID da categoria |
| enable_log | string | Nao | Habilitar log |
| relate_to | string | Nao | Tipo de relacao |
| relate_id | string | Nao | ID(s) do relacionamento |
#### Credit Card (Cartao de Credito)
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da entrada |
| pin | string | Nao | PIN (criptografado automaticamente) |
| credit_card_type | string | Nao | Tipo do cartao (Visa, Mastercard, etc) |
| card_number | string | Nao | Numero do cartao |
| card_cvc | string | Nao | Codigo CVC |
| valid_from | date | Nao | Validade inicio (YYYY-MM-DD) |
| valid_to | date | Nao | Validade fim (YYYY-MM-DD) |
| notice | string | Nao | Observacoes |
| password | string | Nao | Senha adicional |
| mgt_id | integer | Nao | ID da categoria |
| enable_log | string | Nao | Habilitar log |
| relate_to | string | Nao | Tipo de relacao |
| relate_id | string | Nao | ID(s) do relacionamento |
#### Email
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da entrada |
| user_name | string | Nao | Nome de usuario |
| email_type | string | Nao | Tipo de email |
| auth_method | string | Nao | Metodo de autenticacao |
| host | string | Nao | Servidor de entrada |
| port | string | Nao | Porta de entrada |
| smtp_auth_method | string | Nao | Metodo auth SMTP |
| smtp_host | string | Nao | Servidor SMTP |
| smtp_port | string | Nao | Porta SMTP |
| smtp_user_name | string | Nao | Usuario SMTP |
| smtp_password | string | Nao | Senha SMTP (criptografada) |
| password | string | Nao | Senha (criptografada) |
| notice | string | Nao | Observacoes |
| mgt_id | integer | Nao | ID da categoria |
| enable_log | string | Nao | Habilitar log |
| relate_to | string | Nao | Tipo de relacao |
| relate_id | string | Nao | ID(s) do relacionamento |
#### Server (Servidor)
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da entrada |
| user_name | string | Nao | Nome de usuario |
| host | string | Nao | Endereco do servidor |
| port | string | Nao | Porta |
| password | string | Nao | Senha (criptografada) |
| notice | string | Nao | Observacoes |
| mgt_id | integer | Nao | ID da categoria |
| enable_log | string | Nao | Habilitar log |
| relate_to | string | Nao | Tipo de relacao |
| relate_id | string | Nao | ID(s) do relacionamento |
#### Software License (Licenca de Software)
| Campo | Tipo | Obrigatorio | Descricao |
|-------|------|-------------|-----------|
| name | string | Sim | Nome da entrada |
| version | string | Nao | Versao do software |
| url | string | Nao | URL do fornecedor |
| license_key | string | Nao | Chave de licenca |
| host | string | Nao | Host do servidor de licenca |
| port | string | Nao | Porta |
| password | string | Nao | Senha |
| notice | string | Nao | Observacoes |
| mgt_id | integer | Nao | ID da categoria |
| enable_log | string | Nao | Habilitar log |
| relate_to | string | Nao | Tipo de relacao |
| relate_id | string | Nao | ID(s) do relacionamento |
---
### 72.4 Notas Importantes
- **Criptografia:** Os campos `password`, `pin` e `smtp_password` sao criptografados automaticamente com AES-256 ao criar/atualizar
- **Categorias em cascata:** Deletar uma categoria remove todas as subcategorias e senhas contidas
- **Compartilhamento automatico:** Ao vincular uma senha a um contrato/projeto, ela e automaticamente compartilhada com o contato principal do cliente
- **Permissoes:** Na tela de API Keys, habilite as permissoes de Team Passwords (get, post, put, delete, categories_get, categories_post, categories_put, categories_delete)
### 72.5 Exemplos de Uso
```
# Listar todas as categorias
curl -H "Authorization: Bearer {token}" https://dominio/p4/api/team_passwords/categories
# Criar categoria
curl -X POST -H "Authorization: Bearer {token}" \\
-d "name=Servidores&description=Senhas de servidores" \\
https://dominio/p4/api/team_passwords/categories
# Criar senha normal
curl -X POST -H "Authorization: Bearer {token}" \\
-d "name=AWS Console&url=https://aws.amazon.com&user_name=admin&password=s3cr3t&mgt_id=1" \\
https://dominio/p4/api/team_passwords/normal
# Listar senhas normais de uma categoria
curl -H "Authorization: Bearer {token}" https://dominio/p4/api/team_passwords/normal?mgt_id=1
# Obter senha por ID
curl -H "Authorization: Bearer {token}" https://dominio/p4/api/team_passwords/normal/5
# Atualizar senha
curl -X PUT -H "Authorization: Bearer {token}" \\
-H "Content-Type: application/json" \\
-d '{"name":"AWS Console Prod","password":"n3wP@ss"}' \\
https://dominio/p4/api/team_passwords/normal/5
# Deletar senha
curl -X DELETE -H "Authorization: Bearer {token}" https://dominio/p4/api/team_passwords/normal/5
# Criar conta bancaria
curl -X POST -H "Authorization: Bearer {token}" \\
-d "name=Conta Empresa&bank_name=Banco do Brasil&account_number=12345-6&pin=1234&mgt_id=2" \\
https://dominio/p4/api/team_passwords/bank_account
# Criar cartao de credito
curl -X POST -H "Authorization: Bearer {token}" \\
-d "name=Visa Corp&credit_card_type=Visa&card_number=4111111111111111&card_cvc=123&pin=5678&valid_to=2027-12-31" \\
https://dominio/p4/api/team_passwords/credit_card
# Criar servidor
curl -X POST -H "Authorization: Bearer {token}" \\
-d "name=Prod Server&host=10.0.0.1&port=22&user_name=root&password=s3rv3r_p@ss" \\
https://dominio/p4/api/team_passwords/server
```
---
\
## Apendice A: Tipos de Arquivo Permitidos para Upload
Para todos os endpoints que aceitam upload de arquivo:
| Tipo | Extensoes |
|------|-----------|
| Imagens | gif, jpg, jpeg, png |
| Documentos | pdf, doc, docx, xls, xlsx, txt |
| Compactados | zip, rar |
| Fiscal | xml (apenas para faturas de projeto) |
**Tamanho maximo:** 20MB por arquivo
---
## Apendice B: Fluxos de Trabalho Comuns
### B.1 Criar um projeto completo com tarefas
```
1. POST /api/customers → Criar cliente (obter client_id)
2. POST /api/contacts → Criar contato do cliente
3. POST /api/projects → Criar projeto vinculado ao cliente
4. POST /api/milestones → Criar marcos do projeto
5. POST /api/tasks → Criar tarefas vinculadas ao projeto
6. POST /api/task_assignees → Atribuir responsaveis as tarefas
7. POST /api/task_checklist → Criar checklist nas tarefas
```
### B.2 Faturar um cliente
```
1. GET /api/customers/{id} → Verificar dados do cliente
2. GET /api/items → Listar itens disponiveis
3. POST /api/invoices → Criar fatura com itens
4. POST /api/payments → Registrar pagamento
```
### B.3 Gestao completa de contrato
```
1. POST /api/contracts → Criar contrato
2. POST /api/contract_items → Adicionar itens ao contrato
3. POST /api/contract_deliveries → Registrar entregas
4. POST /api/contract_invoices → Emitir faturas
5. POST /api/contract_invoice_payments → Registrar pagamentos
6. GET /api/contract_items/summary/{id} → Ver resumo de execucao
```
### B.4 Pipeline de leads
```
1. POST /api/multi_pipeline/pipelines → Criar pipeline
2. POST /api/multi_pipeline/stages → Criar estagios
3. POST /api/leads → Criar leads
4. POST /api/multi_pipeline/leads/move → Mover leads entre estagios
5. GET /api/multi_pipeline/leads/history/{id} → Ver historico
```
### B.5 Comprovacao financeira de projeto
```
1. POST /api/project_investments → Registrar inversao/financiamento
2. POST /api/project_budgets → Criar orcamentos
3. POST /api/project_budget_invoices → Registrar notas fiscais
4. POST /api/project_invoice_receipts → Registrar comprovantes de pagamento
5. GET /api/project_financial_overview/{id} → Ver visao consolidada
6. GET /api/project_financial_overview/{id}/pending → Ver pendencias
```
### B.6 KYC e Compliance
```
1. POST /api/cis_documents → Upload de documentos do cliente
2. PUT /api/cis_documents/{id}/verify → Verificar documento
3. POST /api/kyc_approval_history → Registrar aprovacao/rejeicao KYC
4. GET /api/kyc_approval_history/latest?rel_type=client&rel_id={id} → Status atual
5. GET /api/cis_documents/expiring → Monitorar vencimentos
```
---
\
\
### B.8 Gestao de Senhas da Equipe\
\
```\
1. POST /api/team_passwords/categories → Criar categoria de senhas\
2. POST /api/team_passwords/normal → Criar senha normal\
3. POST /api/team_passwords/server → Criar credencial de servidor\
4. POST /api/team_passwords/bank_account → Criar dados bancarios\
5. GET /api/team_passwords/normal?mgt_id=1 → Listar senhas por categoria\
6. PUT /api/team_passwords/normal/5 → Atualizar senha\
7. DELETE /api/team_passwords/normal/5 → Remover senha\
```\
\
### B.7 Marketing Assets e Manual de Marketing
```
1. POST /api/client_marketing_assets → Criar dados de marketing do cliente
2. POST /api/client_marketing_assets/1/files → Upload de logos e materiais
3. GET /api/client_marketing_assets?client_id=1 → Consultar dados completos
4. GET /api/client_marketing_assets/1/pdf → Exportar Manual de Marketing (PDF 9 paginas)
5. PUT /api/client_marketing_assets/1 → Atualizar dados de marketing
6. DELETE /api/client_marketing_assets/1/files/5 → Remover arquivo especifico
```
\
---\
\
## Apendice C: Guia Rapido para Agente IA
### Autenticacao (fazer primeiro)
```bash
curl -X POST https://dominio/p4/api/login/auth \\
-H "Content-Type: application/json" \\
-d '{"email":"[email protected]","password":"senha"}'
```
Salve o `token` retornado.
### Padrao de todas as chamadas
```bash
curl -X {METODO} https://dominio/p4/api/{endpoint} \\
-H "Authorization: Bearer {token}" \\
-H "Content-Type: application/json" \\
-d '{dados_json}'
```
### Regras importantes
1. **Sempre autentique primeiro** com `/api/login/auth`
2. **Use o token em TODAS as chamadas** no header `Authorization: Bearer {token}`
3. **IDs sao inteiros** - nunca envie strings onde se espera integer
4. **Datas no formato** `YYYY-MM-DD` ou `YYYY-MM-DD HH:MM:SS`
5. **PUT envia JSON no body** (nao form-data)
6. **Upload de arquivos usa multipart/form-data**
7. **Verifique o status da resposta** - `"status": true` = sucesso, `"status": false` = erro
8. **Custom fields** sao enviados com IDs numericos, nao nomes
9. **Busca usa URL**: `/api/{recurso}/search/{termo}` (GET)
10. **Filtros por query string**: `?client_id=5&status=active`
73. Webhooks
Listar/Obter/Criar/Atualizar/Deletar
GET /api/webhooks
GET /api/webhooks/{id}
POST /api/webhooks
PUT /api/webhooks/{id}
DELETE /api/webhooks/{id}
Campos
┌────────────────┬────────────┬──────────────────────────────────────┬─────────────┐
│ Campo │ Tipo │ Descrição │ Obrigatório │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ name │ string │ Nome do webhook │ Sim (POST) │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ webhook_for │ string │ Módulo alvo do webhook │ Sim (POST) │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ webhook_action │ array/json │ Ações que disparam o webhook │ Não │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ request_url │ string │ URL de destino da requisição │ Sim (POST) │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ request_method │ string │ Método HTTP (GET, POST, PUT, DELETE) │ Sim (POST) │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ request_format │ string │ Formato da requisição (json, form) │ Sim (POST) │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ request_header │ array/json │ Headers customizados │ Não │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ request_body │ array/json │ Body customizado │ Não │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ debug_mode │ integer │ Modo debug (0 ou 1) │ Não │
├────────────────┼────────────┼──────────────────────────────────────┼─────────────┤
│ active │ integer │ Ativo (0 ou 1) │ Não │
└────────────────┴────────────┴──────────────────────────────────────┴─────────────┘
Exemplos de Uso
# Listar todos os webhooks
curl -H "Authorization: Bearer {token}" https://dominio/p3/api/webhooks
# Obter webhook por ID
curl -H "Authorization: Bearer {token}" https://dominio/p3/api/webhooks/1
# Criar webhook
curl -X POST -H "Authorization: Bearer {token}" \\
-d "name=Novo Lead&webhook_for=leads&request_url=https://exemplo.com/hook&request_method=POST&request_format=json" \\
https://dominio/p3/api/webhooks
# Atualizar webhook
curl -X PUT -H "Authorization: Bearer {token}" \\
-H "Content-Type: application/json" \\
-d '{"name":"Lead Atualizado","active":0}' \\
https://dominio/p3/api/webhooks/1
# Deletar webhook
curl -X DELETE -H "Authorization: Bearer {token}" https://dominio/p3/api/webhooks/1