@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.
Files changed (248) hide show
  1. package/README.md +20 -3
  2. package/dist/client.d.ts +6 -1
  3. package/dist/client.js +5 -0
  4. package/dist/generated/api/contacts-api.d.ts +24 -24
  5. package/dist/generated/api/contacts-api.js +24 -24
  6. package/dist/generated/api/custom-fields-api.d.ts +1 -43
  7. package/dist/generated/api/custom-fields-api.js +1 -67
  8. package/dist/generated/api/customers-api.d.ts +4 -4
  9. package/dist/generated/api/customers-api.js +4 -4
  10. package/dist/generated/api/deals-api.d.ts +27 -27
  11. package/dist/generated/api/deals-api.js +27 -27
  12. package/dist/generated/api/journeys-api.d.ts +232 -0
  13. package/dist/generated/api/journeys-api.js +315 -0
  14. package/dist/generated/api/leads-api.d.ts +4 -4
  15. package/dist/generated/api/leads-api.js +4 -4
  16. package/dist/generated/api/meetings-api.d.ts +123 -27
  17. package/dist/generated/api/meetings-api.js +169 -27
  18. package/dist/generated/api/observations-api.d.ts +8 -8
  19. package/dist/generated/api/observations-api.js +8 -8
  20. package/dist/generated/api/organizations-api.d.ts +24 -24
  21. package/dist/generated/api/organizations-api.js +24 -24
  22. package/dist/generated/api/pipelines-api.d.ts +49 -1
  23. package/dist/generated/api/pipelines-api.js +72 -1
  24. package/dist/generated/api/prospects-api.d.ts +4 -4
  25. package/dist/generated/api/prospects-api.js +4 -4
  26. package/dist/generated/api/staffs-api.d.ts +1 -1
  27. package/dist/generated/api/staffs-api.js +1 -1
  28. package/dist/generated/api/task-types-api.d.ts +5 -5
  29. package/dist/generated/api/task-types-api.js +5 -5
  30. package/dist/generated/api/tasks-api.d.ts +32 -32
  31. package/dist/generated/api/tasks-api.js +32 -32
  32. package/dist/generated/api/teams-api.d.ts +130 -0
  33. package/dist/generated/api/teams-api.js +199 -0
  34. package/dist/generated/api/tickets-api.d.ts +610 -0
  35. package/dist/generated/api/tickets-api.js +860 -0
  36. package/dist/generated/api/treatments-api.d.ts +379 -0
  37. package/dist/generated/api/treatments-api.js +539 -0
  38. package/dist/generated/api/webhooks-api.d.ts +63 -0
  39. package/dist/generated/api/webhooks-api.js +116 -0
  40. package/dist/generated/api.d.ts +6 -1
  41. package/dist/generated/api.js +6 -1
  42. package/dist/generated/base.d.ts +1 -1
  43. package/dist/generated/base.js +1 -1
  44. package/dist/generated/common.d.ts +1 -1
  45. package/dist/generated/common.js +1 -1
  46. package/dist/generated/configuration.d.ts +1 -1
  47. package/dist/generated/configuration.js +1 -1
  48. package/dist/generated/index.d.ts +1 -1
  49. package/dist/generated/index.js +1 -1
  50. package/dist/generated/models/close-deal-request.d.ts +2 -2
  51. package/dist/generated/models/close-deal-request.js +1 -1
  52. package/dist/generated/models/contact-input-phones-inner.d.ts +1 -1
  53. package/dist/generated/models/contact-input-phones-inner.js +1 -1
  54. package/dist/generated/models/contact-input.d.ts +1 -1
  55. package/dist/generated/models/contact-input.js +1 -1
  56. package/dist/generated/models/contact-summary.d.ts +1 -1
  57. package/dist/generated/models/contact-summary.js +1 -1
  58. package/dist/generated/models/contact.d.ts +1 -1
  59. package/dist/generated/models/contact.js +1 -1
  60. package/dist/generated/models/create-observation-request.d.ts +1 -1
  61. package/dist/generated/models/create-observation-request.js +1 -1
  62. package/dist/generated/models/create-task-type-request.d.ts +1 -1
  63. package/dist/generated/models/create-task-type-request.js +1 -1
  64. package/dist/generated/models/create-ticket-message-request.d.ts +29 -0
  65. package/dist/generated/models/create-ticket-message-request.js +19 -0
  66. package/dist/generated/models/custom-field-settings.d.ts +1 -1
  67. package/dist/generated/models/custom-field-settings.js +1 -1
  68. package/dist/generated/models/custom-field-value.d.ts +1 -1
  69. package/dist/generated/models/custom-field-value.js +1 -1
  70. package/dist/generated/models/custom-field.d.ts +1 -1
  71. package/dist/generated/models/custom-field.js +1 -1
  72. package/dist/generated/models/deal-create.d.ts +1 -1
  73. package/dist/generated/models/deal-create.js +1 -1
  74. package/dist/generated/models/deal-input.d.ts +1 -1
  75. package/dist/generated/models/deal-input.js +1 -1
  76. package/dist/generated/models/deal-labels-inner.d.ts +1 -1
  77. package/dist/generated/models/deal-labels-inner.js +1 -1
  78. package/dist/generated/models/deal-organization.d.ts +1 -1
  79. package/dist/generated/models/deal-organization.js +1 -1
  80. package/dist/generated/models/deal-pipeline-one-of.d.ts +1 -1
  81. package/dist/generated/models/deal-pipeline-one-of.js +1 -1
  82. package/dist/generated/models/deal-pipeline.d.ts +1 -1
  83. package/dist/generated/models/deal-pipeline.js +1 -1
  84. package/dist/generated/models/deal-stage.d.ts +1 -1
  85. package/dist/generated/models/deal-stage.js +1 -1
  86. package/dist/generated/models/deal.d.ts +1 -1
  87. package/dist/generated/models/deal.js +1 -1
  88. package/dist/generated/models/delete-meetings-request.d.ts +1 -1
  89. package/dist/generated/models/delete-meetings-request.js +1 -1
  90. package/dist/generated/models/delete-meetings200-response.d.ts +1 -1
  91. package/dist/generated/models/delete-meetings200-response.js +1 -1
  92. package/dist/generated/models/delete-observations-request.d.ts +1 -1
  93. package/dist/generated/models/delete-observations-request.js +1 -1
  94. package/dist/generated/models/error-errors-inner.d.ts +1 -1
  95. package/dist/generated/models/error-errors-inner.js +1 -1
  96. package/dist/generated/models/finish-meeting-request.d.ts +1 -1
  97. package/dist/generated/models/finish-meeting-request.js +1 -1
  98. package/dist/generated/models/finish-tasks-request.d.ts +1 -1
  99. package/dist/generated/models/finish-tasks-request.js +1 -1
  100. package/dist/generated/models/get-deal-stage-history200-response-history-inner-stage.d.ts +1 -1
  101. package/dist/generated/models/get-deal-stage-history200-response-history-inner-stage.js +1 -1
  102. package/dist/generated/models/get-deal-stage-history200-response-history-inner.d.ts +1 -1
  103. package/dist/generated/models/get-deal-stage-history200-response-history-inner.js +1 -1
  104. package/dist/generated/models/get-deal-stage-history200-response-totals.d.ts +1 -1
  105. package/dist/generated/models/get-deal-stage-history200-response-totals.js +1 -1
  106. package/dist/generated/models/get-deal-stage-history200-response.d.ts +1 -1
  107. package/dist/generated/models/get-deal-stage-history200-response.js +1 -1
  108. package/dist/generated/models/get-journey-health-score200-response.d.ts +34 -0
  109. package/dist/generated/models/get-journey-health-score200-response.js +20 -0
  110. package/dist/generated/models/index.d.ts +27 -0
  111. package/dist/generated/models/index.js +27 -0
  112. package/dist/generated/models/journey.d.ts +111 -0
  113. package/dist/generated/models/journey.js +32 -0
  114. package/dist/generated/models/list-contacts200-response.d.ts +1 -1
  115. package/dist/generated/models/list-contacts200-response.js +1 -1
  116. package/dist/generated/models/list-custom-fields200-response.d.ts +1 -1
  117. package/dist/generated/models/list-custom-fields200-response.js +1 -1
  118. package/dist/generated/models/list-deals200-response.d.ts +1 -1
  119. package/dist/generated/models/list-deals200-response.js +1 -1
  120. package/dist/generated/models/list-deals401-response.d.ts +1 -1
  121. package/dist/generated/models/list-deals401-response.js +1 -1
  122. package/dist/generated/models/list-deals403-response.d.ts +1 -1
  123. package/dist/generated/models/list-deals403-response.js +1 -1
  124. package/dist/generated/models/list-journeys200-response.d.ts +16 -0
  125. package/dist/generated/models/list-journeys200-response.js +15 -0
  126. package/dist/generated/models/list-lost-reasons200-response.d.ts +16 -0
  127. package/dist/generated/models/list-lost-reasons200-response.js +15 -0
  128. package/dist/generated/models/list-meeting-rooms200-response.d.ts +16 -0
  129. package/dist/generated/models/list-meeting-rooms200-response.js +15 -0
  130. package/dist/generated/models/list-meeting-types200-response.d.ts +16 -0
  131. package/dist/generated/models/list-meeting-types200-response.js +15 -0
  132. package/dist/generated/models/list-meetings200-response.d.ts +1 -1
  133. package/dist/generated/models/list-meetings200-response.js +1 -1
  134. package/dist/generated/models/list-observations200-response.d.ts +1 -1
  135. package/dist/generated/models/list-observations200-response.js +1 -1
  136. package/dist/generated/models/list-organizations200-response.d.ts +1 -1
  137. package/dist/generated/models/list-organizations200-response.js +1 -1
  138. package/dist/generated/models/list-pipelines200-response.d.ts +1 -1
  139. package/dist/generated/models/list-pipelines200-response.js +1 -1
  140. package/dist/generated/models/list-staffs200-response.d.ts +1 -1
  141. package/dist/generated/models/list-staffs200-response.js +1 -1
  142. package/dist/generated/models/list-task-types200-response-one-of.d.ts +1 -1
  143. package/dist/generated/models/list-task-types200-response-one-of.js +1 -1
  144. package/dist/generated/models/list-task-types200-response.d.ts +1 -1
  145. package/dist/generated/models/list-task-types200-response.js +1 -1
  146. package/dist/generated/models/list-tasks200-response.d.ts +1 -1
  147. package/dist/generated/models/list-tasks200-response.js +1 -1
  148. package/dist/generated/models/list-teams200-response.d.ts +16 -0
  149. package/dist/generated/models/list-teams200-response.js +15 -0
  150. package/dist/generated/models/list-ticket-statuses200-response.d.ts +16 -0
  151. package/dist/generated/models/list-ticket-statuses200-response.js +15 -0
  152. package/dist/generated/models/list-tickets200-response.d.ts +16 -0
  153. package/dist/generated/models/list-tickets200-response.js +15 -0
  154. package/dist/generated/models/list-treatment-types200-response.d.ts +16 -0
  155. package/dist/generated/models/list-treatment-types200-response.js +15 -0
  156. package/dist/generated/models/list-treatments200-response.d.ts +16 -0
  157. package/dist/generated/models/list-treatments200-response.js +15 -0
  158. package/dist/generated/models/list-workspaces200-response.d.ts +16 -0
  159. package/dist/generated/models/list-workspaces200-response.js +15 -0
  160. package/dist/generated/models/lost-reason.d.ts +32 -0
  161. package/dist/generated/models/lost-reason.js +15 -0
  162. package/dist/generated/models/meeting-create.d.ts +1 -1
  163. package/dist/generated/models/meeting-create.js +1 -1
  164. package/dist/generated/models/meeting-deal.d.ts +1 -1
  165. package/dist/generated/models/meeting-deal.js +1 -1
  166. package/dist/generated/models/meeting-input.d.ts +1 -1
  167. package/dist/generated/models/meeting-input.js +1 -1
  168. package/dist/generated/models/meeting-room.d.ts +1 -1
  169. package/dist/generated/models/meeting-room.js +1 -1
  170. package/dist/generated/models/meeting-type.d.ts +1 -1
  171. package/dist/generated/models/meeting-type.js +1 -1
  172. package/dist/generated/models/meeting.d.ts +1 -1
  173. package/dist/generated/models/meeting.js +1 -1
  174. package/dist/generated/models/model-error.d.ts +1 -1
  175. package/dist/generated/models/model-error.js +1 -1
  176. package/dist/generated/models/move-deal-stage-request.d.ts +1 -1
  177. package/dist/generated/models/move-deal-stage-request.js +1 -1
  178. package/dist/generated/models/move-deal-stage200-response.d.ts +1 -1
  179. package/dist/generated/models/move-deal-stage200-response.js +1 -1
  180. package/dist/generated/models/observation-deal.d.ts +1 -1
  181. package/dist/generated/models/observation-deal.js +1 -1
  182. package/dist/generated/models/observation-input.d.ts +1 -1
  183. package/dist/generated/models/observation-input.js +1 -1
  184. package/dist/generated/models/observation-organization.d.ts +1 -1
  185. package/dist/generated/models/observation-organization.js +1 -1
  186. package/dist/generated/models/observation.d.ts +1 -1
  187. package/dist/generated/models/observation.js +1 -1
  188. package/dist/generated/models/organization-input.d.ts +1 -1
  189. package/dist/generated/models/organization-input.js +1 -1
  190. package/dist/generated/models/organization.d.ts +1 -1
  191. package/dist/generated/models/organization.js +1 -1
  192. package/dist/generated/models/page.d.ts +1 -1
  193. package/dist/generated/models/page.js +1 -1
  194. package/dist/generated/models/pipeline.d.ts +1 -1
  195. package/dist/generated/models/pipeline.js +1 -1
  196. package/dist/generated/models/reopen-deal-request.d.ts +1 -1
  197. package/dist/generated/models/reopen-deal-request.js +1 -1
  198. package/dist/generated/models/staff-summary.d.ts +1 -1
  199. package/dist/generated/models/staff-summary.js +1 -1
  200. package/dist/generated/models/staff.d.ts +1 -1
  201. package/dist/generated/models/staff.js +1 -1
  202. package/dist/generated/models/stage.d.ts +1 -1
  203. package/dist/generated/models/stage.js +1 -1
  204. package/dist/generated/models/task-create.d.ts +1 -1
  205. package/dist/generated/models/task-create.js +1 -1
  206. package/dist/generated/models/task-deal.d.ts +1 -1
  207. package/dist/generated/models/task-deal.js +1 -1
  208. package/dist/generated/models/task-input.d.ts +1 -1
  209. package/dist/generated/models/task-input.js +1 -1
  210. package/dist/generated/models/task-type.d.ts +1 -1
  211. package/dist/generated/models/task-type.js +1 -1
  212. package/dist/generated/models/task.d.ts +1 -1
  213. package/dist/generated/models/task.js +1 -1
  214. package/dist/generated/models/team.d.ts +27 -0
  215. package/dist/generated/models/team.js +15 -0
  216. package/dist/generated/models/ticket-create.d.ts +16 -0
  217. package/dist/generated/models/ticket-create.js +15 -0
  218. package/dist/generated/models/ticket-input.d.ts +77 -0
  219. package/dist/generated/models/ticket-input.js +22 -0
  220. package/dist/generated/models/ticket-message.d.ts +33 -0
  221. package/dist/generated/models/ticket-message.js +15 -0
  222. package/dist/generated/models/ticket-status-workspace.d.ts +18 -0
  223. package/dist/generated/models/ticket-status-workspace.js +15 -0
  224. package/dist/generated/models/ticket-status.d.ts +37 -0
  225. package/dist/generated/models/ticket-status.js +15 -0
  226. package/dist/generated/models/ticket.d.ts +87 -0
  227. package/dist/generated/models/ticket.js +22 -0
  228. package/dist/generated/models/treatment-input.d.ts +58 -0
  229. package/dist/generated/models/treatment-input.js +15 -0
  230. package/dist/generated/models/treatment-type.d.ts +43 -0
  231. package/dist/generated/models/treatment-type.js +15 -0
  232. package/dist/generated/models/treatment.d.ts +64 -0
  233. package/dist/generated/models/treatment.js +15 -0
  234. package/dist/generated/models/update-task-type-request.d.ts +1 -1
  235. package/dist/generated/models/update-task-type-request.js +1 -1
  236. package/dist/generated/models/validate-deal200-response-required-actions-pending.d.ts +1 -1
  237. package/dist/generated/models/validate-deal200-response-required-actions-pending.js +1 -1
  238. package/dist/generated/models/validate-deal200-response-required-field-pending.d.ts +1 -1
  239. package/dist/generated/models/validate-deal200-response-required-field-pending.js +1 -1
  240. package/dist/generated/models/validate-deal200-response.d.ts +1 -1
  241. package/dist/generated/models/validate-deal200-response.js +1 -1
  242. package/dist/generated/models/webhook-trigger-group-triggers-inner.d.ts +29 -0
  243. package/dist/generated/models/webhook-trigger-group-triggers-inner.js +15 -0
  244. package/dist/generated/models/webhook-trigger-group.d.ts +22 -0
  245. package/dist/generated/models/webhook-trigger-group.js +15 -0
  246. package/dist/generated/models/workspace.d.ts +23 -0
  247. package/dist/generated/models/workspace.js +15 -0
  248. package/package.json +1 -1
