@magnetcustomer/sdk 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -3
- package/dist/client.d.ts +6 -1
- package/dist/client.js +5 -0
- package/dist/generated/api/contacts-api.d.ts +24 -24
- package/dist/generated/api/contacts-api.js +24 -24
- package/dist/generated/api/custom-fields-api.d.ts +1 -43
- package/dist/generated/api/custom-fields-api.js +1 -67
- package/dist/generated/api/customers-api.d.ts +4 -4
- package/dist/generated/api/customers-api.js +4 -4
- package/dist/generated/api/deals-api.d.ts +27 -27
- package/dist/generated/api/deals-api.js +27 -27
- package/dist/generated/api/journeys-api.d.ts +232 -0
- package/dist/generated/api/journeys-api.js +315 -0
- package/dist/generated/api/leads-api.d.ts +4 -4
- package/dist/generated/api/leads-api.js +4 -4
- package/dist/generated/api/meetings-api.d.ts +123 -27
- package/dist/generated/api/meetings-api.js +169 -27
- package/dist/generated/api/observations-api.d.ts +8 -8
- package/dist/generated/api/observations-api.js +8 -8
- package/dist/generated/api/organizations-api.d.ts +24 -24
- package/dist/generated/api/organizations-api.js +24 -24
- package/dist/generated/api/pipelines-api.d.ts +49 -1
- package/dist/generated/api/pipelines-api.js +72 -1
- package/dist/generated/api/prospects-api.d.ts +4 -4
- package/dist/generated/api/prospects-api.js +4 -4
- package/dist/generated/api/staffs-api.d.ts +1 -1
- package/dist/generated/api/staffs-api.js +1 -1
- package/dist/generated/api/task-types-api.d.ts +5 -5
- package/dist/generated/api/task-types-api.js +5 -5
- package/dist/generated/api/tasks-api.d.ts +32 -32
- package/dist/generated/api/tasks-api.js +32 -32
- package/dist/generated/api/teams-api.d.ts +130 -0
- package/dist/generated/api/teams-api.js +199 -0
- package/dist/generated/api/tickets-api.d.ts +610 -0
- package/dist/generated/api/tickets-api.js +860 -0
- package/dist/generated/api/treatments-api.d.ts +379 -0
- package/dist/generated/api/treatments-api.js +539 -0
- package/dist/generated/api/webhooks-api.d.ts +63 -0
- package/dist/generated/api/webhooks-api.js +116 -0
- package/dist/generated/api.d.ts +6 -1
- package/dist/generated/api.js +6 -1
- package/dist/generated/base.d.ts +1 -1
- package/dist/generated/base.js +1 -1
- package/dist/generated/common.d.ts +1 -1
- package/dist/generated/common.js +1 -1
- package/dist/generated/configuration.d.ts +1 -1
- package/dist/generated/configuration.js +1 -1
- package/dist/generated/index.d.ts +1 -1
- package/dist/generated/index.js +1 -1
- package/dist/generated/models/close-deal-request.d.ts +2 -2
- package/dist/generated/models/close-deal-request.js +1 -1
- package/dist/generated/models/contact-input-phones-inner.d.ts +1 -1
- package/dist/generated/models/contact-input-phones-inner.js +1 -1
- package/dist/generated/models/contact-input.d.ts +1 -1
- package/dist/generated/models/contact-input.js +1 -1
- package/dist/generated/models/contact-summary.d.ts +1 -1
- package/dist/generated/models/contact-summary.js +1 -1
- package/dist/generated/models/contact.d.ts +1 -1
- package/dist/generated/models/contact.js +1 -1
- package/dist/generated/models/create-observation-request.d.ts +1 -1
- package/dist/generated/models/create-observation-request.js +1 -1
- package/dist/generated/models/create-task-type-request.d.ts +1 -1
- package/dist/generated/models/create-task-type-request.js +1 -1
- package/dist/generated/models/create-ticket-message-request.d.ts +29 -0
- package/dist/generated/models/create-ticket-message-request.js +19 -0
- package/dist/generated/models/custom-field-settings.d.ts +1 -1
- package/dist/generated/models/custom-field-settings.js +1 -1
- package/dist/generated/models/custom-field-value.d.ts +1 -1
- package/dist/generated/models/custom-field-value.js +1 -1
- package/dist/generated/models/custom-field.d.ts +1 -1
- package/dist/generated/models/custom-field.js +1 -1
- package/dist/generated/models/deal-create.d.ts +1 -1
- package/dist/generated/models/deal-create.js +1 -1
- package/dist/generated/models/deal-input.d.ts +1 -1
- package/dist/generated/models/deal-input.js +1 -1
- package/dist/generated/models/deal-labels-inner.d.ts +1 -1
- package/dist/generated/models/deal-labels-inner.js +1 -1
- package/dist/generated/models/deal-organization.d.ts +1 -1
- package/dist/generated/models/deal-organization.js +1 -1
- package/dist/generated/models/deal-pipeline-one-of.d.ts +1 -1
- package/dist/generated/models/deal-pipeline-one-of.js +1 -1
- package/dist/generated/models/deal-pipeline.d.ts +1 -1
- package/dist/generated/models/deal-pipeline.js +1 -1
- package/dist/generated/models/deal-stage.d.ts +1 -1
- package/dist/generated/models/deal-stage.js +1 -1
- package/dist/generated/models/deal.d.ts +1 -1
- package/dist/generated/models/deal.js +1 -1
- package/dist/generated/models/delete-meetings-request.d.ts +1 -1
- package/dist/generated/models/delete-meetings-request.js +1 -1
- package/dist/generated/models/delete-meetings200-response.d.ts +1 -1
- package/dist/generated/models/delete-meetings200-response.js +1 -1
- package/dist/generated/models/delete-observations-request.d.ts +1 -1
- package/dist/generated/models/delete-observations-request.js +1 -1
- package/dist/generated/models/error-errors-inner.d.ts +1 -1
- package/dist/generated/models/error-errors-inner.js +1 -1
- package/dist/generated/models/finish-meeting-request.d.ts +1 -1
- package/dist/generated/models/finish-meeting-request.js +1 -1
- package/dist/generated/models/finish-tasks-request.d.ts +1 -1
- package/dist/generated/models/finish-tasks-request.js +1 -1
- package/dist/generated/models/get-deal-stage-history200-response-history-inner-stage.d.ts +1 -1
- package/dist/generated/models/get-deal-stage-history200-response-history-inner-stage.js +1 -1
- package/dist/generated/models/get-deal-stage-history200-response-history-inner.d.ts +1 -1
- package/dist/generated/models/get-deal-stage-history200-response-history-inner.js +1 -1
- package/dist/generated/models/get-deal-stage-history200-response-totals.d.ts +1 -1
- package/dist/generated/models/get-deal-stage-history200-response-totals.js +1 -1
- package/dist/generated/models/get-deal-stage-history200-response.d.ts +1 -1
- package/dist/generated/models/get-deal-stage-history200-response.js +1 -1
- package/dist/generated/models/get-journey-health-score200-response.d.ts +34 -0
- package/dist/generated/models/get-journey-health-score200-response.js +20 -0
- package/dist/generated/models/index.d.ts +27 -0
- package/dist/generated/models/index.js +27 -0
- package/dist/generated/models/journey.d.ts +111 -0
- package/dist/generated/models/journey.js +32 -0
- package/dist/generated/models/list-contacts200-response.d.ts +1 -1
- package/dist/generated/models/list-contacts200-response.js +1 -1
- package/dist/generated/models/list-custom-fields200-response.d.ts +1 -1
- package/dist/generated/models/list-custom-fields200-response.js +1 -1
- package/dist/generated/models/list-deals200-response.d.ts +1 -1
- package/dist/generated/models/list-deals200-response.js +1 -1
- package/dist/generated/models/list-deals401-response.d.ts +1 -1
- package/dist/generated/models/list-deals401-response.js +1 -1
- package/dist/generated/models/list-deals403-response.d.ts +1 -1
- package/dist/generated/models/list-deals403-response.js +1 -1
- package/dist/generated/models/list-journeys200-response.d.ts +16 -0
- package/dist/generated/models/list-journeys200-response.js +15 -0
- package/dist/generated/models/list-lost-reasons200-response.d.ts +16 -0
- package/dist/generated/models/list-lost-reasons200-response.js +15 -0
- package/dist/generated/models/list-meeting-rooms200-response.d.ts +16 -0
- package/dist/generated/models/list-meeting-rooms200-response.js +15 -0
- package/dist/generated/models/list-meeting-types200-response.d.ts +16 -0
- package/dist/generated/models/list-meeting-types200-response.js +15 -0
- package/dist/generated/models/list-meetings200-response.d.ts +1 -1
- package/dist/generated/models/list-meetings200-response.js +1 -1
- package/dist/generated/models/list-observations200-response.d.ts +1 -1
- package/dist/generated/models/list-observations200-response.js +1 -1
- package/dist/generated/models/list-organizations200-response.d.ts +1 -1
- package/dist/generated/models/list-organizations200-response.js +1 -1
- package/dist/generated/models/list-pipelines200-response.d.ts +1 -1
- package/dist/generated/models/list-pipelines200-response.js +1 -1
- package/dist/generated/models/list-staffs200-response.d.ts +1 -1
- package/dist/generated/models/list-staffs200-response.js +1 -1
- package/dist/generated/models/list-task-types200-response-one-of.d.ts +1 -1
- package/dist/generated/models/list-task-types200-response-one-of.js +1 -1
- package/dist/generated/models/list-task-types200-response.d.ts +1 -1
- package/dist/generated/models/list-task-types200-response.js +1 -1
- package/dist/generated/models/list-tasks200-response.d.ts +1 -1
- package/dist/generated/models/list-tasks200-response.js +1 -1
- package/dist/generated/models/list-teams200-response.d.ts +16 -0
- package/dist/generated/models/list-teams200-response.js +15 -0
- package/dist/generated/models/list-ticket-statuses200-response.d.ts +16 -0
- package/dist/generated/models/list-ticket-statuses200-response.js +15 -0
- package/dist/generated/models/list-tickets200-response.d.ts +16 -0
- package/dist/generated/models/list-tickets200-response.js +15 -0
- package/dist/generated/models/list-treatment-types200-response.d.ts +16 -0
- package/dist/generated/models/list-treatment-types200-response.js +15 -0
- package/dist/generated/models/list-treatments200-response.d.ts +16 -0
- package/dist/generated/models/list-treatments200-response.js +15 -0
- package/dist/generated/models/list-workspaces200-response.d.ts +16 -0
- package/dist/generated/models/list-workspaces200-response.js +15 -0
- package/dist/generated/models/lost-reason.d.ts +32 -0
- package/dist/generated/models/lost-reason.js +15 -0
- package/dist/generated/models/meeting-create.d.ts +1 -1
- package/dist/generated/models/meeting-create.js +1 -1
- package/dist/generated/models/meeting-deal.d.ts +1 -1
- package/dist/generated/models/meeting-deal.js +1 -1
- package/dist/generated/models/meeting-input.d.ts +1 -1
- package/dist/generated/models/meeting-input.js +1 -1
- package/dist/generated/models/meeting-room.d.ts +1 -1
- package/dist/generated/models/meeting-room.js +1 -1
- package/dist/generated/models/meeting-type.d.ts +1 -1
- package/dist/generated/models/meeting-type.js +1 -1
- package/dist/generated/models/meeting.d.ts +1 -1
- package/dist/generated/models/meeting.js +1 -1
- package/dist/generated/models/model-error.d.ts +1 -1
- package/dist/generated/models/model-error.js +1 -1
- package/dist/generated/models/move-deal-stage-request.d.ts +1 -1
- package/dist/generated/models/move-deal-stage-request.js +1 -1
- package/dist/generated/models/move-deal-stage200-response.d.ts +1 -1
- package/dist/generated/models/move-deal-stage200-response.js +1 -1
- package/dist/generated/models/observation-deal.d.ts +1 -1
- package/dist/generated/models/observation-deal.js +1 -1
- package/dist/generated/models/observation-input.d.ts +1 -1
- package/dist/generated/models/observation-input.js +1 -1
- package/dist/generated/models/observation-organization.d.ts +1 -1
- package/dist/generated/models/observation-organization.js +1 -1
- package/dist/generated/models/observation.d.ts +1 -1
- package/dist/generated/models/observation.js +1 -1
- package/dist/generated/models/organization-input.d.ts +1 -1
- package/dist/generated/models/organization-input.js +1 -1
- package/dist/generated/models/organization.d.ts +1 -1
- package/dist/generated/models/organization.js +1 -1
- package/dist/generated/models/page.d.ts +1 -1
- package/dist/generated/models/page.js +1 -1
- package/dist/generated/models/pipeline.d.ts +1 -1
- package/dist/generated/models/pipeline.js +1 -1
- package/dist/generated/models/reopen-deal-request.d.ts +1 -1
- package/dist/generated/models/reopen-deal-request.js +1 -1
- package/dist/generated/models/staff-summary.d.ts +1 -1
- package/dist/generated/models/staff-summary.js +1 -1
- package/dist/generated/models/staff.d.ts +1 -1
- package/dist/generated/models/staff.js +1 -1
- package/dist/generated/models/stage.d.ts +1 -1
- package/dist/generated/models/stage.js +1 -1
- package/dist/generated/models/task-create.d.ts +1 -1
- package/dist/generated/models/task-create.js +1 -1
- package/dist/generated/models/task-deal.d.ts +1 -1
- package/dist/generated/models/task-deal.js +1 -1
- package/dist/generated/models/task-input.d.ts +1 -1
- package/dist/generated/models/task-input.js +1 -1
- package/dist/generated/models/task-type.d.ts +1 -1
- package/dist/generated/models/task-type.js +1 -1
- package/dist/generated/models/task.d.ts +1 -1
- package/dist/generated/models/task.js +1 -1
- package/dist/generated/models/team.d.ts +27 -0
- package/dist/generated/models/team.js +15 -0
- package/dist/generated/models/ticket-create.d.ts +16 -0
- package/dist/generated/models/ticket-create.js +15 -0
- package/dist/generated/models/ticket-input.d.ts +77 -0
- package/dist/generated/models/ticket-input.js +22 -0
- package/dist/generated/models/ticket-message.d.ts +33 -0
- package/dist/generated/models/ticket-message.js +15 -0
- package/dist/generated/models/ticket-status-workspace.d.ts +18 -0
- package/dist/generated/models/ticket-status-workspace.js +15 -0
- package/dist/generated/models/ticket-status.d.ts +37 -0
- package/dist/generated/models/ticket-status.js +15 -0
- package/dist/generated/models/ticket.d.ts +87 -0
- package/dist/generated/models/ticket.js +22 -0
- package/dist/generated/models/treatment-input.d.ts +58 -0
- package/dist/generated/models/treatment-input.js +15 -0
- package/dist/generated/models/treatment-type.d.ts +43 -0
- package/dist/generated/models/treatment-type.js +15 -0
- package/dist/generated/models/treatment.d.ts +64 -0
- package/dist/generated/models/treatment.js +15 -0
- package/dist/generated/models/update-task-type-request.d.ts +1 -1
- package/dist/generated/models/update-task-type-request.js +1 -1
- package/dist/generated/models/validate-deal200-response-required-actions-pending.d.ts +1 -1
- package/dist/generated/models/validate-deal200-response-required-actions-pending.js +1 -1
- package/dist/generated/models/validate-deal200-response-required-field-pending.d.ts +1 -1
- package/dist/generated/models/validate-deal200-response-required-field-pending.js +1 -1
- package/dist/generated/models/validate-deal200-response.d.ts +1 -1
- package/dist/generated/models/validate-deal200-response.js +1 -1
- package/dist/generated/models/webhook-trigger-group-triggers-inner.d.ts +29 -0
- package/dist/generated/models/webhook-trigger-group-triggers-inner.js +15 -0
- package/dist/generated/models/webhook-trigger-group.d.ts +22 -0
- package/dist/generated/models/webhook-trigger-group.js +15 -0
- package/dist/generated/models/workspace.d.ts +23 -0
- package/dist/generated/models/workspace.js +15 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API da Magnet Customer
|
|
3
|
-
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`,
|
|
3
|
+
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`, algumas listagens (Contatos, Pipelines, Campos personalizados e os cadastros de apoio, como tipos e situações) devolvem uma lista simples (`[...]`), sem o envelope, e ignoram `limit`. Para percorrer tudo, peça `page=1` e avance até `page` ser igual a `pages`. Uma página além do fim devolve `docs` vazio. O tamanho de página padrão é 15, com duas exceções: 25 em Leads, Prospects e Clientes, e 100 em Usuários. Um `limit` inválido cai no padrão. ## Identificadores e datas Todo ID é um texto de 24 caracteres hexadecimais, como `507f1f77bcf86cd799439011`. Ao gravar, envie a referência como **ID em texto** — nunca o objeto. Um ID fora desse formato hoje é respondido com `500`, não `400`: valide o formato antes de enviar. No corpo e nas respostas, datas são ISO 8601 em UTC, como `2026-05-15T10:00:00Z`. Nos filtros de data da URL (`minDate`, `createdAt_minDate`, `dateOfExpires_minDate`...), envie um **timestamp em milissegundos**, como `1798761600000`. ## Listas na URL Filtros que aceitam vários valores levam colchetes no nome, mesmo quando o valor é um só: ``` /api/contacts?page=1&staffs[]=507f191e810c19729de860eb&staffs[]=507f191e810c19729de860ec ``` Sem colchetes, um valor único é recusado com erro em parte das listagens. ## Campos ausentes Campo sem valor costuma vir **ausente** da resposta, não como `null`. Trate a falta da chave como vazio. ## Campos personalizados Os campos criados pelo administrador da conta vão na lista `customFields`: ```json { \"customFields\": [ { \"customField\": \"507f1f77bcf86cd799439014\", \"k\": \"segmento\", \"v\": \"Tecnologia\" } ] } ``` O valor vai em **`v`**. Um item com `value` é aceito sem erro, mas o campo fica vazio. Descubra os campos e os IDs com `GET /api/customfields?page=1&feature=deal` (troque `deal` por `meeting`, `task`, `contact`...). Com `&required=true` vêm só os obrigatórios da conta. ## Erros ```json { \"reason\": \"Missing required parameters\", \"message\": \"Missing required parameters\", \"code\": \"VALIDATION_ERROR\", \"errors\": [ { \"field\": \"title\", \"message\": \"must NOT have fewer than 1 characters\", \"keyword\": \"minLength\" } ] } ``` | Status | Quando | |---|---| | `400` | Corpo inválido: campo obrigatório ausente, tipo errado, valor fora da lista | | `401` | Token ausente, inválido ou vencido. Corpo: `{\"reason\": \"Access Denied\"}` | | `403` | O Service Account não tem a permissão da rota (`type: SA_PERMISSION_DENIED`, com `requiredPermission`) | | `404` | Registro não encontrado | | `409` | O registro não está no estado que a operação exige | | `429` | Limite de requisições excedido. Espere o tempo de `Retry-After` | ## Permissões Um Service Account só chama as rotas que as permissões dele liberam. Cada operação desta referência informa a permissão exigida, quando há uma: marque-a ao criar o Service Account. Uma chamada sem a permissão devolve `403` com o nome dela em `requiredPermission`. Rotas de administração da conta (usuários, perfis, criação de webhooks, configurações) exigem um usuário administrador e não estão disponíveis para Service Accounts; por isso não aparecem aqui. ## Limite de requisições Os limites são aplicados por conta. Ao receber `429`, espere os segundos indicados em `Retry-After` e tente de novo com intervalo crescente. ## Área de trabalho Em contas com áreas de trabalho, a API define a área do registro pela credencial ou pelo registro pai. Não envie `workspace`. # Webhooks Para ser avisado quando algo muda no CRM, em vez de consultar a API de tempos em tempos, use webhooks. Um administrador cria o webhook no CRM, em **Integrações › Webhooks**, informando a URL do seu sistema e os eventos. A lista de eventos está em `GET /api/webhooks/triggers`; o formato da entrega, a assinatura e os reenvios estão na seção Webhooks do portal. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines, etapas e motivos de perda, Jornadas, Reuniões, Tarefas, Observações, Tickets, Atendimentos, Usuários, Equipes, Áreas de trabalho, Campos personalizados e os eventos de webhook.
|
|
4
4
|
*
|
|
5
5
|
* The version of the OpenAPI document: 2026-11
|
|
6
6
|
* Contact: suporte@magnetcustomer.com
|
|
@@ -12,20 +12,11 @@
|
|
|
12
12
|
import type { Configuration } from '../configuration';
|
|
13
13
|
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
|
|
14
14
|
import { type RequestArgs, BaseAPI } from '../base';
|
|
15
|
-
import type { CustomField } from '../models';
|
|
16
15
|
import type { ListCustomFields200Response } from '../models';
|
|
17
16
|
/**
|
|
18
17
|
* CustomFieldsApi - axios parameter creator
|
|
19
18
|
*/
|
|
20
19
|
export declare const CustomFieldsApiAxiosParamCreator: (configuration?: Configuration) => {
|
|
21
|
-
/**
|
|
22
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
23
|
-
* @summary Obter campo personalizado
|
|
24
|
-
* @param {string} id ID do registro.
|
|
25
|
-
* @param {*} [options] Override http request option.
|
|
26
|
-
* @throws {RequiredError}
|
|
27
|
-
*/
|
|
28
|
-
getCustomField: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
|
|
29
20
|
/**
|
|
30
21
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
31
22
|
* @summary Listar campos personalizados
|
|
@@ -44,14 +35,6 @@ export declare const CustomFieldsApiAxiosParamCreator: (configuration?: Configur
|
|
|
44
35
|
* CustomFieldsApi - functional programming interface
|
|
45
36
|
*/
|
|
46
37
|
export declare const CustomFieldsApiFp: (configuration?: Configuration) => {
|
|
47
|
-
/**
|
|
48
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
49
|
-
* @summary Obter campo personalizado
|
|
50
|
-
* @param {string} id ID do registro.
|
|
51
|
-
* @param {*} [options] Override http request option.
|
|
52
|
-
* @throws {RequiredError}
|
|
53
|
-
*/
|
|
54
|
-
getCustomField(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CustomField>>;
|
|
55
38
|
/**
|
|
56
39
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
57
40
|
* @summary Listar campos personalizados
|
|
@@ -70,14 +53,6 @@ export declare const CustomFieldsApiFp: (configuration?: Configuration) => {
|
|
|
70
53
|
* CustomFieldsApi - factory interface
|
|
71
54
|
*/
|
|
72
55
|
export declare const CustomFieldsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
|
|
73
|
-
/**
|
|
74
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
75
|
-
* @summary Obter campo personalizado
|
|
76
|
-
* @param {CustomFieldsApiGetCustomFieldRequest} requestParameters Request parameters.
|
|
77
|
-
* @param {*} [options] Override http request option.
|
|
78
|
-
* @throws {RequiredError}
|
|
79
|
-
*/
|
|
80
|
-
getCustomField(requestParameters: CustomFieldsApiGetCustomFieldRequest, options?: RawAxiosRequestConfig): AxiosPromise<CustomField>;
|
|
81
56
|
/**
|
|
82
57
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
83
58
|
* @summary Listar campos personalizados
|
|
@@ -87,15 +62,6 @@ export declare const CustomFieldsApiFactory: (configuration?: Configuration, bas
|
|
|
87
62
|
*/
|
|
88
63
|
listCustomFields(requestParameters?: CustomFieldsApiListCustomFieldsRequest, options?: RawAxiosRequestConfig): AxiosPromise<ListCustomFields200Response>;
|
|
89
64
|
};
|
|
90
|
-
/**
|
|
91
|
-
* Request parameters for getCustomField operation in CustomFieldsApi.
|
|
92
|
-
*/
|
|
93
|
-
export interface CustomFieldsApiGetCustomFieldRequest {
|
|
94
|
-
/**
|
|
95
|
-
* ID do registro.
|
|
96
|
-
*/
|
|
97
|
-
readonly id: string;
|
|
98
|
-
}
|
|
99
65
|
/**
|
|
100
66
|
* Request parameters for listCustomFields operation in CustomFieldsApi.
|
|
101
67
|
*/
|
|
@@ -129,14 +95,6 @@ export interface CustomFieldsApiListCustomFieldsRequest {
|
|
|
129
95
|
* CustomFieldsApi - object-oriented interface
|
|
130
96
|
*/
|
|
131
97
|
export declare class CustomFieldsApi extends BaseAPI {
|
|
132
|
-
/**
|
|
133
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
134
|
-
* @summary Obter campo personalizado
|
|
135
|
-
* @param {CustomFieldsApiGetCustomFieldRequest} requestParameters Request parameters.
|
|
136
|
-
* @param {*} [options] Override http request option.
|
|
137
|
-
* @throws {RequiredError}
|
|
138
|
-
*/
|
|
139
|
-
getCustomField(requestParameters: CustomFieldsApiGetCustomFieldRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CustomField, any, {}, any>>;
|
|
140
98
|
/**
|
|
141
99
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
142
100
|
* @summary Listar campos personalizados
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
/**
|
|
5
5
|
* API da Magnet Customer
|
|
6
|
-
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`,
|
|
6
|
+
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`, algumas listagens (Contatos, Pipelines, Campos personalizados e os cadastros de apoio, como tipos e situações) devolvem uma lista simples (`[...]`), sem o envelope, e ignoram `limit`. Para percorrer tudo, peça `page=1` e avance até `page` ser igual a `pages`. Uma página além do fim devolve `docs` vazio. O tamanho de página padrão é 15, com duas exceções: 25 em Leads, Prospects e Clientes, e 100 em Usuários. Um `limit` inválido cai no padrão. ## Identificadores e datas Todo ID é um texto de 24 caracteres hexadecimais, como `507f1f77bcf86cd799439011`. Ao gravar, envie a referência como **ID em texto** — nunca o objeto. Um ID fora desse formato hoje é respondido com `500`, não `400`: valide o formato antes de enviar. No corpo e nas respostas, datas são ISO 8601 em UTC, como `2026-05-15T10:00:00Z`. Nos filtros de data da URL (`minDate`, `createdAt_minDate`, `dateOfExpires_minDate`...), envie um **timestamp em milissegundos**, como `1798761600000`. ## Listas na URL Filtros que aceitam vários valores levam colchetes no nome, mesmo quando o valor é um só: ``` /api/contacts?page=1&staffs[]=507f191e810c19729de860eb&staffs[]=507f191e810c19729de860ec ``` Sem colchetes, um valor único é recusado com erro em parte das listagens. ## Campos ausentes Campo sem valor costuma vir **ausente** da resposta, não como `null`. Trate a falta da chave como vazio. ## Campos personalizados Os campos criados pelo administrador da conta vão na lista `customFields`: ```json { \"customFields\": [ { \"customField\": \"507f1f77bcf86cd799439014\", \"k\": \"segmento\", \"v\": \"Tecnologia\" } ] } ``` O valor vai em **`v`**. Um item com `value` é aceito sem erro, mas o campo fica vazio. Descubra os campos e os IDs com `GET /api/customfields?page=1&feature=deal` (troque `deal` por `meeting`, `task`, `contact`...). Com `&required=true` vêm só os obrigatórios da conta. ## Erros ```json { \"reason\": \"Missing required parameters\", \"message\": \"Missing required parameters\", \"code\": \"VALIDATION_ERROR\", \"errors\": [ { \"field\": \"title\", \"message\": \"must NOT have fewer than 1 characters\", \"keyword\": \"minLength\" } ] } ``` | Status | Quando | |---|---| | `400` | Corpo inválido: campo obrigatório ausente, tipo errado, valor fora da lista | | `401` | Token ausente, inválido ou vencido. Corpo: `{\"reason\": \"Access Denied\"}` | | `403` | O Service Account não tem a permissão da rota (`type: SA_PERMISSION_DENIED`, com `requiredPermission`) | | `404` | Registro não encontrado | | `409` | O registro não está no estado que a operação exige | | `429` | Limite de requisições excedido. Espere o tempo de `Retry-After` | ## Permissões Um Service Account só chama as rotas que as permissões dele liberam. Cada operação desta referência informa a permissão exigida, quando há uma: marque-a ao criar o Service Account. Uma chamada sem a permissão devolve `403` com o nome dela em `requiredPermission`. Rotas de administração da conta (usuários, perfis, criação de webhooks, configurações) exigem um usuário administrador e não estão disponíveis para Service Accounts; por isso não aparecem aqui. ## Limite de requisições Os limites são aplicados por conta. Ao receber `429`, espere os segundos indicados em `Retry-After` e tente de novo com intervalo crescente. ## Área de trabalho Em contas com áreas de trabalho, a API define a área do registro pela credencial ou pelo registro pai. Não envie `workspace`. # Webhooks Para ser avisado quando algo muda no CRM, em vez de consultar a API de tempos em tempos, use webhooks. Um administrador cria o webhook no CRM, em **Integrações › Webhooks**, informando a URL do seu sistema e os eventos. A lista de eventos está em `GET /api/webhooks/triggers`; o formato da entrega, a assinatura e os reenvios estão na seção Webhooks do portal. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines, etapas e motivos de perda, Jornadas, Reuniões, Tarefas, Observações, Tickets, Atendimentos, Usuários, Equipes, Áreas de trabalho, Campos personalizados e os eventos de webhook.
|
|
7
7
|
*
|
|
8
8
|
* The version of the OpenAPI document: 2026-11
|
|
9
9
|
* Contact: suporte@magnetcustomer.com
|
|
@@ -28,39 +28,6 @@ const base_1 = require("../base");
|
|
|
28
28
|
*/
|
|
29
29
|
const CustomFieldsApiAxiosParamCreator = function (configuration) {
|
|
30
30
|
return {
|
|
31
|
-
/**
|
|
32
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
33
|
-
* @summary Obter campo personalizado
|
|
34
|
-
* @param {string} id ID do registro.
|
|
35
|
-
* @param {*} [options] Override http request option.
|
|
36
|
-
* @throws {RequiredError}
|
|
37
|
-
*/
|
|
38
|
-
getCustomField: async (id, options = {}) => {
|
|
39
|
-
// verify required parameter 'id' is not null or undefined
|
|
40
|
-
(0, common_1.assertParamExists)('getCustomField', 'id', id);
|
|
41
|
-
const localVarPath = `/api/customfields/{id}`
|
|
42
|
-
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
|
|
43
|
-
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
44
|
-
const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
|
|
45
|
-
let baseOptions;
|
|
46
|
-
if (configuration) {
|
|
47
|
-
baseOptions = configuration.baseOptions;
|
|
48
|
-
}
|
|
49
|
-
const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
|
|
50
|
-
const localVarHeaderParameter = {};
|
|
51
|
-
const localVarQueryParameter = {};
|
|
52
|
-
// authentication ServiceAccount required
|
|
53
|
-
// oauth required
|
|
54
|
-
await (0, common_1.setOAuthToObject)(localVarHeaderParameter, "ServiceAccount", [], configuration);
|
|
55
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
56
|
-
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
57
|
-
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
58
|
-
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
59
|
-
return {
|
|
60
|
-
url: (0, common_1.toPathString)(localVarUrlObj),
|
|
61
|
-
options: localVarRequestOptions,
|
|
62
|
-
};
|
|
63
|
-
},
|
|
64
31
|
/**
|
|
65
32
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
66
33
|
* @summary Listar campos personalizados
|
|
@@ -123,19 +90,6 @@ exports.CustomFieldsApiAxiosParamCreator = CustomFieldsApiAxiosParamCreator;
|
|
|
123
90
|
const CustomFieldsApiFp = function (configuration) {
|
|
124
91
|
const localVarAxiosParamCreator = (0, exports.CustomFieldsApiAxiosParamCreator)(configuration);
|
|
125
92
|
return {
|
|
126
|
-
/**
|
|
127
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
128
|
-
* @summary Obter campo personalizado
|
|
129
|
-
* @param {string} id ID do registro.
|
|
130
|
-
* @param {*} [options] Override http request option.
|
|
131
|
-
* @throws {RequiredError}
|
|
132
|
-
*/
|
|
133
|
-
async getCustomField(id, options) {
|
|
134
|
-
const localVarAxiosArgs = await localVarAxiosParamCreator.getCustomField(id, options);
|
|
135
|
-
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
|
|
136
|
-
const localVarOperationServerBasePath = base_1.operationServerMap['CustomFieldsApi.getCustomField']?.[localVarOperationServerIndex]?.url;
|
|
137
|
-
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
138
|
-
},
|
|
139
93
|
/**
|
|
140
94
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
141
95
|
* @summary Listar campos personalizados
|
|
@@ -163,16 +117,6 @@ exports.CustomFieldsApiFp = CustomFieldsApiFp;
|
|
|
163
117
|
const CustomFieldsApiFactory = function (configuration, basePath, axios) {
|
|
164
118
|
const localVarFp = (0, exports.CustomFieldsApiFp)(configuration);
|
|
165
119
|
return {
|
|
166
|
-
/**
|
|
167
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
168
|
-
* @summary Obter campo personalizado
|
|
169
|
-
* @param {CustomFieldsApiGetCustomFieldRequest} requestParameters Request parameters.
|
|
170
|
-
* @param {*} [options] Override http request option.
|
|
171
|
-
* @throws {RequiredError}
|
|
172
|
-
*/
|
|
173
|
-
getCustomField(requestParameters, options) {
|
|
174
|
-
return localVarFp.getCustomField(requestParameters.id, options).then((request) => request(axios, basePath));
|
|
175
|
-
},
|
|
176
120
|
/**
|
|
177
121
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
178
122
|
* @summary Listar campos personalizados
|
|
@@ -190,16 +134,6 @@ exports.CustomFieldsApiFactory = CustomFieldsApiFactory;
|
|
|
190
134
|
* CustomFieldsApi - object-oriented interface
|
|
191
135
|
*/
|
|
192
136
|
class CustomFieldsApi extends base_1.BaseAPI {
|
|
193
|
-
/**
|
|
194
|
-
* Exige um Service Account com acesso de administrador; sem ele a resposta é `403` com `type: ADMIN_REQUIRED`. Para integrações, prefira a listagem.
|
|
195
|
-
* @summary Obter campo personalizado
|
|
196
|
-
* @param {CustomFieldsApiGetCustomFieldRequest} requestParameters Request parameters.
|
|
197
|
-
* @param {*} [options] Override http request option.
|
|
198
|
-
* @throws {RequiredError}
|
|
199
|
-
*/
|
|
200
|
-
getCustomField(requestParameters, options) {
|
|
201
|
-
return (0, exports.CustomFieldsApiFp)(this.configuration).getCustomField(requestParameters.id, options).then((request) => request(this.axios, this.basePath));
|
|
202
|
-
}
|
|
203
137
|
/**
|
|
204
138
|
* Devolve os campos de um recurso: os criados pelo administrador e os de sistema. É aqui que você descobre os IDs para `customFields` e quais campos a conta exige (`settings.required: true`).
|
|
205
139
|
* @summary Listar campos personalizados
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API da Magnet Customer
|
|
3
|
-
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`,
|
|
3
|
+
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`, algumas listagens (Contatos, Pipelines, Campos personalizados e os cadastros de apoio, como tipos e situações) devolvem uma lista simples (`[...]`), sem o envelope, e ignoram `limit`. Para percorrer tudo, peça `page=1` e avance até `page` ser igual a `pages`. Uma página além do fim devolve `docs` vazio. O tamanho de página padrão é 15, com duas exceções: 25 em Leads, Prospects e Clientes, e 100 em Usuários. Um `limit` inválido cai no padrão. ## Identificadores e datas Todo ID é um texto de 24 caracteres hexadecimais, como `507f1f77bcf86cd799439011`. Ao gravar, envie a referência como **ID em texto** — nunca o objeto. Um ID fora desse formato hoje é respondido com `500`, não `400`: valide o formato antes de enviar. No corpo e nas respostas, datas são ISO 8601 em UTC, como `2026-05-15T10:00:00Z`. Nos filtros de data da URL (`minDate`, `createdAt_minDate`, `dateOfExpires_minDate`...), envie um **timestamp em milissegundos**, como `1798761600000`. ## Listas na URL Filtros que aceitam vários valores levam colchetes no nome, mesmo quando o valor é um só: ``` /api/contacts?page=1&staffs[]=507f191e810c19729de860eb&staffs[]=507f191e810c19729de860ec ``` Sem colchetes, um valor único é recusado com erro em parte das listagens. ## Campos ausentes Campo sem valor costuma vir **ausente** da resposta, não como `null`. Trate a falta da chave como vazio. ## Campos personalizados Os campos criados pelo administrador da conta vão na lista `customFields`: ```json { \"customFields\": [ { \"customField\": \"507f1f77bcf86cd799439014\", \"k\": \"segmento\", \"v\": \"Tecnologia\" } ] } ``` O valor vai em **`v`**. Um item com `value` é aceito sem erro, mas o campo fica vazio. Descubra os campos e os IDs com `GET /api/customfields?page=1&feature=deal` (troque `deal` por `meeting`, `task`, `contact`...). Com `&required=true` vêm só os obrigatórios da conta. ## Erros ```json { \"reason\": \"Missing required parameters\", \"message\": \"Missing required parameters\", \"code\": \"VALIDATION_ERROR\", \"errors\": [ { \"field\": \"title\", \"message\": \"must NOT have fewer than 1 characters\", \"keyword\": \"minLength\" } ] } ``` | Status | Quando | |---|---| | `400` | Corpo inválido: campo obrigatório ausente, tipo errado, valor fora da lista | | `401` | Token ausente, inválido ou vencido. Corpo: `{\"reason\": \"Access Denied\"}` | | `403` | O Service Account não tem a permissão da rota (`type: SA_PERMISSION_DENIED`, com `requiredPermission`) | | `404` | Registro não encontrado | | `409` | O registro não está no estado que a operação exige | | `429` | Limite de requisições excedido. Espere o tempo de `Retry-After` | ## Permissões Um Service Account só chama as rotas que as permissões dele liberam. Cada operação desta referência informa a permissão exigida, quando há uma: marque-a ao criar o Service Account. Uma chamada sem a permissão devolve `403` com o nome dela em `requiredPermission`. Rotas de administração da conta (usuários, perfis, criação de webhooks, configurações) exigem um usuário administrador e não estão disponíveis para Service Accounts; por isso não aparecem aqui. ## Limite de requisições Os limites são aplicados por conta. Ao receber `429`, espere os segundos indicados em `Retry-After` e tente de novo com intervalo crescente. ## Área de trabalho Em contas com áreas de trabalho, a API define a área do registro pela credencial ou pelo registro pai. Não envie `workspace`. # Webhooks Para ser avisado quando algo muda no CRM, em vez de consultar a API de tempos em tempos, use webhooks. Um administrador cria o webhook no CRM, em **Integrações › Webhooks**, informando a URL do seu sistema e os eventos. A lista de eventos está em `GET /api/webhooks/triggers`; o formato da entrega, a assinatura e os reenvios estão na seção Webhooks do portal. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines, etapas e motivos de perda, Jornadas, Reuniões, Tarefas, Observações, Tickets, Atendimentos, Usuários, Equipes, Áreas de trabalho, Campos personalizados e os eventos de webhook.
|
|
4
4
|
*
|
|
5
5
|
* The version of the OpenAPI document: 2026-11
|
|
6
6
|
* Contact: suporte@magnetcustomer.com
|
|
@@ -50,7 +50,7 @@ export declare const CustomersApiAxiosParamCreator: (configuration?: Configurati
|
|
|
50
50
|
* @param {number} [limit] Registros por página. Padrão: 15, salvo indicação na operação. Máximo: 100 — acima disso a API usa 100.
|
|
51
51
|
* @param {string} [sortBy] Campo de ordenação. O padrão varia por recurso.
|
|
52
52
|
* @param {ListCustomersSortTypeEnum} [sortType] Direção da ordenação.
|
|
53
|
-
* @param {Array<string>} [staffs] Usuários responsáveis.
|
|
53
|
+
* @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
54
54
|
* @param {string} [organization] ID da empresa vinculada.
|
|
55
55
|
* @param {string} [search] Busca em nome, e-mail, telefone e documento.
|
|
56
56
|
* @param {boolean} [emailsEmpty] Com `true`, só os sem e-mail.
|
|
@@ -104,7 +104,7 @@ export declare const CustomersApiFp: (configuration?: Configuration) => {
|
|
|
104
104
|
* @param {number} [limit] Registros por página. Padrão: 15, salvo indicação na operação. Máximo: 100 — acima disso a API usa 100.
|
|
105
105
|
* @param {string} [sortBy] Campo de ordenação. O padrão varia por recurso.
|
|
106
106
|
* @param {ListCustomersSortTypeEnum} [sortType] Direção da ordenação.
|
|
107
|
-
* @param {Array<string>} [staffs] Usuários responsáveis.
|
|
107
|
+
* @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
108
108
|
* @param {string} [organization] ID da empresa vinculada.
|
|
109
109
|
* @param {string} [search] Busca em nome, e-mail, telefone e documento.
|
|
110
110
|
* @param {boolean} [emailsEmpty] Com `true`, só os sem e-mail.
|
|
@@ -213,7 +213,7 @@ export interface CustomersApiListCustomersRequest {
|
|
|
213
213
|
*/
|
|
214
214
|
readonly sortType?: ListCustomersSortTypeEnum;
|
|
215
215
|
/**
|
|
216
|
-
* Usuários responsáveis.
|
|
216
|
+
* Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
217
217
|
*/
|
|
218
218
|
readonly staffs?: Array<string>;
|
|
219
219
|
/**
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
/**
|
|
5
5
|
* API da Magnet Customer
|
|
6
|
-
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`,
|
|
6
|
+
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`, algumas listagens (Contatos, Pipelines, Campos personalizados e os cadastros de apoio, como tipos e situações) devolvem uma lista simples (`[...]`), sem o envelope, e ignoram `limit`. Para percorrer tudo, peça `page=1` e avance até `page` ser igual a `pages`. Uma página além do fim devolve `docs` vazio. O tamanho de página padrão é 15, com duas exceções: 25 em Leads, Prospects e Clientes, e 100 em Usuários. Um `limit` inválido cai no padrão. ## Identificadores e datas Todo ID é um texto de 24 caracteres hexadecimais, como `507f1f77bcf86cd799439011`. Ao gravar, envie a referência como **ID em texto** — nunca o objeto. Um ID fora desse formato hoje é respondido com `500`, não `400`: valide o formato antes de enviar. No corpo e nas respostas, datas são ISO 8601 em UTC, como `2026-05-15T10:00:00Z`. Nos filtros de data da URL (`minDate`, `createdAt_minDate`, `dateOfExpires_minDate`...), envie um **timestamp em milissegundos**, como `1798761600000`. ## Listas na URL Filtros que aceitam vários valores levam colchetes no nome, mesmo quando o valor é um só: ``` /api/contacts?page=1&staffs[]=507f191e810c19729de860eb&staffs[]=507f191e810c19729de860ec ``` Sem colchetes, um valor único é recusado com erro em parte das listagens. ## Campos ausentes Campo sem valor costuma vir **ausente** da resposta, não como `null`. Trate a falta da chave como vazio. ## Campos personalizados Os campos criados pelo administrador da conta vão na lista `customFields`: ```json { \"customFields\": [ { \"customField\": \"507f1f77bcf86cd799439014\", \"k\": \"segmento\", \"v\": \"Tecnologia\" } ] } ``` O valor vai em **`v`**. Um item com `value` é aceito sem erro, mas o campo fica vazio. Descubra os campos e os IDs com `GET /api/customfields?page=1&feature=deal` (troque `deal` por `meeting`, `task`, `contact`...). Com `&required=true` vêm só os obrigatórios da conta. ## Erros ```json { \"reason\": \"Missing required parameters\", \"message\": \"Missing required parameters\", \"code\": \"VALIDATION_ERROR\", \"errors\": [ { \"field\": \"title\", \"message\": \"must NOT have fewer than 1 characters\", \"keyword\": \"minLength\" } ] } ``` | Status | Quando | |---|---| | `400` | Corpo inválido: campo obrigatório ausente, tipo errado, valor fora da lista | | `401` | Token ausente, inválido ou vencido. Corpo: `{\"reason\": \"Access Denied\"}` | | `403` | O Service Account não tem a permissão da rota (`type: SA_PERMISSION_DENIED`, com `requiredPermission`) | | `404` | Registro não encontrado | | `409` | O registro não está no estado que a operação exige | | `429` | Limite de requisições excedido. Espere o tempo de `Retry-After` | ## Permissões Um Service Account só chama as rotas que as permissões dele liberam. Cada operação desta referência informa a permissão exigida, quando há uma: marque-a ao criar o Service Account. Uma chamada sem a permissão devolve `403` com o nome dela em `requiredPermission`. Rotas de administração da conta (usuários, perfis, criação de webhooks, configurações) exigem um usuário administrador e não estão disponíveis para Service Accounts; por isso não aparecem aqui. ## Limite de requisições Os limites são aplicados por conta. Ao receber `429`, espere os segundos indicados em `Retry-After` e tente de novo com intervalo crescente. ## Área de trabalho Em contas com áreas de trabalho, a API define a área do registro pela credencial ou pelo registro pai. Não envie `workspace`. # Webhooks Para ser avisado quando algo muda no CRM, em vez de consultar a API de tempos em tempos, use webhooks. Um administrador cria o webhook no CRM, em **Integrações › Webhooks**, informando a URL do seu sistema e os eventos. A lista de eventos está em `GET /api/webhooks/triggers`; o formato da entrega, a assinatura e os reenvios estão na seção Webhooks do portal. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines, etapas e motivos de perda, Jornadas, Reuniões, Tarefas, Observações, Tickets, Atendimentos, Usuários, Equipes, Áreas de trabalho, Campos personalizados e os eventos de webhook.
|
|
7
7
|
*
|
|
8
8
|
* The version of the OpenAPI document: 2026-11
|
|
9
9
|
* Contact: suporte@magnetcustomer.com
|
|
@@ -135,7 +135,7 @@ const CustomersApiAxiosParamCreator = function (configuration) {
|
|
|
135
135
|
* @param {number} [limit] Registros por página. Padrão: 15, salvo indicação na operação. Máximo: 100 — acima disso a API usa 100.
|
|
136
136
|
* @param {string} [sortBy] Campo de ordenação. O padrão varia por recurso.
|
|
137
137
|
* @param {ListCustomersSortTypeEnum} [sortType] Direção da ordenação.
|
|
138
|
-
* @param {Array<string>} [staffs] Usuários responsáveis.
|
|
138
|
+
* @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
139
139
|
* @param {string} [organization] ID da empresa vinculada.
|
|
140
140
|
* @param {string} [search] Busca em nome, e-mail, telefone e documento.
|
|
141
141
|
* @param {boolean} [emailsEmpty] Com `true`, só os sem e-mail.
|
|
@@ -170,7 +170,7 @@ const CustomersApiAxiosParamCreator = function (configuration) {
|
|
|
170
170
|
localVarQueryParameter['sortType'] = sortType;
|
|
171
171
|
}
|
|
172
172
|
if (staffs) {
|
|
173
|
-
localVarQueryParameter['staffs'] = staffs;
|
|
173
|
+
localVarQueryParameter['staffs[]'] = staffs;
|
|
174
174
|
}
|
|
175
175
|
if (organization !== undefined) {
|
|
176
176
|
localVarQueryParameter['organization'] = organization;
|
|
@@ -286,7 +286,7 @@ const CustomersApiFp = function (configuration) {
|
|
|
286
286
|
* @param {number} [limit] Registros por página. Padrão: 15, salvo indicação na operação. Máximo: 100 — acima disso a API usa 100.
|
|
287
287
|
* @param {string} [sortBy] Campo de ordenação. O padrão varia por recurso.
|
|
288
288
|
* @param {ListCustomersSortTypeEnum} [sortType] Direção da ordenação.
|
|
289
|
-
* @param {Array<string>} [staffs] Usuários responsáveis.
|
|
289
|
+
* @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
290
290
|
* @param {string} [organization] ID da empresa vinculada.
|
|
291
291
|
* @param {string} [search] Busca em nome, e-mail, telefone e documento.
|
|
292
292
|
* @param {boolean} [emailsEmpty] Com `true`, só os sem e-mail.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API da Magnet Customer
|
|
3
|
-
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`,
|
|
3
|
+
* A API REST da Magnet Customer permite ler e gravar os registros do CRM a partir dos seus sistemas. # Comece aqui ## 1. Crie um Service Account No CRM, abra **Configurações › Service Accounts** (apenas administradores), clique em **Novo service account**, escolha a validade e as permissões, e copie o **Client ID** e o **Client Secret**. O secret aparece uma única vez. ## 2. Solicite um token ```bash curl -X POST https://magnetcustomer.net/realms/platform/protocol/openid-connect/token \\ -H \"Content-Type: application/x-www-form-urlencoded\" \\ -d \"grant_type=client_credentials\" \\ -d \"client_id=SEU_CLIENT_ID\" \\ -d \"client_secret=SEU_CLIENT_SECRET\" ``` ```json { \"access_token\": \"eyJhbGciOiJSUzI1NiIs...\", \"expires_in\": 900, \"token_type\": \"Bearer\" } ``` O token vale 15 minutos e este fluxo não tem refresh token: quando vencer, ou ao receber `401`, repita o pedido. ## 3. Chame a API Cada conta tem o seu endereço. Troque `sua-conta` pelo subdomínio que você usa para abrir o CRM: ```bash curl \"https://sua-conta.platform-api.magnetcustomer.com/api/deals?page=1&limit=15\" \\ -H \"Authorization: Bearer SEU_TOKEN\" ``` Requisições com corpo levam também `Content-Type: application/json`. # Convenções ## Paginação Envie sempre `page`. Com ele, toda listagem devolve o mesmo envelope: ```json { \"docs\": [], \"total\": 132, \"pages\": 9, \"page\": 1, \"limit\": 15 } ``` | Parâmetro | Padrão | Descrição | |---|---|---| | `page` | — | Página, a partir de 1. **Obrigatório na prática** | | `limit` | 15 | Registros por página. Máximo 100: acima disso a API usa 100 | | `sortBy` | varia por recurso | Campo de ordenação | | `sortType` | `desc` | `asc` ou `desc` | | `search` | — | Busca textual, quando o recurso aceita | Sem `page`, algumas listagens (Contatos, Pipelines, Campos personalizados e os cadastros de apoio, como tipos e situações) devolvem uma lista simples (`[...]`), sem o envelope, e ignoram `limit`. Para percorrer tudo, peça `page=1` e avance até `page` ser igual a `pages`. Uma página além do fim devolve `docs` vazio. O tamanho de página padrão é 15, com duas exceções: 25 em Leads, Prospects e Clientes, e 100 em Usuários. Um `limit` inválido cai no padrão. ## Identificadores e datas Todo ID é um texto de 24 caracteres hexadecimais, como `507f1f77bcf86cd799439011`. Ao gravar, envie a referência como **ID em texto** — nunca o objeto. Um ID fora desse formato hoje é respondido com `500`, não `400`: valide o formato antes de enviar. No corpo e nas respostas, datas são ISO 8601 em UTC, como `2026-05-15T10:00:00Z`. Nos filtros de data da URL (`minDate`, `createdAt_minDate`, `dateOfExpires_minDate`...), envie um **timestamp em milissegundos**, como `1798761600000`. ## Listas na URL Filtros que aceitam vários valores levam colchetes no nome, mesmo quando o valor é um só: ``` /api/contacts?page=1&staffs[]=507f191e810c19729de860eb&staffs[]=507f191e810c19729de860ec ``` Sem colchetes, um valor único é recusado com erro em parte das listagens. ## Campos ausentes Campo sem valor costuma vir **ausente** da resposta, não como `null`. Trate a falta da chave como vazio. ## Campos personalizados Os campos criados pelo administrador da conta vão na lista `customFields`: ```json { \"customFields\": [ { \"customField\": \"507f1f77bcf86cd799439014\", \"k\": \"segmento\", \"v\": \"Tecnologia\" } ] } ``` O valor vai em **`v`**. Um item com `value` é aceito sem erro, mas o campo fica vazio. Descubra os campos e os IDs com `GET /api/customfields?page=1&feature=deal` (troque `deal` por `meeting`, `task`, `contact`...). Com `&required=true` vêm só os obrigatórios da conta. ## Erros ```json { \"reason\": \"Missing required parameters\", \"message\": \"Missing required parameters\", \"code\": \"VALIDATION_ERROR\", \"errors\": [ { \"field\": \"title\", \"message\": \"must NOT have fewer than 1 characters\", \"keyword\": \"minLength\" } ] } ``` | Status | Quando | |---|---| | `400` | Corpo inválido: campo obrigatório ausente, tipo errado, valor fora da lista | | `401` | Token ausente, inválido ou vencido. Corpo: `{\"reason\": \"Access Denied\"}` | | `403` | O Service Account não tem a permissão da rota (`type: SA_PERMISSION_DENIED`, com `requiredPermission`) | | `404` | Registro não encontrado | | `409` | O registro não está no estado que a operação exige | | `429` | Limite de requisições excedido. Espere o tempo de `Retry-After` | ## Permissões Um Service Account só chama as rotas que as permissões dele liberam. Cada operação desta referência informa a permissão exigida, quando há uma: marque-a ao criar o Service Account. Uma chamada sem a permissão devolve `403` com o nome dela em `requiredPermission`. Rotas de administração da conta (usuários, perfis, criação de webhooks, configurações) exigem um usuário administrador e não estão disponíveis para Service Accounts; por isso não aparecem aqui. ## Limite de requisições Os limites são aplicados por conta. Ao receber `429`, espere os segundos indicados em `Retry-After` e tente de novo com intervalo crescente. ## Área de trabalho Em contas com áreas de trabalho, a API define a área do registro pela credencial ou pelo registro pai. Não envie `workspace`. # Webhooks Para ser avisado quando algo muda no CRM, em vez de consultar a API de tempos em tempos, use webhooks. Um administrador cria o webhook no CRM, em **Integrações › Webhooks**, informando a URL do seu sistema e os eventos. A lista de eventos está em `GET /api/webhooks/triggers`; o formato da entrega, a assinatura e os reenvios estão na seção Webhooks do portal. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines, etapas e motivos de perda, Jornadas, Reuniões, Tarefas, Observações, Tickets, Atendimentos, Usuários, Equipes, Áreas de trabalho, Campos personalizados e os eventos de webhook.
|
|
4
4
|
*
|
|
5
5
|
* The version of the OpenAPI document: 2026-11
|
|
6
6
|
* Contact: suporte@magnetcustomer.com
|
|
@@ -36,7 +36,7 @@ export declare const DealsApiAxiosParamCreator: (configuration?: Configuration)
|
|
|
36
36
|
*/
|
|
37
37
|
closeDeal: (id: string, closeDealRequest: CloseDealRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
|
|
38
38
|
/**
|
|
39
|
-
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`.
|
|
39
|
+
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`. **Permissão do Service Account:** `deals.create`
|
|
40
40
|
* @summary Criar oportunidade
|
|
41
41
|
* @param {DealCreate} dealCreate
|
|
42
42
|
* @param {string} [idempotencyKey] Chave única da operação (UUID). Repita a mesma chave nas novas tentativas.
|
|
@@ -45,7 +45,7 @@ export declare const DealsApiAxiosParamCreator: (configuration?: Configuration)
|
|
|
45
45
|
*/
|
|
46
46
|
createDeal: (dealCreate: DealCreate, idempotencyKey?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
|
|
47
47
|
/**
|
|
48
|
-
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas.
|
|
48
|
+
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas. **Permissão do Service Account:** `deals.delete`
|
|
49
49
|
* @summary Excluir oportunidade
|
|
50
50
|
* @param {string} id ID do registro.
|
|
51
51
|
* @param {*} [options] Override http request option.
|
|
@@ -53,7 +53,7 @@ export declare const DealsApiAxiosParamCreator: (configuration?: Configuration)
|
|
|
53
53
|
*/
|
|
54
54
|
deleteDeal: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
|
|
55
55
|
/**
|
|
56
|
-
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo.
|
|
56
|
+
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo. **Permissão do Service Account:** `deals.read`
|
|
57
57
|
* @summary Obter oportunidade
|
|
58
58
|
* @param {string} id ID do registro.
|
|
59
59
|
* @param {*} [options] Override http request option.
|
|
@@ -69,7 +69,7 @@ export declare const DealsApiAxiosParamCreator: (configuration?: Configuration)
|
|
|
69
69
|
*/
|
|
70
70
|
getDealStageHistory: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
|
|
71
71
|
/**
|
|
72
|
-
* Ordenação padrão: `createdAt` decrescente.
|
|
72
|
+
* Ordenação padrão: `createdAt` decrescente. **Permissão do Service Account:** `deals.list`
|
|
73
73
|
* @summary Listar oportunidades
|
|
74
74
|
* @param {number} [page] Página, a partir de 1. **Envie sempre**: sem `page`, a resposta vem como lista simples, sem o envelope de paginação, e `limit` é ignorado.
|
|
75
75
|
* @param {number} [limit] Registros por página. Padrão: 15, salvo indicação na operação. Máximo: 100 — acima disso a API usa 100.
|
|
@@ -79,8 +79,8 @@ export declare const DealsApiAxiosParamCreator: (configuration?: Configuration)
|
|
|
79
79
|
* @param {string} [stage] ID da etapa.
|
|
80
80
|
* @param {string} [contact] ID do contato.
|
|
81
81
|
* @param {string} [organization] ID da empresa.
|
|
82
|
-
* @param {Array<string>} [staffs] Usuários: busca em responsável, participantes e observadores.
|
|
83
|
-
* @param {Array<string>} [contacts] Vários contatos.
|
|
82
|
+
* @param {Array<string>} [staffs] Usuários: busca em responsável, participantes e observadores. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
83
|
+
* @param {Array<string>} [contacts] Vários contatos. Lista de IDs: envie com colchetes, mesmo para um só valor (`?contacts[]=id1&contacts[]=id2`).
|
|
84
84
|
* @param {number} [minDate] Fechamento previsto (`expectedCloseDate`) a partir de. Timestamp em milissegundos, não data ISO.
|
|
85
85
|
* @param {number} [maxDate] Fechamento previsto até. Timestamp em milissegundos.
|
|
86
86
|
* @param {string} [search] Busca em título, nome e e-mail do contato.
|
|
@@ -107,7 +107,7 @@ export declare const DealsApiAxiosParamCreator: (configuration?: Configuration)
|
|
|
107
107
|
*/
|
|
108
108
|
reopenDeal: (id: string, reopenDealRequest?: ReopenDealRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
|
|
109
109
|
/**
|
|
110
|
-
* Envie só os campos que mudam.
|
|
110
|
+
* Envie só os campos que mudam. **Permissão do Service Account:** `deals.update`
|
|
111
111
|
* @summary Atualizar oportunidade
|
|
112
112
|
* @param {string} id ID do registro.
|
|
113
113
|
* @param {DealInput} dealInput
|
|
@@ -138,7 +138,7 @@ export declare const DealsApiFp: (configuration?: Configuration) => {
|
|
|
138
138
|
*/
|
|
139
139
|
closeDeal(id: string, closeDealRequest: CloseDealRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Deal>>;
|
|
140
140
|
/**
|
|
141
|
-
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`.
|
|
141
|
+
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`. **Permissão do Service Account:** `deals.create`
|
|
142
142
|
* @summary Criar oportunidade
|
|
143
143
|
* @param {DealCreate} dealCreate
|
|
144
144
|
* @param {string} [idempotencyKey] Chave única da operação (UUID). Repita a mesma chave nas novas tentativas.
|
|
@@ -147,7 +147,7 @@ export declare const DealsApiFp: (configuration?: Configuration) => {
|
|
|
147
147
|
*/
|
|
148
148
|
createDeal(dealCreate: DealCreate, idempotencyKey?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Deal>>;
|
|
149
149
|
/**
|
|
150
|
-
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas.
|
|
150
|
+
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas. **Permissão do Service Account:** `deals.delete`
|
|
151
151
|
* @summary Excluir oportunidade
|
|
152
152
|
* @param {string} id ID do registro.
|
|
153
153
|
* @param {*} [options] Override http request option.
|
|
@@ -155,7 +155,7 @@ export declare const DealsApiFp: (configuration?: Configuration) => {
|
|
|
155
155
|
*/
|
|
156
156
|
deleteDeal(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Deal>>;
|
|
157
157
|
/**
|
|
158
|
-
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo.
|
|
158
|
+
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo. **Permissão do Service Account:** `deals.read`
|
|
159
159
|
* @summary Obter oportunidade
|
|
160
160
|
* @param {string} id ID do registro.
|
|
161
161
|
* @param {*} [options] Override http request option.
|
|
@@ -171,7 +171,7 @@ export declare const DealsApiFp: (configuration?: Configuration) => {
|
|
|
171
171
|
*/
|
|
172
172
|
getDealStageHistory(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetDealStageHistory200Response>>;
|
|
173
173
|
/**
|
|
174
|
-
* Ordenação padrão: `createdAt` decrescente.
|
|
174
|
+
* Ordenação padrão: `createdAt` decrescente. **Permissão do Service Account:** `deals.list`
|
|
175
175
|
* @summary Listar oportunidades
|
|
176
176
|
* @param {number} [page] Página, a partir de 1. **Envie sempre**: sem `page`, a resposta vem como lista simples, sem o envelope de paginação, e `limit` é ignorado.
|
|
177
177
|
* @param {number} [limit] Registros por página. Padrão: 15, salvo indicação na operação. Máximo: 100 — acima disso a API usa 100.
|
|
@@ -181,8 +181,8 @@ export declare const DealsApiFp: (configuration?: Configuration) => {
|
|
|
181
181
|
* @param {string} [stage] ID da etapa.
|
|
182
182
|
* @param {string} [contact] ID do contato.
|
|
183
183
|
* @param {string} [organization] ID da empresa.
|
|
184
|
-
* @param {Array<string>} [staffs] Usuários: busca em responsável, participantes e observadores.
|
|
185
|
-
* @param {Array<string>} [contacts] Vários contatos.
|
|
184
|
+
* @param {Array<string>} [staffs] Usuários: busca em responsável, participantes e observadores. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
185
|
+
* @param {Array<string>} [contacts] Vários contatos. Lista de IDs: envie com colchetes, mesmo para um só valor (`?contacts[]=id1&contacts[]=id2`).
|
|
186
186
|
* @param {number} [minDate] Fechamento previsto (`expectedCloseDate`) a partir de. Timestamp em milissegundos, não data ISO.
|
|
187
187
|
* @param {number} [maxDate] Fechamento previsto até. Timestamp em milissegundos.
|
|
188
188
|
* @param {string} [search] Busca em título, nome e e-mail do contato.
|
|
@@ -209,7 +209,7 @@ export declare const DealsApiFp: (configuration?: Configuration) => {
|
|
|
209
209
|
*/
|
|
210
210
|
reopenDeal(id: string, reopenDealRequest?: ReopenDealRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Deal>>;
|
|
211
211
|
/**
|
|
212
|
-
* Envie só os campos que mudam.
|
|
212
|
+
* Envie só os campos que mudam. **Permissão do Service Account:** `deals.update`
|
|
213
213
|
* @summary Atualizar oportunidade
|
|
214
214
|
* @param {string} id ID do registro.
|
|
215
215
|
* @param {DealInput} dealInput
|
|
@@ -239,7 +239,7 @@ export declare const DealsApiFactory: (configuration?: Configuration, basePath?:
|
|
|
239
239
|
*/
|
|
240
240
|
closeDeal(requestParameters: DealsApiCloseDealRequest, options?: RawAxiosRequestConfig): AxiosPromise<Deal>;
|
|
241
241
|
/**
|
|
242
|
-
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`.
|
|
242
|
+
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`. **Permissão do Service Account:** `deals.create`
|
|
243
243
|
* @summary Criar oportunidade
|
|
244
244
|
* @param {DealsApiCreateDealRequest} requestParameters Request parameters.
|
|
245
245
|
* @param {*} [options] Override http request option.
|
|
@@ -247,7 +247,7 @@ export declare const DealsApiFactory: (configuration?: Configuration, basePath?:
|
|
|
247
247
|
*/
|
|
248
248
|
createDeal(requestParameters: DealsApiCreateDealRequest, options?: RawAxiosRequestConfig): AxiosPromise<Deal>;
|
|
249
249
|
/**
|
|
250
|
-
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas.
|
|
250
|
+
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas. **Permissão do Service Account:** `deals.delete`
|
|
251
251
|
* @summary Excluir oportunidade
|
|
252
252
|
* @param {DealsApiDeleteDealRequest} requestParameters Request parameters.
|
|
253
253
|
* @param {*} [options] Override http request option.
|
|
@@ -255,7 +255,7 @@ export declare const DealsApiFactory: (configuration?: Configuration, basePath?:
|
|
|
255
255
|
*/
|
|
256
256
|
deleteDeal(requestParameters: DealsApiDeleteDealRequest, options?: RawAxiosRequestConfig): AxiosPromise<Deal>;
|
|
257
257
|
/**
|
|
258
|
-
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo.
|
|
258
|
+
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo. **Permissão do Service Account:** `deals.read`
|
|
259
259
|
* @summary Obter oportunidade
|
|
260
260
|
* @param {DealsApiGetDealRequest} requestParameters Request parameters.
|
|
261
261
|
* @param {*} [options] Override http request option.
|
|
@@ -271,7 +271,7 @@ export declare const DealsApiFactory: (configuration?: Configuration, basePath?:
|
|
|
271
271
|
*/
|
|
272
272
|
getDealStageHistory(requestParameters: DealsApiGetDealStageHistoryRequest, options?: RawAxiosRequestConfig): AxiosPromise<GetDealStageHistory200Response>;
|
|
273
273
|
/**
|
|
274
|
-
* Ordenação padrão: `createdAt` decrescente.
|
|
274
|
+
* Ordenação padrão: `createdAt` decrescente. **Permissão do Service Account:** `deals.list`
|
|
275
275
|
* @summary Listar oportunidades
|
|
276
276
|
* @param {DealsApiListDealsRequest} requestParameters Request parameters.
|
|
277
277
|
* @param {*} [options] Override http request option.
|
|
@@ -295,7 +295,7 @@ export declare const DealsApiFactory: (configuration?: Configuration, basePath?:
|
|
|
295
295
|
*/
|
|
296
296
|
reopenDeal(requestParameters: DealsApiReopenDealRequest, options?: RawAxiosRequestConfig): AxiosPromise<Deal>;
|
|
297
297
|
/**
|
|
298
|
-
* Envie só os campos que mudam.
|
|
298
|
+
* Envie só os campos que mudam. **Permissão do Service Account:** `deals.update`
|
|
299
299
|
* @summary Atualizar oportunidade
|
|
300
300
|
* @param {DealsApiUpdateDealRequest} requestParameters Request parameters.
|
|
301
301
|
* @param {*} [options] Override http request option.
|
|
@@ -395,11 +395,11 @@ export interface DealsApiListDealsRequest {
|
|
|
395
395
|
*/
|
|
396
396
|
readonly organization?: string;
|
|
397
397
|
/**
|
|
398
|
-
* Usuários: busca em responsável, participantes e observadores.
|
|
398
|
+
* Usuários: busca em responsável, participantes e observadores. Lista de IDs: envie com colchetes, mesmo para um só valor (`?staffs[]=id1&staffs[]=id2`).
|
|
399
399
|
*/
|
|
400
400
|
readonly staffs?: Array<string>;
|
|
401
401
|
/**
|
|
402
|
-
* Vários contatos.
|
|
402
|
+
* Vários contatos. Lista de IDs: envie com colchetes, mesmo para um só valor (`?contacts[]=id1&contacts[]=id2`).
|
|
403
403
|
*/
|
|
404
404
|
readonly contacts?: Array<string>;
|
|
405
405
|
/**
|
|
@@ -467,7 +467,7 @@ export declare class DealsApi extends BaseAPI {
|
|
|
467
467
|
*/
|
|
468
468
|
closeDeal(requestParameters: DealsApiCloseDealRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<Deal, any, {}, any>>;
|
|
469
469
|
/**
|
|
470
|
-
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`.
|
|
470
|
+
* Se `staff` não for enviado, a API usa o usuário da credencial. A criação é idempotente por 5 minutos: reenviar o mesmo corpo não duplica o registro. Para controlar a chave, envie o cabeçalho `Idempotency-Key`. **Permissão do Service Account:** `deals.create`
|
|
471
471
|
* @summary Criar oportunidade
|
|
472
472
|
* @param {DealsApiCreateDealRequest} requestParameters Request parameters.
|
|
473
473
|
* @param {*} [options] Override http request option.
|
|
@@ -475,7 +475,7 @@ export declare class DealsApi extends BaseAPI {
|
|
|
475
475
|
*/
|
|
476
476
|
createDeal(requestParameters: DealsApiCreateDealRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<Deal, any, {}, any>>;
|
|
477
477
|
/**
|
|
478
|
-
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas.
|
|
478
|
+
* Exclusão lógica (`active: false`). Responde `400` com `code: DEAL_HAS_LINKED_JOURNEYS` se houver jornadas ativas vinculadas. **Permissão do Service Account:** `deals.delete`
|
|
479
479
|
* @summary Excluir oportunidade
|
|
480
480
|
* @param {DealsApiDeleteDealRequest} requestParameters Request parameters.
|
|
481
481
|
* @param {*} [options] Override http request option.
|
|
@@ -483,7 +483,7 @@ export declare class DealsApi extends BaseAPI {
|
|
|
483
483
|
*/
|
|
484
484
|
deleteDeal(requestParameters: DealsApiDeleteDealRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<Deal, any, {}, any>>;
|
|
485
485
|
/**
|
|
486
|
-
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo.
|
|
486
|
+
* No detalhe, `pipeline` vem como objeto (`_id`, `title`) e `contact` vem com o cadastro completo. **Permissão do Service Account:** `deals.read`
|
|
487
487
|
* @summary Obter oportunidade
|
|
488
488
|
* @param {DealsApiGetDealRequest} requestParameters Request parameters.
|
|
489
489
|
* @param {*} [options] Override http request option.
|
|
@@ -499,7 +499,7 @@ export declare class DealsApi extends BaseAPI {
|
|
|
499
499
|
*/
|
|
500
500
|
getDealStageHistory(requestParameters: DealsApiGetDealStageHistoryRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetDealStageHistory200Response, any, {}, any>>;
|
|
501
501
|
/**
|
|
502
|
-
* Ordenação padrão: `createdAt` decrescente.
|
|
502
|
+
* Ordenação padrão: `createdAt` decrescente. **Permissão do Service Account:** `deals.list`
|
|
503
503
|
* @summary Listar oportunidades
|
|
504
504
|
* @param {DealsApiListDealsRequest} requestParameters Request parameters.
|
|
505
505
|
* @param {*} [options] Override http request option.
|
|
@@ -523,7 +523,7 @@ export declare class DealsApi extends BaseAPI {
|
|
|
523
523
|
*/
|
|
524
524
|
reopenDeal(requestParameters: DealsApiReopenDealRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<Deal, any, {}, any>>;
|
|
525
525
|
/**
|
|
526
|
-
* Envie só os campos que mudam.
|
|
526
|
+
* Envie só os campos que mudam. **Permissão do Service Account:** `deals.update`
|
|
527
527
|
* @summary Atualizar oportunidade
|
|
528
528
|
* @param {DealsApiUpdateDealRequest} requestParameters Request parameters.
|
|
529
529
|
* @param {*} [options] Override http request option.
|