kommo-aiatende-api 1.0.0 → 1.0.1

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 (2) hide show
  1. package/README.md +136 -0
  2. package/package.json +2 -2
package/README.md ADDED
@@ -0,0 +1,136 @@
1
+ # Kommo API SDK (V4) 🚀
2
+
3
+ SDK moderno, resiliente e **totalmente tipado** em TypeScript para a API V4 da [Kommo CRM](https://kommo.com).
4
+
5
+
6
+ ## 📦 Instalação
7
+
8
+ ```bash
9
+ npm install kommo-aiatende-api
10
+ # ou
11
+ yarn add kommo-aiatende-api
12
+ # ou
13
+ pnpm add kommo-aiatende-api
14
+ ```
15
+
16
+ ## ✨ Funcionalidades Mapeadas
17
+
18
+ Esta biblioteca foi desenhada com alto nível de rigor às complexidades da documentação da Kommo, encapsulando vulnerabilidades e garantindo auto-complete puro via Typescript (IntelliSense) em centenas de propriedades:
19
+
20
+ * **Entidades Base:** `leads`, `contacts`, `companies`
21
+ * **Caixa de Entrada (Unsorted):** Aceitar, recusar e vincular dados do pipeline.
22
+ * **Funis (Pipelines & Status):** Configuração estrutural do CRM.
23
+ * **Campos Personalizados (Custom Fields & Groups):** Inclusão de tipagem complexa para metadados invisíveis.
24
+ * **Usuários e Funções (Users & Roles):** Leitura de Rights Limit.
25
+ * **Notas e Tarefas (Notes & Tasks):** Com resolução inteligente do campo result.
26
+ * **Eventos (Events):** Logs estruturados para ValueType Polymorphism.
27
+ * **Listas (Catalogs & Elements)**.
28
+ * **Tags:** Operações de batch patching e validações de Hex colors.
29
+ * **Vínculos (Links):** Proteções Pre-flight em filtros essenciais.
30
+ * **Salesbots & Templates (Waba):** Controle rigoroso de disparos com validações Max Length Limits.
31
+ * **Integrações Externas:** Fontes (`sources`), Webhooks e Botões de Chat Web.
32
+
33
+
34
+ ## 🚀 Configuração Básica
35
+
36
+ Inicializando e injetando o cliente em sua aplicação Node.js:
37
+
38
+ ```typescript
39
+ import { KommoClient } from 'kommo-aiatende-api';
40
+
41
+ const client = new KommoClient({
42
+ domain: 'meudominio', // Não inclua ".kommo.com", apenas o subdomínio!
43
+ accessToken: 'SEU_BEARER_TOKEN_AQUI'
44
+ });
45
+ ```
46
+
47
+ *Nota: Todos os métodos assumem que seus tokens são válidos. Você deve implementar o fluxo OAuth2.0 separadamente para emitir e reciclar seus tokens.*
48
+
49
+ ---
50
+
51
+ ## 📖 Exemplos Rápidos de Uso
52
+
53
+ ### 1. Criando Entidades com Proteção Typada
54
+ ```typescript
55
+ import { KommoClient } from 'kommo-aiatende-api';
56
+
57
+ const client = new KommoClient({ domain: 'meudominio', accessToken: 'TOKEN' });
58
+
59
+ async function criarLead() {
60
+ const result = await client.leads.create({
61
+ name: 'Novo Negócio Estratégico',
62
+ price: 15400,
63
+ tags_to_add: [
64
+ { name: 'VIP' }
65
+ ]
66
+ });
67
+
68
+ console.log('Lead criado com sucesso: ', result._embedded?.leads?.[0].id);
69
+ }
70
+ ```
71
+
72
+ ### 2. Vínculos Avançados (Links)
73
+
74
+ Conecte um contato diretamente ao seu Lead recém-criado em Lote (Batch).
75
+ ```typescript
76
+ await client.links.link('leads', 15591, [
77
+ {
78
+ to_entity_type: 'contacts',
79
+ to_entity_id: 11069775,
80
+ metadata: {
81
+ is_main: true // O SDK normalizará as ambiguidades da API!
82
+ }
83
+ }
84
+ ]);
85
+ ```
86
+
87
+ ### 3. Executando um Salesbot com Barreiras Físicas
88
+
89
+ Esqueça o Erro "403 Limit Exceeded" da Kommo por não conhecer os limites. A própria SDK bloqueia antes do tráfego:
90
+ ```typescript
91
+ await client.salesbots.runMany([
92
+ // ... se passar de 100 itens ...
93
+ // Throws: "A API da Kommo limita o 'runMany' a no máximo 100 salesbots por requisição."
94
+ ]);
95
+ ```
96
+
97
+ ### 4. Gestão do Funil (Pipelines)
98
+ ```typescript
99
+ const funis = await client.pipelines.list();
100
+
101
+ const funilAtivo = funis._embedded?.pipelines?.find(p => p.is_main);
102
+ console.log('Funil Principal: ', funilAtivo?.name);
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 🛡️ Tratamento de Erros Moderno e Intuitivo
108
+
109
+ Qualquer rota falha lançará a classe `KommoApiError`. Ela empacota o padrão nativo de `application/problem+json` num wrapper explícito:
110
+
111
+ ```typescript
112
+ import { KommoApiError } from 'kommo-aiatende-api/errors';
113
+
114
+ try {
115
+ await client.leads.getById(99999999);
116
+ } catch (error) {
117
+ if (error instanceof KommoApiError) {
118
+ console.error('Código HTTP:', error.status); // ex: 404
119
+ console.error('Título da Kommo:', error.title);
120
+ console.error('Detalhe Técnico:', error.detail);
121
+
122
+ // Payload brutal devolvido pela requisição (quando disponível)
123
+ console.log(error.raw);
124
+ }
125
+ }
126
+ ```
127
+
128
+ ## 🏗️ Padrões Internos (Architecture)
129
+ A lib adota dois estilos de serialização para proteger suas chamadas:
130
+ 1. **Raw Body Conversions:** Rotas da Kommo v4 exigem arrays brutos (`[]`) misturados a requests sem aninhamento de object. O SDK mapeia se você enviou Arrays ou Singleton e encapsula conforme o exigido na Doc.
131
+ 2. **Query String Normalization:** Usamos o `qs` com a instrução `{ arrayFormat: 'brackets' }` para evitar que seus arrays nos filtros de `GET` quebrem a formatação em backend na Rússia.
132
+
133
+
134
+ ---
135
+ ## 📄 Licença
136
+ Licenciado sob a Licença MIT. Sinta-se livre para ramificar e customizar seu repositório local.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kommo-aiatende-api",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "SDK não oficial em TypeScript para integração com a API da Kommo CRM.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -34,4 +34,4 @@
34
34
  "typescript": "^6.0.3",
35
35
  "vitest": "^4.1.5"
36
36
  }
37
- }
37
+ }