package/README.md CHANGED
@@ -60,12 +60,17 @@ Cada método devolve a resposta do [axios](https://axios-http.com): o corpo est
60
60
  | `crm.leads`, `crm.prospects`, `crm.customers` | Contatos por fase |
61
61
  | `crm.organizations` | Empresas |
62
62
  | `crm.deals` | Oportunidades |
63
- | `crm.pipelines` | Pipelines e etapas |
64
- | `crm.meetings` | Reuniões |
63
+ | `crm.pipelines` | Pipelines, etapas e motivos de perda |
64
+ | `crm.journeys` | Jornadas (leitura) |
65
+ | `crm.meetings` | Reuniões, tipos e salas |
65
66
  | `crm.tasks`, `crm.taskTypes` | Tarefas e tipos de tarefa |
66
67
  | `crm.observations` | Observações |
68
+ | `crm.tickets` | Tickets, situações e mensagens |
69
+ | `crm.treatments` | Atendimentos e tipos |
67
70
  | `crm.staffs` | Usuários |
68
71
  | `crm.customFields` | Campos personalizados |
72
+ | `crm.teams` | Equipes e áreas de trabalho |
73
+ | `crm.webhooks` | Eventos de webhook disponíveis |
69
74
 
70
75
  Os parâmetros, o corpo aceito e a resposta de cada operação estão na [referência da API](https://magnetcustomer.com/developers/api-reference). Os nomes dos métodos são os `operationId` de lá.
71
76
 
@@ -83,6 +88,18 @@ async function* allDeals() {
83
88
  }
84
89
  ```
85
90
 
91
+ ## Filtros com vários valores
92
+
93
+ Passe uma lista; o SDK envia no formato que a API espera (`staffs[]=...`), inclusive com um valor só:
94
+
95
+ ```ts
96
+ await crm.contacts.listContacts({ page: 1, staffs: [staffId] });
97
+ ```
98
+
99
+ ## Webhooks
100
+
101
+ Os webhooks são criados por um administrador no CRM, em **Integrações › Webhooks**. O SDK lista os eventos disponíveis com `crm.webhooks.listWebhookTriggers()`.
102
+
86
103
  ## Erros
87
104
 
88
105
  Uma resposta fora de 2xx lança o erro do axios, com o status e o corpo da API:
@@ -123,7 +140,7 @@ A 2.0 foi refeita a partir da referência atual da API e muda a interface:
123
140
  - Um cliente só (`new MagnetCustomer({ account, clientId, clientSecret })`) no lugar de `Configuration` + uma classe por API.
124
141
  - O token é obtido e renovado pelo SDK.
125
142
  - Os métodos têm os nomes da referência (`listDeals`, `createContact`...) e recebem um objeto de parâmetros.
126
- - A 2.0 cobre os recursos da tabela acima. Tickets, Atendimentos e Webhooks entram nas próximas versões; até lá, chame essas rotas com o token de `crm.tokens.getAccessToken()`.
143
+ - A 2.x cobre os recursos da tabela acima, os mesmos da referência pública. Para uma rota fora dela, use o token de `crm.tokens.getAccessToken()` no seu cliente HTTP.
127
144
 
128
145
  ## Desenvolvimento
129
146
 
package/dist/client.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AxiosInstance } from 'axios';
2
2
  import { ServiceAccountCredentials, TokenManager } from './auth';
3
- import { ContactsApi, CustomFieldsApi, CustomersApi, DealsApi, LeadsApi, MeetingsApi, ObservationsApi, OrganizationsApi, PipelinesApi, ProspectsApi, StaffsApi, TaskTypesApi, TasksApi } from './generated/api';
3
+ import { ContactsApi, CustomFieldsApi, CustomersApi, DealsApi, JourneysApi, LeadsApi, MeetingsApi, ObservationsApi, OrganizationsApi, PipelinesApi, ProspectsApi, StaffsApi, TaskTypesApi, TasksApi, TeamsApi, TicketsApi, TreatmentsApi, WebhooksApi } from './generated/api';
4
4
  export interface MagnetCustomerOptions extends ServiceAccountCredentials {
5
5
  /** Subdomínio da conta: o mesmo usado para abrir o CRM (`acme` em `acme.magnetcustomer.com`). */
6
6
  account: string;
@@ -28,6 +28,11 @@ export declare class MagnetCustomer {
28
28
  readonly observations: ObservationsApi;
29
29
  readonly staffs: StaffsApi;
30
30
  readonly customFields: CustomFieldsApi;
31
+ readonly tickets: TicketsApi;
32
+ readonly treatments: TreatmentsApi;
33
+ readonly journeys: JourneysApi;
34
+ readonly teams: TeamsApi;
35
+ readonly webhooks: WebhooksApi;
31
36
  readonly tokens: TokenManager;
32
37
  readonly baseUrl: string;
33
38
  constructor(options: MagnetCustomerOptions, http?: AxiosInstance);
package/dist/client.js CHANGED
@@ -55,6 +55,11 @@ class MagnetCustomer {
55
55
  this.observations = build(api_1.ObservationsApi);
56
56
  this.staffs = build(api_1.StaffsApi);
57
57
  this.customFields = build(api_1.CustomFieldsApi);
58
+ this.tickets = build(api_1.TicketsApi);
59
+ this.treatments = build(api_1.TreatmentsApi);
60
+ this.journeys = build(api_1.JourneysApi);
61
+ this.teams = build(api_1.TeamsApi);
62
+ this.webhooks = build(api_1.WebhooksApi);
58
63
  }
59
64
  }
60
65
  exports.MagnetCustomer = MagnetCustomer;
@@ -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`, a maioria das listagens devolve uma lista simples (`[...]`), sem o envelope, e ignora `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`, `dateOfExpires_minDate`...), o valor é um **timestamp em milissegundos**, como `1798761600000`; uma data ISO ali não filtra o que você espera. ## 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`) ou a rota exige administrador (`type: ADMIN_REQUIRED`) | | `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` | ## 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`. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines e etapas, Reuniões, Tarefas, Observações, Usuários e Campos personalizados. Tickets, Atendimentos e Webhooks entram nas próximas revisões.
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
@@ -20,7 +20,7 @@ import type { ListContacts200Response } from '../models';
20
20
  */
21
21
  export declare const ContactsApiAxiosParamCreator: (configuration?: Configuration) => {
22
22
  /**
23
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
23
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
24
24
  * @summary Criar contato
25
25
  * @param {ContactInput} contactInput
26
26
  * @param {*} [options] Override http request option.
@@ -28,7 +28,7 @@ export declare const ContactsApiAxiosParamCreator: (configuration?: Configuratio
28
28
  */
29
29
  createContact: (contactInput: ContactInput, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
30
30
  /**
31
- * Exige a permissão de excluir.
31
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
32
32
  * @summary Excluir contato
33
33
  * @param {string} id ID do registro.
34
34
  * @param {*} [options] Override http request option.
@@ -36,7 +36,7 @@ export declare const ContactsApiAxiosParamCreator: (configuration?: Configuratio
36
36
  */
37
37
  deleteContact: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
38
38
  /**
39
- *
39
+ * **Permissão do Service Account:** `contacts.read`
40
40
  * @summary Obter contato
41
41
  * @param {string} id ID do registro.
42
42
  * @param {*} [options] Override http request option.
@@ -44,13 +44,13 @@ export declare const ContactsApiAxiosParamCreator: (configuration?: Configuratio
44
44
  */
45
45
  getContact: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
46
46
  /**
47
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
47
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
48
48
  * @summary Listar contatos
49
49
  * @param {number} [page] Página, a partir de 1. **Envie sempre**: sem &#x60;page&#x60;, a resposta vem como lista simples, sem o envelope de paginação, e &#x60;limit&#x60; é ignorado.
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 {ListContactsSortTypeEnum} [sortType] Direção da ordenação.
53
- * @param {Array<string>} [staffs] Usuários responsáveis. Repita o parâmetro para enviar vários (&#x60;?staffs&#x3D;id1&amp;staffs&#x3D;id2&#x60;).
53
+ * @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (&#x60;?staffs[]&#x3D;id1&amp;staffs[]&#x3D;id2&#x60;).
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 &#x60;true&#x60;, só os sem e-mail.
@@ -61,7 +61,7 @@ export declare const ContactsApiAxiosParamCreator: (configuration?: Configuratio
61
61
  */
62
62
  listContacts: (page?: number, limit?: number, sortBy?: string, sortType?: ListContactsSortTypeEnum, staffs?: Array<string>, organization?: string, search?: string, emailsEmpty?: boolean, phonesEmpty?: boolean, lifeCycle?: ListContactsLifeCycleEnum, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
63
63
  /**
64
- * Envie só os campos que mudam.
64
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
65
65
  * @summary Atualizar contato
66
66
  * @param {string} id ID do registro.
67
67
  * @param {ContactInput} contactInput
@@ -75,7 +75,7 @@ export declare const ContactsApiAxiosParamCreator: (configuration?: Configuratio
75
75
  */
76
76
  export declare const ContactsApiFp: (configuration?: Configuration) => {
77
77
  /**
78
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
78
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
79
79
  * @summary Criar contato
80
80
  * @param {ContactInput} contactInput
81
81
  * @param {*} [options] Override http request option.
@@ -83,7 +83,7 @@ export declare const ContactsApiFp: (configuration?: Configuration) => {
83
83
  */
84
84
  createContact(contactInput: ContactInput, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Contact>>;
85
85
  /**
86
- * Exige a permissão de excluir.
86
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
87
87
  * @summary Excluir contato
88
88
  * @param {string} id ID do registro.
89
89
  * @param {*} [options] Override http request option.
@@ -91,7 +91,7 @@ export declare const ContactsApiFp: (configuration?: Configuration) => {
91
91
  */
92
92
  deleteContact(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
93
93
  /**
94
- *
94
+ * **Permissão do Service Account:** `contacts.read`
95
95
  * @summary Obter contato
96
96
  * @param {string} id ID do registro.
97
97
  * @param {*} [options] Override http request option.
@@ -99,13 +99,13 @@ export declare const ContactsApiFp: (configuration?: Configuration) => {
99
99
  */
100
100
  getContact(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Contact>>;
101
101
  /**
102
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
102
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
103
103
  * @summary Listar contatos
104
104
  * @param {number} [page] Página, a partir de 1. **Envie sempre**: sem &#x60;page&#x60;, a resposta vem como lista simples, sem o envelope de paginação, e &#x60;limit&#x60; é ignorado.
105
105
  * @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.
106
106
  * @param {string} [sortBy] Campo de ordenação. O padrão varia por recurso.
107
107
  * @param {ListContactsSortTypeEnum} [sortType] Direção da ordenação.
108
- * @param {Array<string>} [staffs] Usuários responsáveis. Repita o parâmetro para enviar vários (&#x60;?staffs&#x3D;id1&amp;staffs&#x3D;id2&#x60;).
108
+ * @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (&#x60;?staffs[]&#x3D;id1&amp;staffs[]&#x3D;id2&#x60;).
109
109
  * @param {string} [organization] ID da empresa vinculada.
110
110
  * @param {string} [search] Busca em nome, e-mail, telefone e documento.
111
111
  * @param {boolean} [emailsEmpty] Com &#x60;true&#x60;, só os sem e-mail.
@@ -116,7 +116,7 @@ export declare const ContactsApiFp: (configuration?: Configuration) => {
116
116
  */
117
117
  listContacts(page?: number, limit?: number, sortBy?: string, sortType?: ListContactsSortTypeEnum, staffs?: Array<string>, organization?: string, search?: string, emailsEmpty?: boolean, phonesEmpty?: boolean, lifeCycle?: ListContactsLifeCycleEnum, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListContacts200Response>>;
118
118
  /**
119
- * Envie só os campos que mudam.
119
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
120
120
  * @summary Atualizar contato
121
121
  * @param {string} id ID do registro.
122
122
  * @param {ContactInput} contactInput
@@ -130,7 +130,7 @@ export declare const ContactsApiFp: (configuration?: Configuration) => {
130
130
  */
131
131
  export declare const ContactsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
132
132
  /**
133
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
133
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
134
134
  * @summary Criar contato
135
135
  * @param {ContactsApiCreateContactRequest} requestParameters Request parameters.
136
136
  * @param {*} [options] Override http request option.
@@ -138,7 +138,7 @@ export declare const ContactsApiFactory: (configuration?: Configuration, basePat
138
138
  */
139
139
  createContact(requestParameters: ContactsApiCreateContactRequest, options?: RawAxiosRequestConfig): AxiosPromise<Contact>;
140
140
  /**
141
- * Exige a permissão de excluir.
141
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
142
142
  * @summary Excluir contato
143
143
  * @param {ContactsApiDeleteContactRequest} requestParameters Request parameters.
144
144
  * @param {*} [options] Override http request option.
@@ -146,7 +146,7 @@ export declare const ContactsApiFactory: (configuration?: Configuration, basePat
146
146
  */
147
147
  deleteContact(requestParameters: ContactsApiDeleteContactRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
148
148
  /**
149
- *
149
+ * **Permissão do Service Account:** `contacts.read`
150
150
  * @summary Obter contato
151
151
  * @param {ContactsApiGetContactRequest} requestParameters Request parameters.
152
152
  * @param {*} [options] Override http request option.
@@ -154,7 +154,7 @@ export declare const ContactsApiFactory: (configuration?: Configuration, basePat
154
154
  */
155
155
  getContact(requestParameters: ContactsApiGetContactRequest, options?: RawAxiosRequestConfig): AxiosPromise<Contact>;
156
156
  /**
157
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
157
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
158
158
  * @summary Listar contatos
159
159
  * @param {ContactsApiListContactsRequest} requestParameters Request parameters.
160
160
  * @param {*} [options] Override http request option.
@@ -162,7 +162,7 @@ export declare const ContactsApiFactory: (configuration?: Configuration, basePat
162
162
  */
163
163
  listContacts(requestParameters?: ContactsApiListContactsRequest, options?: RawAxiosRequestConfig): AxiosPromise<ListContacts200Response>;
164
164
  /**
165
- * Envie só os campos que mudam.
165
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
166
166
  * @summary Atualizar contato
167
167
  * @param {ContactsApiUpdateContactRequest} requestParameters Request parameters.
168
168
  * @param {*} [options] Override http request option.
@@ -215,7 +215,7 @@ export interface ContactsApiListContactsRequest {
215
215
  */
216
216
  readonly sortType?: ListContactsSortTypeEnum;
217
217
  /**
218
- * Usuários responsáveis. Repita o parâmetro para enviar vários (&#x60;?staffs&#x3D;id1&amp;staffs&#x3D;id2&#x60;).
218
+ * Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (&#x60;?staffs[]&#x3D;id1&amp;staffs[]&#x3D;id2&#x60;).
219
219
  */
220
220
  readonly staffs?: Array<string>;
221
221
  /**
@@ -254,7 +254,7 @@ export interface ContactsApiUpdateContactRequest {
254
254
  */
255
255
  export declare class ContactsApi extends BaseAPI {
256
256
  /**
257
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
257
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
258
258
  * @summary Criar contato
259
259
  * @param {ContactsApiCreateContactRequest} requestParameters Request parameters.
260
260
  * @param {*} [options] Override http request option.
@@ -262,7 +262,7 @@ export declare class ContactsApi extends BaseAPI {
262
262
  */
263
263
  createContact(requestParameters: ContactsApiCreateContactRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<Contact, any, {}, any>>;
264
264
  /**
265
- * Exige a permissão de excluir.
265
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
266
266
  * @summary Excluir contato
267
267
  * @param {ContactsApiDeleteContactRequest} requestParameters Request parameters.
268
268
  * @param {*} [options] Override http request option.
@@ -270,7 +270,7 @@ export declare class ContactsApi extends BaseAPI {
270
270
  */
271
271
  deleteContact(requestParameters: ContactsApiDeleteContactRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}, any>>;
272
272
  /**
273
- *
273
+ * **Permissão do Service Account:** `contacts.read`
274
274
  * @summary Obter contato
275
275
  * @param {ContactsApiGetContactRequest} requestParameters Request parameters.
276
276
  * @param {*} [options] Override http request option.
@@ -278,7 +278,7 @@ export declare class ContactsApi extends BaseAPI {
278
278
  */
279
279
  getContact(requestParameters: ContactsApiGetContactRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<Contact, any, {}, any>>;
280
280
  /**
281
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
281
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
282
282
  * @summary Listar contatos
283
283
  * @param {ContactsApiListContactsRequest} requestParameters Request parameters.
284
284
  * @param {*} [options] Override http request option.
@@ -286,7 +286,7 @@ export declare class ContactsApi extends BaseAPI {
286
286
  */
287
287
  listContacts(requestParameters?: ContactsApiListContactsRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<import("../models").Page, any, {}, any>>;
288
288
  /**
289
- * Envie só os campos que mudam.
289
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
290
290
  * @summary Atualizar contato
291
291
  * @param {ContactsApiUpdateContactRequest} requestParameters Request parameters.
292
292
  * @param {*} [options] Override http request option.
@@ -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`, a maioria das listagens devolve uma lista simples (`[...]`), sem o envelope, e ignora `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`, `dateOfExpires_minDate`...), o valor é um **timestamp em milissegundos**, como `1798761600000`; uma data ISO ali não filtra o que você espera. ## 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`) ou a rota exige administrador (`type: ADMIN_REQUIRED`) | | `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` | ## 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`. # Cobertura Esta referência cobre Contatos (leads, prospects e clientes), Empresas, Oportunidades, Pipelines e etapas, Reuniões, Tarefas, Observações, Usuários e Campos personalizados. Tickets, Atendimentos e Webhooks entram nas próximas revisões.
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
@@ -29,7 +29,7 @@ const base_1 = require("../base");
29
29
  const ContactsApiAxiosParamCreator = function (configuration) {
30
30
  return {
31
31
  /**
32
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
32
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
33
33
  * @summary Criar contato
34
34
  * @param {ContactInput} contactInput
35
35
  * @param {*} [options] Override http request option.
@@ -63,7 +63,7 @@ const ContactsApiAxiosParamCreator = function (configuration) {
63
63
  };
64
64
  },
65
65
  /**
66
- * Exige a permissão de excluir.
66
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
67
67
  * @summary Excluir contato
68
68
  * @param {string} id ID do registro.
69
69
  * @param {*} [options] Override http request option.
@@ -96,7 +96,7 @@ const ContactsApiAxiosParamCreator = function (configuration) {
96
96
  };
97
97
  },
98
98
  /**
99
- *
99
+ * **Permissão do Service Account:** `contacts.read`
100
100
  * @summary Obter contato
101
101
  * @param {string} id ID do registro.
102
102
  * @param {*} [options] Override http request option.
@@ -129,13 +129,13 @@ const ContactsApiAxiosParamCreator = function (configuration) {
129
129
  };
130
130
  },
131
131
  /**
132
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
132
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
133
133
  * @summary Listar contatos
134
134
  * @param {number} [page] Página, a partir de 1. **Envie sempre**: sem &#x60;page&#x60;, a resposta vem como lista simples, sem o envelope de paginação, e &#x60;limit&#x60; é ignorado.
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 {ListContactsSortTypeEnum} [sortType] Direção da ordenação.
138
- * @param {Array<string>} [staffs] Usuários responsáveis. Repita o parâmetro para enviar vários (&#x60;?staffs&#x3D;id1&amp;staffs&#x3D;id2&#x60;).
138
+ * @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (&#x60;?staffs[]&#x3D;id1&amp;staffs[]&#x3D;id2&#x60;).
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 &#x60;true&#x60;, só os sem e-mail.
@@ -171,7 +171,7 @@ const ContactsApiAxiosParamCreator = function (configuration) {
171
171
  localVarQueryParameter['sortType'] = sortType;
172
172
  }
173
173
  if (staffs) {
174
- localVarQueryParameter['staffs'] = staffs;
174
+ localVarQueryParameter['staffs[]'] = staffs;
175
175
  }
176
176
  if (organization !== undefined) {
177
177
  localVarQueryParameter['organization'] = organization;
@@ -198,7 +198,7 @@ const ContactsApiAxiosParamCreator = function (configuration) {
198
198
  };
199
199
  },
200
200
  /**
201
- * Envie só os campos que mudam.
201
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
202
202
  * @summary Atualizar contato
203
203
  * @param {string} id ID do registro.
204
204
  * @param {ContactInput} contactInput
@@ -245,7 +245,7 @@ const ContactsApiFp = function (configuration) {
245
245
  const localVarAxiosParamCreator = (0, exports.ContactsApiAxiosParamCreator)(configuration);
246
246
  return {
247
247
  /**
248
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
248
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
249
249
  * @summary Criar contato
250
250
  * @param {ContactInput} contactInput
251
251
  * @param {*} [options] Override http request option.
@@ -258,7 +258,7 @@ const ContactsApiFp = function (configuration) {
258
258
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
259
259
  },
260
260
  /**
261
- * Exige a permissão de excluir.
261
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
262
262
  * @summary Excluir contato
263
263
  * @param {string} id ID do registro.
264
264
  * @param {*} [options] Override http request option.
@@ -271,7 +271,7 @@ const ContactsApiFp = function (configuration) {
271
271
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
272
272
  },
273
273
  /**
274
- *
274
+ * **Permissão do Service Account:** `contacts.read`
275
275
  * @summary Obter contato
276
276
  * @param {string} id ID do registro.
277
277
  * @param {*} [options] Override http request option.
@@ -284,13 +284,13 @@ const ContactsApiFp = function (configuration) {
284
284
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
285
285
  },
286
286
  /**
287
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
287
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
288
288
  * @summary Listar contatos
289
289
  * @param {number} [page] Página, a partir de 1. **Envie sempre**: sem &#x60;page&#x60;, a resposta vem como lista simples, sem o envelope de paginação, e &#x60;limit&#x60; é ignorado.
290
290
  * @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.
291
291
  * @param {string} [sortBy] Campo de ordenação. O padrão varia por recurso.
292
292
  * @param {ListContactsSortTypeEnum} [sortType] Direção da ordenação.
293
- * @param {Array<string>} [staffs] Usuários responsáveis. Repita o parâmetro para enviar vários (&#x60;?staffs&#x3D;id1&amp;staffs&#x3D;id2&#x60;).
293
+ * @param {Array<string>} [staffs] Usuários responsáveis. Lista de IDs: envie com colchetes, mesmo para um só valor (&#x60;?staffs[]&#x3D;id1&amp;staffs[]&#x3D;id2&#x60;).
294
294
  * @param {string} [organization] ID da empresa vinculada.
295
295
  * @param {string} [search] Busca em nome, e-mail, telefone e documento.
296
296
  * @param {boolean} [emailsEmpty] Com &#x60;true&#x60;, só os sem e-mail.
@@ -306,7 +306,7 @@ const ContactsApiFp = function (configuration) {
306
306
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
307
307
  },
308
308
  /**
309
- * Envie só os campos que mudam.
309
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
310
310
  * @summary Atualizar contato
311
311
  * @param {string} id ID do registro.
312
312
  * @param {ContactInput} contactInput
@@ -329,7 +329,7 @@ const ContactsApiFactory = function (configuration, basePath, axios) {
329
329
  const localVarFp = (0, exports.ContactsApiFp)(configuration);
330
330
  return {
331
331
  /**
332
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
332
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
333
333
  * @summary Criar contato
334
334
  * @param {ContactsApiCreateContactRequest} requestParameters Request parameters.
335
335
  * @param {*} [options] Override http request option.
@@ -339,7 +339,7 @@ const ContactsApiFactory = function (configuration, basePath, axios) {
339
339
  return localVarFp.createContact(requestParameters.contactInput, options).then((request) => request(axios, basePath));
340
340
  },
341
341
  /**
342
- * Exige a permissão de excluir.
342
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
343
343
  * @summary Excluir contato
344
344
  * @param {ContactsApiDeleteContactRequest} requestParameters Request parameters.
345
345
  * @param {*} [options] Override http request option.
@@ -349,7 +349,7 @@ const ContactsApiFactory = function (configuration, basePath, axios) {
349
349
  return localVarFp.deleteContact(requestParameters.id, options).then((request) => request(axios, basePath));
350
350
  },
351
351
  /**
352
- *
352
+ * **Permissão do Service Account:** `contacts.read`
353
353
  * @summary Obter contato
354
354
  * @param {ContactsApiGetContactRequest} requestParameters Request parameters.
355
355
  * @param {*} [options] Override http request option.
@@ -359,7 +359,7 @@ const ContactsApiFactory = function (configuration, basePath, axios) {
359
359
  return localVarFp.getContact(requestParameters.id, options).then((request) => request(axios, basePath));
360
360
  },
361
361
  /**
362
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
362
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
363
363
  * @summary Listar contatos
364
364
  * @param {ContactsApiListContactsRequest} requestParameters Request parameters.
365
365
  * @param {*} [options] Override http request option.
@@ -369,7 +369,7 @@ const ContactsApiFactory = function (configuration, basePath, axios) {
369
369
  return localVarFp.listContacts(requestParameters.page, requestParameters.limit, requestParameters.sortBy, requestParameters.sortType, requestParameters.staffs, requestParameters.organization, requestParameters.search, requestParameters.emailsEmpty, requestParameters.phonesEmpty, requestParameters.lifeCycle, options).then((request) => request(axios, basePath));
370
370
  },
371
371
  /**
372
- * Envie só os campos que mudam.
372
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
373
373
  * @summary Atualizar contato
374
374
  * @param {ContactsApiUpdateContactRequest} requestParameters Request parameters.
375
375
  * @param {*} [options] Override http request option.
@@ -386,7 +386,7 @@ exports.ContactsApiFactory = ContactsApiFactory;
386
386
  */
387
387
  class ContactsApi extends base_1.BaseAPI {
388
388
  /**
389
- * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`.
389
+ * O corpo não tem campo obrigatório fixo: o administrador da conta define quais são. `GET /api/customfields?feature=contact&required=true` devolve os campos obrigatórios da conta. Quando falta um deles, a API responde `400` com `code: MISSING_REQUIRED` e a lista em `fields`. **Permissão do Service Account:** `contacts.create`
390
390
  * @summary Criar contato
391
391
  * @param {ContactsApiCreateContactRequest} requestParameters Request parameters.
392
392
  * @param {*} [options] Override http request option.
@@ -396,7 +396,7 @@ class ContactsApi extends base_1.BaseAPI {
396
396
  return (0, exports.ContactsApiFp)(this.configuration).createContact(requestParameters.contactInput, options).then((request) => request(this.axios, this.basePath));
397
397
  }
398
398
  /**
399
- * Exige a permissão de excluir.
399
+ * Exige a permissão de excluir. **Permissão do Service Account:** `contacts.delete`
400
400
  * @summary Excluir contato
401
401
  * @param {ContactsApiDeleteContactRequest} requestParameters Request parameters.
402
402
  * @param {*} [options] Override http request option.
@@ -406,7 +406,7 @@ class ContactsApi extends base_1.BaseAPI {
406
406
  return (0, exports.ContactsApiFp)(this.configuration).deleteContact(requestParameters.id, options).then((request) => request(this.axios, this.basePath));
407
407
  }
408
408
  /**
409
- *
409
+ * **Permissão do Service Account:** `contacts.read`
410
410
  * @summary Obter contato
411
411
  * @param {ContactsApiGetContactRequest} requestParameters Request parameters.
412
412
  * @param {*} [options] Override http request option.
@@ -416,7 +416,7 @@ class ContactsApi extends base_1.BaseAPI {
416
416
  return (0, exports.ContactsApiFp)(this.configuration).getContact(requestParameters.id, options).then((request) => request(this.axios, this.basePath));
417
417
  }
418
418
  /**
419
- * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos.
419
+ * Ordenação padrão: `fullname` crescente. Devolve só os registros ativos. **Permissão do Service Account:** `contacts.list`
420
420
  * @summary Listar contatos
421
421
  * @param {ContactsApiListContactsRequest} requestParameters Request parameters.
422
422
  * @param {*} [options] Override http request option.
@@ -426,7 +426,7 @@ class ContactsApi extends base_1.BaseAPI {
426
426
  return (0, exports.ContactsApiFp)(this.configuration).listContacts(requestParameters.page, requestParameters.limit, requestParameters.sortBy, requestParameters.sortType, requestParameters.staffs, requestParameters.organization, requestParameters.search, requestParameters.emailsEmpty, requestParameters.phonesEmpty, requestParameters.lifeCycle, options).then((request) => request(this.axios, this.basePath));
427
427
  }
428
428
  /**
429
- * Envie só os campos que mudam.
429
+ * Envie só os campos que mudam. **Permissão do Service Account:** `contacts.update`
430
430
  * @summary Atualizar contato
431
431
  * @param {ContactsApiUpdateContactRequest} requestParameters Request parameters.
432
432
  * @param {*} [options] Override http request option.