kommo-aiatende-api 1.0.0 → 1.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 ADDED
@@ -0,0 +1,155 @@
1
+ # Kommo API SDK (V4) 🚀
2
+
3
+ SDK moderno, robusto, resiliente e **totalmente tipado** em TypeScript para a API V4 da [Kommo CRM](https://kommo.com). Desenhado para remover o atrito na comunicação com a API da Kommo, encapsulando vulnerabilidades e oferecendo uma experiência de desenvolvedor (DX) premium com IntelliSense nativo.
4
+
5
+ ## 📦 Instalação
6
+
7
+ ```bash
8
+ npm install kommo-aiatende-api
9
+ # ou
10
+ yarn add kommo-aiatende-api
11
+ # ou
12
+ pnpm add kommo-aiatende-api
13
+ ```
14
+
15
+ ---
16
+
17
+ ## 🛠 Funcionalidades e Mapeamento
18
+ Um dos grandes diferenciais desta biblioteca é a padronização das inconsistências da Documentação da Kommo.
19
+ Abaixo está o **Escopo Padrão de 100% de Cobertura** implementado no cliente:
20
+
21
+ - [x] **Leads**, **Contatos** e **Empresas**: CRUD completo.
22
+ - [x] **Unsorted (Caixa de Entrada)**: Aceitação, recusa e linkagem para pipelines.
23
+ - [x] **Pipelines e Status (Estágios)**: Gestão de funis incluindo cores RGB validadas.
24
+ - [x] **Campos Personalizados (Custom Fields & Groups)**: Tratamento tipado para Enum types e Multitexts.
25
+ - [x] **Usuários e Funções (Roles)**: Suporte a Rights Limits estruturados.
26
+ - [x] **Tarefas (Tasks)** e **Anotações (Notes)**: Automação completa do CRM interno com tratamento de `result` textuais da V4.
27
+ - [x] **Eventos (Events)**: Log System com `value_after` e `value_before` tipados via polimorfismo.
28
+ - [x] **Catálogos / Elements (Lists)**.
29
+ - [x] **Vínculos (Links)**: Associações entre leads/contacts e validações pre-flight no backend para evitar BadRequests de Filtros cruzados falhos.
30
+ - [x] **Tags (Etiquetas)**: Validadores de Hex-colors forçados apenas para Entidades suportadas (Leads).
31
+ - [x] **Modelos (Chat Templates / WABA)**: Gestão global do WABA (Meta API), submissão de Reviews, Modificações de status com proteções (templates WABA só alteram em caso de "draft").
32
+ - [x] **Webhooks**: Gerenciamento completo com a particularidade do Delete HTTP baseado em URL `destination`, ao invés de ID.
33
+ - [x] **Fontes (Sources) & WebButtons**: Divisão arquitetural correta, para gestão robusta dos fluxos Frontend x Backend da sua I.A.
34
+ - [x] **Salesbots**: Pre-flight de rate Limits bloqueando envio massivo maior que `100 bots` por fila e aviso em botões longos no DOM Mobile.
35
+ - [x] **Files API & CDN**: Gerenciamento binário multi-part estruturado e fallback nativo na resposta inconsistente dos "Arrays brutos e Embedded JSONs". Separação do uso da infra `v1.0` de Drive, e da Infra `api/v4` de anexos de entidade.
36
+
37
+ ---
38
+
39
+ ## 🚀 Configuração Básica e Autenticação
40
+
41
+ A biblioteca gerencia toda a serialização do Body JSON e QueryStrings, bastando que você cuide do seu Token Bearer.
42
+
43
+ ```typescript
44
+ import { KommoClient } from 'kommo-aiatende-api';
45
+
46
+ const client = new KommoClient({
47
+ domain: 'meudominio', // Não inclua ".kommo.com", apenas o subdomínio base!
48
+ accessToken: 'SEU_BEARER_TOKEN_AQUI'
49
+ });
50
+
51
+ // Acessando as entidades - Exemplo de GET simples com Paginação
52
+ const { _embedded: { leads }, _page } = await client.leads.list({
53
+ limit: 50,
54
+ page: 2,
55
+ with: 'contacts' // O Auto-complete trará quais parâmetros `with` a SDK suporta.
56
+ });
57
+
58
+ console.log(`Buscando a pagina ${ _page }. Total de leads recebidos: ${leads?.length}`);
59
+ ```
60
+
61
+ *Nota Cautelar: Todos os métodos assumem que seus Access Tokens estão sendo refrescados por sua infraestrutura OAuth 2.0 externa.*
62
+
63
+ ---
64
+
65
+ ## 📖 Exemplos Práticos de Uso Avançado
66
+
67
+ ### 1. Criando Entidades com Proteção Tipada
68
+ ```typescript
69
+ async function criarNegocioEstrategico() {
70
+ const result = await client.leads.create({
71
+ name: 'Lead Inteligência Artificial',
72
+ price: 15400,
73
+ pipeline_id: 8887,
74
+ tags_to_add: [
75
+ { name: 'VIP' }
76
+ ]
77
+ });
78
+
79
+ console.log('Lead ID: ', result._embedded?.leads?.[0].id);
80
+ }
81
+ ```
82
+
83
+ ### 2. Vínculos e Lotes (Links Batch)
84
+ Exemplo vinculando um Contato a um Lead recém-criado, utilizando normalização automática das strings de metadados:
85
+ ```typescript
86
+ await client.links.link('leads', 15591, [
87
+ {
88
+ to_entity_type: 'contacts',
89
+ to_entity_id: 11069775,
90
+ metadata: {
91
+ is_main: true // A SDK serializa e aceita "is_main" ao invés do confuso "main_contact" de Payload cruzado
92
+ }
93
+ }
94
+ ]);
95
+ ```
96
+
97
+ ### 3. Rate Limits e Pre-Flight Blockers (Ex: SalesBots)
98
+ Esqueça o Erro "403 Limit Exceeded" silencioso na Kommo. A própria SDK bloqueia ações fisicamente antes delas atingirem os cabos de rede:
99
+ ```typescript
100
+ try {
101
+ await client.salesbots.runMany([...105 itens...]);
102
+ } catch (e) {
103
+ // ERRO PRÉVIO GERADO NO NODE:
104
+ // "A API da Kommo limita o 'runMany' a no máximo 100 salesbots por requisição."
105
+ }
106
+ ```
107
+
108
+ ### 4. Gestão de Arquivos e Binários (Files API)
109
+ A SDK se encarrega de instruir o HTTP Client a setar os Data-Types de _octet-stream_. É só dar o Buffer Node para ele:
110
+
111
+ ```typescript
112
+ const { session_token } = await client.files.service.createUploadSession({
113
+ file_name: "Contrato.pdf",
114
+ file_size: 150000
115
+ });
116
+
117
+ await client.files.service.uploadPart(session_token, myPdfBufferData);
118
+ ```
119
+
120
+ ---
121
+
122
+ ## 🛡️ Tratamento de Erros e `KommoApiError`
123
+
124
+ Para uma excelente depuração no seu console ou Grafana, qualquer rota do Server falha lançará a classe empacotada abstrata `KommoApiError`. Tratamentos assíncronos não resolvidos (204 e 202) são traduzidos polidamente em promessas `void`.
125
+
126
+ Você mapeia o rastro do servidor nativo assim:
127
+
128
+ ```typescript
129
+ import { KommoApiError } from 'kommo-aiatende-api/errors';
130
+
131
+ try {
132
+ await client.leads.getById(99999999);
133
+ } catch (error) {
134
+ if (error instanceof KommoApiError) {
135
+ console.error(`[ KOMMO API ERROR ] - HTTP ${error.status}`); // ex: 404
136
+ console.error(`=> Título: ${error.title}`);
137
+ console.error(`=> Detalhe: ${error.detail}`);
138
+
139
+ // Payload JSON completo devolvido pela web
140
+ console.log(error.raw);
141
+ } else {
142
+ // Erros padões de Syntax NodeJS ou da engine V8
143
+ console.error(error);
144
+ }
145
+ }
146
+ ```
147
+
148
+ ## 🏗️ Padrões Internos & Arquitetura (Architecture)
149
+ - **Raw Body Conversions:** Rotas da Kommo v4 exigem arrays brutos (`[ {...} ]`) injetados diretamente no Corpo do Payload. A SDK faz a normalização e envelopamento se você enviou Arrays ou Objetos Únicos num request que exija coleção no Backend da Rússia.
150
+ - **Query String Normalization (`qs`)**: O Typescript utiliza o pacote `qs` formatado para `brackets`, convertendo arrays lógicos Node em arrays compreensivos pela V4 (Ex: `{ filter_id: [1,2] }` vira `?filter[id][]=1&filter[id][]=2`) sem fricção pro desenvolvedor.
151
+
152
+ ---
153
+ ## 📄 Licença
154
+ Licenciado livremente sob os termos da licença MIT.
155
+ Sinta-se à vontade para "Forkar" e ramificar customizações em sua infraestrutura!
package/dist/index.d.mts CHANGED
@@ -2655,6 +2655,96 @@ declare class WebhooksResource extends BaseResource {
2655
2655
  delete(payload: DeleteWebhookInput): Promise<void>;
2656
2656
  }
2657
2657
 
2658
+ type FileRecord = Record<string, unknown>;
2659
+ type FileVersionRecord = Record<string, unknown>;
2660
+ type EntityAttachedFileRecord = Record<string, unknown>;
2661
+ type FileLinkedEntityRecord = Record<string, unknown>;
2662
+ interface ListFilesParams {
2663
+ filter_uuid?: string[];
2664
+ filter_name?: string;
2665
+ filter_extensions?: string[];
2666
+ filter_term?: string;
2667
+ filter_source_id?: number;
2668
+ filter_deleted?: boolean;
2669
+ filter_size_unit?: number;
2670
+ filter_size_from?: number;
2671
+ filter_size_to?: number;
2672
+ filter_date_type?: 'created_at' | 'updated_at';
2673
+ filter_date_preset?: string;
2674
+ filter_date_from?: number;
2675
+ filter_date_to?: number;
2676
+ filter_created_by?: number[];
2677
+ filter_updated_by?: number[];
2678
+ }
2679
+ interface ListFilesResponse {
2680
+ items?: FileRecord[];
2681
+ raw?: unknown;
2682
+ }
2683
+ interface CreateFileUploadSessionInput {
2684
+ file_name: string;
2685
+ file_size: number;
2686
+ file_uuid?: string;
2687
+ content_type?: string;
2688
+ with_preview?: boolean;
2689
+ }
2690
+ type UploadSessionResponse = Record<string, unknown>;
2691
+ type UploadFilePartInput = ArrayBuffer | Uint8Array | any;
2692
+ type UploadFilePartResponse = Record<string, unknown>;
2693
+ type UpdateFileInput = {
2694
+ name: string;
2695
+ version_uuid?: never;
2696
+ } | {
2697
+ version_uuid: string;
2698
+ name?: never;
2699
+ };
2700
+ type DeleteFilesItem = Record<string, unknown>;
2701
+ type RestoreFilesItem = Record<string, unknown>;
2702
+ interface ListFileVersionsResponse {
2703
+ items?: FileVersionRecord[];
2704
+ raw?: unknown;
2705
+ }
2706
+ type FileAttachEntityType = 'leads' | 'contacts' | 'companies' | 'contatos' | 'empresas' | string;
2707
+ interface ListEntityAttachedFilesParams {
2708
+ limit?: number;
2709
+ before_id?: number;
2710
+ }
2711
+ interface ListEntityAttachedFilesResponse {
2712
+ items?: EntityAttachedFileRecord[];
2713
+ raw?: unknown;
2714
+ }
2715
+ type AttachFilesToEntityItem = Record<string, unknown>;
2716
+ type DetachFilesFromEntityItem = Record<string, unknown>;
2717
+ interface ListFileLinkedEntitiesResponse {
2718
+ items?: FileLinkedEntityRecord[];
2719
+ raw?: unknown;
2720
+ }
2721
+
2722
+ declare class FilesServiceResource extends BaseResource {
2723
+ getByUuid(fileUuid: string): Promise<FileRecord | null>;
2724
+ list(params?: ListFilesParams): Promise<ListFilesResponse>;
2725
+ createUploadSession(payload: CreateFileUploadSessionInput): Promise<UploadSessionResponse>;
2726
+ uploadPart(sessionToken: string, filePart: UploadFilePartInput): Promise<UploadFilePartResponse>;
2727
+ update(fileUuid: string, payload: UpdateFileInput): Promise<FileRecord>;
2728
+ delete(items: DeleteFilesItem | DeleteFilesItem[]): Promise<Record<string, unknown>>;
2729
+ restore(items: RestoreFilesItem | RestoreFilesItem[]): Promise<Record<string, unknown>>;
2730
+ listVersions(fileUuid: string): Promise<ListFileVersionsResponse>;
2731
+ }
2732
+ declare class EntityFilesResource extends BaseResource {
2733
+ private normalizeEntity;
2734
+ listAttachedToEntity(entity: FileAttachEntityType, entityId: number, params?: ListEntityAttachedFilesParams): Promise<ListEntityAttachedFilesResponse>;
2735
+ attachToEntity(entity: FileAttachEntityType, entityId: number, items: AttachFilesToEntityItem | AttachFilesToEntityItem[]): Promise<Record<string, unknown>>;
2736
+ detachFromEntity(entity: FileAttachEntityType, entityId: number, items: DetachFilesFromEntityItem | DetachFilesFromEntityItem[]): Promise<void>;
2737
+ }
2738
+ declare class FileLinksResource extends BaseResource {
2739
+ listLinkedEntities(fileUuid: string): Promise<ListFileLinkedEntitiesResponse>;
2740
+ }
2741
+ declare class FilesResource extends BaseResource {
2742
+ service: FilesServiceResource;
2743
+ entities: EntityFilesResource;
2744
+ links: FileLinksResource;
2745
+ constructor(httpClient: any);
2746
+ }
2747
+
2658
2748
  declare class KommoClient {
2659
2749
  config: KommoConfig;
2660
2750
  auth: AuthManager;
@@ -2679,6 +2769,7 @@ declare class KommoClient {
2679
2769
  websiteButtons: WebsiteButtonsResource;
2680
2770
  chatTemplates: ChatTemplatesResource;
2681
2771
  webhooks: WebhooksResource;
2772
+ files: FilesResource;
2682
2773
  constructor(config: KommoConfig);
2683
2774
  setAccessToken(token: string): void;
2684
2775
  }
@@ -2692,4 +2783,4 @@ declare class KommoApiError extends Error {
2692
2783
  constructor(message: string, info?: Partial<KommoApiError>);
2693
2784
  }
2694
2785
 
2695
- export { type AccessTokenResponse, type AttachmentNoteParams, AuthManager, type BaseCreateUnsortedItem, type BaseCustomField, type BaseEntity, type CallNoteParams, type Catalog, type CatalogElement, type CatalogElementCustomFieldValue, CatalogsResource, type ChatTemplate, type ChatTemplateAttachment, type ChatTemplateButton, type ChatTemplateButtonType, type ChatTemplateReview, type ChatTemplateType, ChatTemplatesResource, type CollectionResponse, type CommonNoteParams, CompaniesResource, type Company, type CompanyCatalogElementRef, type CompanyContactRef, type CompanyLeadRef, type CompanyTag, type CompanyTagRef, type CompanyWithParam, type Contact, type ContactCatalogElementRef, type ContactCompanyRef, type ContactCustomerRef, type ContactLeadRef, type ContactTag, type ContactTagRef, type ContactWithParam, ContactsResource, type CreateCatalogElementInput, type CreateCatalogElementsResponse, type CreateCatalogInput, type CreateCatalogsResponse, type CreateChatTemplateInput, type CreateChatTemplatesResponse, type CreateCompaniesResponse, type CreateCompanyInput, type CreateComplexLeadInput, type CreateComplexLeadsResponse, type CreateComplexLeadsResponseItem, type CreateContactInput, type CreateContactsResponse, type CreateCustomFieldGroupInput, type CreateEntityCustomFieldInput, type CreateEntityLinkInput, type CreateEntityLinksResponse, type CreateFormUnsortedLeadInput, type CreateLeadInput, type CreateLeadsResponse, type CreateListCustomFieldInput, type CreateNoteInput, type CreateNotesResponse, type CreatePipelineInput, type CreatePipelineStatusInput, type CreatePipelinesResponse, type CreateRoleInput, type CreateSipUnsortedLeadInput, type CreateSourceInput, type CreateSourcesResponse, type CreateStatusInput, type CreateStatusesResponse, type CreateTagInput, type CreateTagRef, type CreateTagsResponse, type CreateTaskInput, type CreateTasksResponse, type CreateUnsortedCompany, type CreateUnsortedContact, type CreateUnsortedLead, type CreateUnsortedLeadsResponse, type CreateUserInput, type CreateWebhookInput, type CreateWebsiteButtonInput, type CreateWebsiteButtonResponse, type CustomField, type CustomFieldEnum, type CustomFieldGroup, CustomFieldGroupsResource, type CustomFieldNestedValue, type CustomFieldRequiredStatus, type CustomFieldType, type CustomFieldValue, CustomFieldsResource, type DeleteChatTemplateInput, type DeleteEntityLinkInput, type DeleteSourceBatchInput, type DeleteWebhookInput, type Embedded, type EntityCustomField, type EntityLink, type EntityLinkMetadata, type EntityLinkWithSource, type EntityRights, type EntityType, type EntityUpdateResult, type Event, type EventTypeDefinition, type EventValueChange, type EventValueFilters, type EventWithParam, EventsResource, type FormMetadata, type GeolocationNoteParams, KNOWN_WEBHOOK_EVENTS, KOMMO_PIPELINE_STAGE_COLORS, KOMMO_TAG_COLORS, type KnownEventType, KommoApiError, KommoClient, type KommoConfig, type KommoPipelineStageColor, type Lead, type LeadCatalogElementRef, type LeadCompanyRef, type LeadContactRef, type LeadTag, type LeadTagRef, type LeadWithParam, LeadsResource, type LinkMetadataInput, type LinkSourceEntityType, type LinkTargetEntityType, type LinkUnsortedLeadResponse, LinksResource, type ListCatalogElementsParams, type ListCatalogElementsResponse, type ListCatalogsParams, type ListCatalogsResponse, type ListChatTemplatesParams, type ListChatTemplatesResponse, type ListCompaniesParams, type ListCompaniesResponse, type ListContactsParams, type ListContactsResponse, type ListCustomField, type ListCustomFieldGroupsResponse, type ListEntityCustomFieldsResponse, type ListEntityLinksParams, type ListEntityLinksResponse, type ListEntityNotesParams, type ListEventTypesParams, type ListEventTypesResponse, type ListEventsParams, type ListEventsResponse, type ListLeadsParams, type ListLeadsResponse, type ListListCustomFieldsResponse, type ListLossReasonsResponse, type ListNotesResponse, type ListPipelineStatusesResponse, type ListPipelinesResponse, type ListRolesParams, type ListRolesResponse, type ListSalesbotsParams, type ListSalesbotsResponse, type ListSourcesResponse, type ListTagsParams, type ListTagsResponse, type ListTasksParams, type ListTasksResponse, type ListUnsortedLeadsParams, type ListUnsortedLeadsResponse, type ListUsersParams, type ListUsersResponse, type ListWebhooksParams, type ListWebhooksResponse, type ListWebsiteButtonsParams, type ListWebsiteButtonsResponse, type LossReason, type Note, type NoteEntityType, type NoteParams, type NoteType, NotesResource, type PermissionLevel, type Pipeline, type PipelineStatus, PipelinesResource, type Role, type RoleWithParam, RolesResource, type RunManySalesbotsItem, type RunSalesbotInput, type Salesbot, type SalesbotContinueBotType, type SalesbotContinueInput, type SalesbotExecuteHandler, type SalesbotFunctionalityType, SalesbotsResource, type ServiceMessageNoteParams, type SipMetadata, type SmsNoteParams, type Source, type SourceService, type SourceServicePage, SourcesResource, type StatusDescription, type StatusRight, type StopSalesbotInput, type SubmitWhatsAppTemplateReviewResponse, type Tag, type TagColor, type TagEntityType, type TagRefInput, TagsResource, type Task, TasksResource, type UnsortedDecisionResponse, type UnsortedLead, UnsortedResource, type UnsortedSummaryParams, type UnsortedSummaryResponse, type UpdateCatalogElementInput, type UpdateCatalogElementsResponse, type UpdateCatalogInput, type UpdateCatalogsResponse, type UpdateChatTemplateInput, type UpdateChatTemplatesResponse, type UpdateCompaniesResponse, type UpdateCompanyInput, type UpdateContactInput, type UpdateContactsResponse, type UpdateCustomFieldGroupInput, type UpdateEntityCustomFieldInput, type UpdateEntityTagsBatchResponse, type UpdateEntityTagsInput, type UpdateEntityTagsSingleResponse, type UpdateLeadInput, type UpdateLeadsResponse, type UpdateListCustomFieldInput, type UpdateNoteInput, type UpdateNotesResponse, type UpdatePipelineInput, type UpdateRoleInput, type UpdateSingleCatalogElementInput, type UpdateSingleCatalogInput, type UpdateSingleCompanyInput, type UpdateSingleContactInput, type UpdateSingleEntityCustomFieldInput, type UpdateSingleEntityTagsInput, type UpdateSingleLeadInput, type UpdateSingleListCustomFieldInput, type UpdateSingleNoteInput, type UpdateSingleTaskInput, type UpdateSourceBatchInput, type UpdateSourceInput, type UpdateSourcesResponse, type UpdateStatusInput, type UpdateTaskInput, type UpdateTasksResponse, type UpdateWebsiteButtonInput, type UpdateWhatsAppTemplateReviewStatusInput, type UpdateWhatsAppTemplateReviewStatusResponse, type User, type UserWithParam, UsersResource, type WabaCategory, type WabaHeaderType, type WabaReviewStatus, type Webhook, type WebhookEvent, WebhooksResource, type WebsiteButton, type WebsiteButtonCreationStatus, WebsiteButtonsResource, type WhatsAppTemplateModerationStatus, eventUtils };
2786
+ export { type AccessTokenResponse, type AttachFilesToEntityItem, type AttachmentNoteParams, AuthManager, type BaseCreateUnsortedItem, type BaseCustomField, type BaseEntity, type CallNoteParams, type Catalog, type CatalogElement, type CatalogElementCustomFieldValue, CatalogsResource, type ChatTemplate, type ChatTemplateAttachment, type ChatTemplateButton, type ChatTemplateButtonType, type ChatTemplateReview, type ChatTemplateType, ChatTemplatesResource, type CollectionResponse, type CommonNoteParams, CompaniesResource, type Company, type CompanyCatalogElementRef, type CompanyContactRef, type CompanyLeadRef, type CompanyTag, type CompanyTagRef, type CompanyWithParam, type Contact, type ContactCatalogElementRef, type ContactCompanyRef, type ContactCustomerRef, type ContactLeadRef, type ContactTag, type ContactTagRef, type ContactWithParam, ContactsResource, type CreateCatalogElementInput, type CreateCatalogElementsResponse, type CreateCatalogInput, type CreateCatalogsResponse, type CreateChatTemplateInput, type CreateChatTemplatesResponse, type CreateCompaniesResponse, type CreateCompanyInput, type CreateComplexLeadInput, type CreateComplexLeadsResponse, type CreateComplexLeadsResponseItem, type CreateContactInput, type CreateContactsResponse, type CreateCustomFieldGroupInput, type CreateEntityCustomFieldInput, type CreateEntityLinkInput, type CreateEntityLinksResponse, type CreateFileUploadSessionInput, type CreateFormUnsortedLeadInput, type CreateLeadInput, type CreateLeadsResponse, type CreateListCustomFieldInput, type CreateNoteInput, type CreateNotesResponse, type CreatePipelineInput, type CreatePipelineStatusInput, type CreatePipelinesResponse, type CreateRoleInput, type CreateSipUnsortedLeadInput, type CreateSourceInput, type CreateSourcesResponse, type CreateStatusInput, type CreateStatusesResponse, type CreateTagInput, type CreateTagRef, type CreateTagsResponse, type CreateTaskInput, type CreateTasksResponse, type CreateUnsortedCompany, type CreateUnsortedContact, type CreateUnsortedLead, type CreateUnsortedLeadsResponse, type CreateUserInput, type CreateWebhookInput, type CreateWebsiteButtonInput, type CreateWebsiteButtonResponse, type CustomField, type CustomFieldEnum, type CustomFieldGroup, CustomFieldGroupsResource, type CustomFieldNestedValue, type CustomFieldRequiredStatus, type CustomFieldType, type CustomFieldValue, CustomFieldsResource, type DeleteChatTemplateInput, type DeleteEntityLinkInput, type DeleteFilesItem, type DeleteSourceBatchInput, type DeleteWebhookInput, type DetachFilesFromEntityItem, type Embedded, type EntityAttachedFileRecord, type EntityCustomField, EntityFilesResource, type EntityLink, type EntityLinkMetadata, type EntityLinkWithSource, type EntityRights, type EntityType, type EntityUpdateResult, type Event, type EventTypeDefinition, type EventValueChange, type EventValueFilters, type EventWithParam, EventsResource, type FileAttachEntityType, type FileLinkedEntityRecord, FileLinksResource, type FileRecord, type FileVersionRecord, FilesResource, FilesServiceResource, type FormMetadata, type GeolocationNoteParams, KNOWN_WEBHOOK_EVENTS, KOMMO_PIPELINE_STAGE_COLORS, KOMMO_TAG_COLORS, type KnownEventType, KommoApiError, KommoClient, type KommoConfig, type KommoPipelineStageColor, type Lead, type LeadCatalogElementRef, type LeadCompanyRef, type LeadContactRef, type LeadTag, type LeadTagRef, type LeadWithParam, LeadsResource, type LinkMetadataInput, type LinkSourceEntityType, type LinkTargetEntityType, type LinkUnsortedLeadResponse, LinksResource, type ListCatalogElementsParams, type ListCatalogElementsResponse, type ListCatalogsParams, type ListCatalogsResponse, type ListChatTemplatesParams, type ListChatTemplatesResponse, type ListCompaniesParams, type ListCompaniesResponse, type ListContactsParams, type ListContactsResponse, type ListCustomField, type ListCustomFieldGroupsResponse, type ListEntityAttachedFilesParams, type ListEntityAttachedFilesResponse, type ListEntityCustomFieldsResponse, type ListEntityLinksParams, type ListEntityLinksResponse, type ListEntityNotesParams, type ListEventTypesParams, type ListEventTypesResponse, type ListEventsParams, type ListEventsResponse, type ListFileLinkedEntitiesResponse, type ListFileVersionsResponse, type ListFilesParams, type ListFilesResponse, type ListLeadsParams, type ListLeadsResponse, type ListListCustomFieldsResponse, type ListLossReasonsResponse, type ListNotesResponse, type ListPipelineStatusesResponse, type ListPipelinesResponse, type ListRolesParams, type ListRolesResponse, type ListSalesbotsParams, type ListSalesbotsResponse, type ListSourcesResponse, type ListTagsParams, type ListTagsResponse, type ListTasksParams, type ListTasksResponse, type ListUnsortedLeadsParams, type ListUnsortedLeadsResponse, type ListUsersParams, type ListUsersResponse, type ListWebhooksParams, type ListWebhooksResponse, type ListWebsiteButtonsParams, type ListWebsiteButtonsResponse, type LossReason, type Note, type NoteEntityType, type NoteParams, type NoteType, NotesResource, type PermissionLevel, type Pipeline, type PipelineStatus, PipelinesResource, type RestoreFilesItem, type Role, type RoleWithParam, RolesResource, type RunManySalesbotsItem, type RunSalesbotInput, type Salesbot, type SalesbotContinueBotType, type SalesbotContinueInput, type SalesbotExecuteHandler, type SalesbotFunctionalityType, SalesbotsResource, type ServiceMessageNoteParams, type SipMetadata, type SmsNoteParams, type Source, type SourceService, type SourceServicePage, SourcesResource, type StatusDescription, type StatusRight, type StopSalesbotInput, type SubmitWhatsAppTemplateReviewResponse, type Tag, type TagColor, type TagEntityType, type TagRefInput, TagsResource, type Task, TasksResource, type UnsortedDecisionResponse, type UnsortedLead, UnsortedResource, type UnsortedSummaryParams, type UnsortedSummaryResponse, type UpdateCatalogElementInput, type UpdateCatalogElementsResponse, type UpdateCatalogInput, type UpdateCatalogsResponse, type UpdateChatTemplateInput, type UpdateChatTemplatesResponse, type UpdateCompaniesResponse, type UpdateCompanyInput, type UpdateContactInput, type UpdateContactsResponse, type UpdateCustomFieldGroupInput, type UpdateEntityCustomFieldInput, type UpdateEntityTagsBatchResponse, type UpdateEntityTagsInput, type UpdateEntityTagsSingleResponse, type UpdateFileInput, type UpdateLeadInput, type UpdateLeadsResponse, type UpdateListCustomFieldInput, type UpdateNoteInput, type UpdateNotesResponse, type UpdatePipelineInput, type UpdateRoleInput, type UpdateSingleCatalogElementInput, type UpdateSingleCatalogInput, type UpdateSingleCompanyInput, type UpdateSingleContactInput, type UpdateSingleEntityCustomFieldInput, type UpdateSingleEntityTagsInput, type UpdateSingleLeadInput, type UpdateSingleListCustomFieldInput, type UpdateSingleNoteInput, type UpdateSingleTaskInput, type UpdateSourceBatchInput, type UpdateSourceInput, type UpdateSourcesResponse, type UpdateStatusInput, type UpdateTaskInput, type UpdateTasksResponse, type UpdateWebsiteButtonInput, type UpdateWhatsAppTemplateReviewStatusInput, type UpdateWhatsAppTemplateReviewStatusResponse, type UploadFilePartInput, type UploadFilePartResponse, type UploadSessionResponse, type User, type UserWithParam, UsersResource, type WabaCategory, type WabaHeaderType, type WabaReviewStatus, type Webhook, type WebhookEvent, WebhooksResource, type WebsiteButton, type WebsiteButtonCreationStatus, WebsiteButtonsResource, type WhatsAppTemplateModerationStatus, eventUtils };
package/dist/index.d.ts CHANGED
@@ -2655,6 +2655,96 @@ declare class WebhooksResource extends BaseResource {
2655
2655
  delete(payload: DeleteWebhookInput): Promise<void>;
2656
2656
  }
2657
2657
 
2658
+ type FileRecord = Record<string, unknown>;
2659
+ type FileVersionRecord = Record<string, unknown>;
2660
+ type EntityAttachedFileRecord = Record<string, unknown>;
2661
+ type FileLinkedEntityRecord = Record<string, unknown>;
2662
+ interface ListFilesParams {
2663
+ filter_uuid?: string[];
2664
+ filter_name?: string;
2665
+ filter_extensions?: string[];
2666
+ filter_term?: string;
2667
+ filter_source_id?: number;
2668
+ filter_deleted?: boolean;
2669
+ filter_size_unit?: number;
2670
+ filter_size_from?: number;
2671
+ filter_size_to?: number;
2672
+ filter_date_type?: 'created_at' | 'updated_at';
2673
+ filter_date_preset?: string;
2674
+ filter_date_from?: number;
2675
+ filter_date_to?: number;
2676
+ filter_created_by?: number[];
2677
+ filter_updated_by?: number[];
2678
+ }
2679
+ interface ListFilesResponse {
2680
+ items?: FileRecord[];
2681
+ raw?: unknown;
2682
+ }
2683
+ interface CreateFileUploadSessionInput {
2684
+ file_name: string;
2685
+ file_size: number;
2686
+ file_uuid?: string;
2687
+ content_type?: string;
2688
+ with_preview?: boolean;
2689
+ }
2690
+ type UploadSessionResponse = Record<string, unknown>;
2691
+ type UploadFilePartInput = ArrayBuffer | Uint8Array | any;
2692
+ type UploadFilePartResponse = Record<string, unknown>;
2693
+ type UpdateFileInput = {
2694
+ name: string;
2695
+ version_uuid?: never;
2696
+ } | {
2697
+ version_uuid: string;
2698
+ name?: never;
2699
+ };
2700
+ type DeleteFilesItem = Record<string, unknown>;
2701
+ type RestoreFilesItem = Record<string, unknown>;
2702
+ interface ListFileVersionsResponse {
2703
+ items?: FileVersionRecord[];
2704
+ raw?: unknown;
2705
+ }
2706
+ type FileAttachEntityType = 'leads' | 'contacts' | 'companies' | 'contatos' | 'empresas' | string;
2707
+ interface ListEntityAttachedFilesParams {
2708
+ limit?: number;
2709
+ before_id?: number;
2710
+ }
2711
+ interface ListEntityAttachedFilesResponse {
2712
+ items?: EntityAttachedFileRecord[];
2713
+ raw?: unknown;
2714
+ }
2715
+ type AttachFilesToEntityItem = Record<string, unknown>;
2716
+ type DetachFilesFromEntityItem = Record<string, unknown>;
2717
+ interface ListFileLinkedEntitiesResponse {
2718
+ items?: FileLinkedEntityRecord[];
2719
+ raw?: unknown;
2720
+ }
2721
+
2722
+ declare class FilesServiceResource extends BaseResource {
2723
+ getByUuid(fileUuid: string): Promise<FileRecord | null>;
2724
+ list(params?: ListFilesParams): Promise<ListFilesResponse>;
2725
+ createUploadSession(payload: CreateFileUploadSessionInput): Promise<UploadSessionResponse>;
2726
+ uploadPart(sessionToken: string, filePart: UploadFilePartInput): Promise<UploadFilePartResponse>;
2727
+ update(fileUuid: string, payload: UpdateFileInput): Promise<FileRecord>;
2728
+ delete(items: DeleteFilesItem | DeleteFilesItem[]): Promise<Record<string, unknown>>;
2729
+ restore(items: RestoreFilesItem | RestoreFilesItem[]): Promise<Record<string, unknown>>;
2730
+ listVersions(fileUuid: string): Promise<ListFileVersionsResponse>;
2731
+ }
2732
+ declare class EntityFilesResource extends BaseResource {
2733
+ private normalizeEntity;
2734
+ listAttachedToEntity(entity: FileAttachEntityType, entityId: number, params?: ListEntityAttachedFilesParams): Promise<ListEntityAttachedFilesResponse>;
2735
+ attachToEntity(entity: FileAttachEntityType, entityId: number, items: AttachFilesToEntityItem | AttachFilesToEntityItem[]): Promise<Record<string, unknown>>;
2736
+ detachFromEntity(entity: FileAttachEntityType, entityId: number, items: DetachFilesFromEntityItem | DetachFilesFromEntityItem[]): Promise<void>;
2737
+ }
2738
+ declare class FileLinksResource extends BaseResource {
2739
+ listLinkedEntities(fileUuid: string): Promise<ListFileLinkedEntitiesResponse>;
2740
+ }
2741
+ declare class FilesResource extends BaseResource {
2742
+ service: FilesServiceResource;
2743
+ entities: EntityFilesResource;
2744
+ links: FileLinksResource;
2745
+ constructor(httpClient: any);
2746
+ }
2747
+
2658
2748
  declare class KommoClient {
2659
2749
  config: KommoConfig;
2660
2750
  auth: AuthManager;
@@ -2679,6 +2769,7 @@ declare class KommoClient {
2679
2769
  websiteButtons: WebsiteButtonsResource;
2680
2770
  chatTemplates: ChatTemplatesResource;
2681
2771
  webhooks: WebhooksResource;
2772
+ files: FilesResource;
2682
2773
  constructor(config: KommoConfig);
2683
2774
  setAccessToken(token: string): void;
2684
2775
  }
@@ -2692,4 +2783,4 @@ declare class KommoApiError extends Error {
2692
2783
  constructor(message: string, info?: Partial<KommoApiError>);
2693
2784
  }
2694
2785
 
2695
- export { type AccessTokenResponse, type AttachmentNoteParams, AuthManager, type BaseCreateUnsortedItem, type BaseCustomField, type BaseEntity, type CallNoteParams, type Catalog, type CatalogElement, type CatalogElementCustomFieldValue, CatalogsResource, type ChatTemplate, type ChatTemplateAttachment, type ChatTemplateButton, type ChatTemplateButtonType, type ChatTemplateReview, type ChatTemplateType, ChatTemplatesResource, type CollectionResponse, type CommonNoteParams, CompaniesResource, type Company, type CompanyCatalogElementRef, type CompanyContactRef, type CompanyLeadRef, type CompanyTag, type CompanyTagRef, type CompanyWithParam, type Contact, type ContactCatalogElementRef, type ContactCompanyRef, type ContactCustomerRef, type ContactLeadRef, type ContactTag, type ContactTagRef, type ContactWithParam, ContactsResource, type CreateCatalogElementInput, type CreateCatalogElementsResponse, type CreateCatalogInput, type CreateCatalogsResponse, type CreateChatTemplateInput, type CreateChatTemplatesResponse, type CreateCompaniesResponse, type CreateCompanyInput, type CreateComplexLeadInput, type CreateComplexLeadsResponse, type CreateComplexLeadsResponseItem, type CreateContactInput, type CreateContactsResponse, type CreateCustomFieldGroupInput, type CreateEntityCustomFieldInput, type CreateEntityLinkInput, type CreateEntityLinksResponse, type CreateFormUnsortedLeadInput, type CreateLeadInput, type CreateLeadsResponse, type CreateListCustomFieldInput, type CreateNoteInput, type CreateNotesResponse, type CreatePipelineInput, type CreatePipelineStatusInput, type CreatePipelinesResponse, type CreateRoleInput, type CreateSipUnsortedLeadInput, type CreateSourceInput, type CreateSourcesResponse, type CreateStatusInput, type CreateStatusesResponse, type CreateTagInput, type CreateTagRef, type CreateTagsResponse, type CreateTaskInput, type CreateTasksResponse, type CreateUnsortedCompany, type CreateUnsortedContact, type CreateUnsortedLead, type CreateUnsortedLeadsResponse, type CreateUserInput, type CreateWebhookInput, type CreateWebsiteButtonInput, type CreateWebsiteButtonResponse, type CustomField, type CustomFieldEnum, type CustomFieldGroup, CustomFieldGroupsResource, type CustomFieldNestedValue, type CustomFieldRequiredStatus, type CustomFieldType, type CustomFieldValue, CustomFieldsResource, type DeleteChatTemplateInput, type DeleteEntityLinkInput, type DeleteSourceBatchInput, type DeleteWebhookInput, type Embedded, type EntityCustomField, type EntityLink, type EntityLinkMetadata, type EntityLinkWithSource, type EntityRights, type EntityType, type EntityUpdateResult, type Event, type EventTypeDefinition, type EventValueChange, type EventValueFilters, type EventWithParam, EventsResource, type FormMetadata, type GeolocationNoteParams, KNOWN_WEBHOOK_EVENTS, KOMMO_PIPELINE_STAGE_COLORS, KOMMO_TAG_COLORS, type KnownEventType, KommoApiError, KommoClient, type KommoConfig, type KommoPipelineStageColor, type Lead, type LeadCatalogElementRef, type LeadCompanyRef, type LeadContactRef, type LeadTag, type LeadTagRef, type LeadWithParam, LeadsResource, type LinkMetadataInput, type LinkSourceEntityType, type LinkTargetEntityType, type LinkUnsortedLeadResponse, LinksResource, type ListCatalogElementsParams, type ListCatalogElementsResponse, type ListCatalogsParams, type ListCatalogsResponse, type ListChatTemplatesParams, type ListChatTemplatesResponse, type ListCompaniesParams, type ListCompaniesResponse, type ListContactsParams, type ListContactsResponse, type ListCustomField, type ListCustomFieldGroupsResponse, type ListEntityCustomFieldsResponse, type ListEntityLinksParams, type ListEntityLinksResponse, type ListEntityNotesParams, type ListEventTypesParams, type ListEventTypesResponse, type ListEventsParams, type ListEventsResponse, type ListLeadsParams, type ListLeadsResponse, type ListListCustomFieldsResponse, type ListLossReasonsResponse, type ListNotesResponse, type ListPipelineStatusesResponse, type ListPipelinesResponse, type ListRolesParams, type ListRolesResponse, type ListSalesbotsParams, type ListSalesbotsResponse, type ListSourcesResponse, type ListTagsParams, type ListTagsResponse, type ListTasksParams, type ListTasksResponse, type ListUnsortedLeadsParams, type ListUnsortedLeadsResponse, type ListUsersParams, type ListUsersResponse, type ListWebhooksParams, type ListWebhooksResponse, type ListWebsiteButtonsParams, type ListWebsiteButtonsResponse, type LossReason, type Note, type NoteEntityType, type NoteParams, type NoteType, NotesResource, type PermissionLevel, type Pipeline, type PipelineStatus, PipelinesResource, type Role, type RoleWithParam, RolesResource, type RunManySalesbotsItem, type RunSalesbotInput, type Salesbot, type SalesbotContinueBotType, type SalesbotContinueInput, type SalesbotExecuteHandler, type SalesbotFunctionalityType, SalesbotsResource, type ServiceMessageNoteParams, type SipMetadata, type SmsNoteParams, type Source, type SourceService, type SourceServicePage, SourcesResource, type StatusDescription, type StatusRight, type StopSalesbotInput, type SubmitWhatsAppTemplateReviewResponse, type Tag, type TagColor, type TagEntityType, type TagRefInput, TagsResource, type Task, TasksResource, type UnsortedDecisionResponse, type UnsortedLead, UnsortedResource, type UnsortedSummaryParams, type UnsortedSummaryResponse, type UpdateCatalogElementInput, type UpdateCatalogElementsResponse, type UpdateCatalogInput, type UpdateCatalogsResponse, type UpdateChatTemplateInput, type UpdateChatTemplatesResponse, type UpdateCompaniesResponse, type UpdateCompanyInput, type UpdateContactInput, type UpdateContactsResponse, type UpdateCustomFieldGroupInput, type UpdateEntityCustomFieldInput, type UpdateEntityTagsBatchResponse, type UpdateEntityTagsInput, type UpdateEntityTagsSingleResponse, type UpdateLeadInput, type UpdateLeadsResponse, type UpdateListCustomFieldInput, type UpdateNoteInput, type UpdateNotesResponse, type UpdatePipelineInput, type UpdateRoleInput, type UpdateSingleCatalogElementInput, type UpdateSingleCatalogInput, type UpdateSingleCompanyInput, type UpdateSingleContactInput, type UpdateSingleEntityCustomFieldInput, type UpdateSingleEntityTagsInput, type UpdateSingleLeadInput, type UpdateSingleListCustomFieldInput, type UpdateSingleNoteInput, type UpdateSingleTaskInput, type UpdateSourceBatchInput, type UpdateSourceInput, type UpdateSourcesResponse, type UpdateStatusInput, type UpdateTaskInput, type UpdateTasksResponse, type UpdateWebsiteButtonInput, type UpdateWhatsAppTemplateReviewStatusInput, type UpdateWhatsAppTemplateReviewStatusResponse, type User, type UserWithParam, UsersResource, type WabaCategory, type WabaHeaderType, type WabaReviewStatus, type Webhook, type WebhookEvent, WebhooksResource, type WebsiteButton, type WebsiteButtonCreationStatus, WebsiteButtonsResource, type WhatsAppTemplateModerationStatus, eventUtils };
2786
+ export { type AccessTokenResponse, type AttachFilesToEntityItem, type AttachmentNoteParams, AuthManager, type BaseCreateUnsortedItem, type BaseCustomField, type BaseEntity, type CallNoteParams, type Catalog, type CatalogElement, type CatalogElementCustomFieldValue, CatalogsResource, type ChatTemplate, type ChatTemplateAttachment, type ChatTemplateButton, type ChatTemplateButtonType, type ChatTemplateReview, type ChatTemplateType, ChatTemplatesResource, type CollectionResponse, type CommonNoteParams, CompaniesResource, type Company, type CompanyCatalogElementRef, type CompanyContactRef, type CompanyLeadRef, type CompanyTag, type CompanyTagRef, type CompanyWithParam, type Contact, type ContactCatalogElementRef, type ContactCompanyRef, type ContactCustomerRef, type ContactLeadRef, type ContactTag, type ContactTagRef, type ContactWithParam, ContactsResource, type CreateCatalogElementInput, type CreateCatalogElementsResponse, type CreateCatalogInput, type CreateCatalogsResponse, type CreateChatTemplateInput, type CreateChatTemplatesResponse, type CreateCompaniesResponse, type CreateCompanyInput, type CreateComplexLeadInput, type CreateComplexLeadsResponse, type CreateComplexLeadsResponseItem, type CreateContactInput, type CreateContactsResponse, type CreateCustomFieldGroupInput, type CreateEntityCustomFieldInput, type CreateEntityLinkInput, type CreateEntityLinksResponse, type CreateFileUploadSessionInput, type CreateFormUnsortedLeadInput, type CreateLeadInput, type CreateLeadsResponse, type CreateListCustomFieldInput, type CreateNoteInput, type CreateNotesResponse, type CreatePipelineInput, type CreatePipelineStatusInput, type CreatePipelinesResponse, type CreateRoleInput, type CreateSipUnsortedLeadInput, type CreateSourceInput, type CreateSourcesResponse, type CreateStatusInput, type CreateStatusesResponse, type CreateTagInput, type CreateTagRef, type CreateTagsResponse, type CreateTaskInput, type CreateTasksResponse, type CreateUnsortedCompany, type CreateUnsortedContact, type CreateUnsortedLead, type CreateUnsortedLeadsResponse, type CreateUserInput, type CreateWebhookInput, type CreateWebsiteButtonInput, type CreateWebsiteButtonResponse, type CustomField, type CustomFieldEnum, type CustomFieldGroup, CustomFieldGroupsResource, type CustomFieldNestedValue, type CustomFieldRequiredStatus, type CustomFieldType, type CustomFieldValue, CustomFieldsResource, type DeleteChatTemplateInput, type DeleteEntityLinkInput, type DeleteFilesItem, type DeleteSourceBatchInput, type DeleteWebhookInput, type DetachFilesFromEntityItem, type Embedded, type EntityAttachedFileRecord, type EntityCustomField, EntityFilesResource, type EntityLink, type EntityLinkMetadata, type EntityLinkWithSource, type EntityRights, type EntityType, type EntityUpdateResult, type Event, type EventTypeDefinition, type EventValueChange, type EventValueFilters, type EventWithParam, EventsResource, type FileAttachEntityType, type FileLinkedEntityRecord, FileLinksResource, type FileRecord, type FileVersionRecord, FilesResource, FilesServiceResource, type FormMetadata, type GeolocationNoteParams, KNOWN_WEBHOOK_EVENTS, KOMMO_PIPELINE_STAGE_COLORS, KOMMO_TAG_COLORS, type KnownEventType, KommoApiError, KommoClient, type KommoConfig, type KommoPipelineStageColor, type Lead, type LeadCatalogElementRef, type LeadCompanyRef, type LeadContactRef, type LeadTag, type LeadTagRef, type LeadWithParam, LeadsResource, type LinkMetadataInput, type LinkSourceEntityType, type LinkTargetEntityType, type LinkUnsortedLeadResponse, LinksResource, type ListCatalogElementsParams, type ListCatalogElementsResponse, type ListCatalogsParams, type ListCatalogsResponse, type ListChatTemplatesParams, type ListChatTemplatesResponse, type ListCompaniesParams, type ListCompaniesResponse, type ListContactsParams, type ListContactsResponse, type ListCustomField, type ListCustomFieldGroupsResponse, type ListEntityAttachedFilesParams, type ListEntityAttachedFilesResponse, type ListEntityCustomFieldsResponse, type ListEntityLinksParams, type ListEntityLinksResponse, type ListEntityNotesParams, type ListEventTypesParams, type ListEventTypesResponse, type ListEventsParams, type ListEventsResponse, type ListFileLinkedEntitiesResponse, type ListFileVersionsResponse, type ListFilesParams, type ListFilesResponse, type ListLeadsParams, type ListLeadsResponse, type ListListCustomFieldsResponse, type ListLossReasonsResponse, type ListNotesResponse, type ListPipelineStatusesResponse, type ListPipelinesResponse, type ListRolesParams, type ListRolesResponse, type ListSalesbotsParams, type ListSalesbotsResponse, type ListSourcesResponse, type ListTagsParams, type ListTagsResponse, type ListTasksParams, type ListTasksResponse, type ListUnsortedLeadsParams, type ListUnsortedLeadsResponse, type ListUsersParams, type ListUsersResponse, type ListWebhooksParams, type ListWebhooksResponse, type ListWebsiteButtonsParams, type ListWebsiteButtonsResponse, type LossReason, type Note, type NoteEntityType, type NoteParams, type NoteType, NotesResource, type PermissionLevel, type Pipeline, type PipelineStatus, PipelinesResource, type RestoreFilesItem, type Role, type RoleWithParam, RolesResource, type RunManySalesbotsItem, type RunSalesbotInput, type Salesbot, type SalesbotContinueBotType, type SalesbotContinueInput, type SalesbotExecuteHandler, type SalesbotFunctionalityType, SalesbotsResource, type ServiceMessageNoteParams, type SipMetadata, type SmsNoteParams, type Source, type SourceService, type SourceServicePage, SourcesResource, type StatusDescription, type StatusRight, type StopSalesbotInput, type SubmitWhatsAppTemplateReviewResponse, type Tag, type TagColor, type TagEntityType, type TagRefInput, TagsResource, type Task, TasksResource, type UnsortedDecisionResponse, type UnsortedLead, UnsortedResource, type UnsortedSummaryParams, type UnsortedSummaryResponse, type UpdateCatalogElementInput, type UpdateCatalogElementsResponse, type UpdateCatalogInput, type UpdateCatalogsResponse, type UpdateChatTemplateInput, type UpdateChatTemplatesResponse, type UpdateCompaniesResponse, type UpdateCompanyInput, type UpdateContactInput, type UpdateContactsResponse, type UpdateCustomFieldGroupInput, type UpdateEntityCustomFieldInput, type UpdateEntityTagsBatchResponse, type UpdateEntityTagsInput, type UpdateEntityTagsSingleResponse, type UpdateFileInput, type UpdateLeadInput, type UpdateLeadsResponse, type UpdateListCustomFieldInput, type UpdateNoteInput, type UpdateNotesResponse, type UpdatePipelineInput, type UpdateRoleInput, type UpdateSingleCatalogElementInput, type UpdateSingleCatalogInput, type UpdateSingleCompanyInput, type UpdateSingleContactInput, type UpdateSingleEntityCustomFieldInput, type UpdateSingleEntityTagsInput, type UpdateSingleLeadInput, type UpdateSingleListCustomFieldInput, type UpdateSingleNoteInput, type UpdateSingleTaskInput, type UpdateSourceBatchInput, type UpdateSourceInput, type UpdateSourcesResponse, type UpdateStatusInput, type UpdateTaskInput, type UpdateTasksResponse, type UpdateWebsiteButtonInput, type UpdateWhatsAppTemplateReviewStatusInput, type UpdateWhatsAppTemplateReviewStatusResponse, type UploadFilePartInput, type UploadFilePartResponse, type UploadSessionResponse, type User, type UserWithParam, UsersResource, type WabaCategory, type WabaHeaderType, type WabaReviewStatus, type Webhook, type WebhookEvent, WebhooksResource, type WebsiteButton, type WebsiteButtonCreationStatus, WebsiteButtonsResource, type WhatsAppTemplateModerationStatus, eventUtils };
package/dist/index.js CHANGED
@@ -37,7 +37,11 @@ __export(index_exports, {
37
37
  ContactsResource: () => ContactsResource,
38
38
  CustomFieldGroupsResource: () => CustomFieldGroupsResource,
39
39
  CustomFieldsResource: () => CustomFieldsResource,
40
+ EntityFilesResource: () => EntityFilesResource,
40
41
  EventsResource: () => EventsResource,
42
+ FileLinksResource: () => FileLinksResource,
43
+ FilesResource: () => FilesResource,
44
+ FilesServiceResource: () => FilesServiceResource,
41
45
  KNOWN_WEBHOOK_EVENTS: () => KNOWN_WEBHOOK_EVENTS,
42
46
  KOMMO_PIPELINE_STAGE_COLORS: () => KOMMO_PIPELINE_STAGE_COLORS,
43
47
  KOMMO_TAG_COLORS: () => KOMMO_TAG_COLORS,
@@ -62,7 +66,7 @@ module.exports = __toCommonJS(index_exports);
62
66
 
63
67
  // src/client.ts
64
68
  var import_axios2 = __toESM(require("axios"));
65
- var import_qs17 = __toESM(require("qs"));
69
+ var import_qs18 = __toESM(require("qs"));
66
70
 
67
71
  // src/auth.ts
68
72
  var import_axios = __toESM(require("axios"));
@@ -1258,6 +1262,144 @@ var WebhooksResource = class extends BaseResource {
1258
1262
  }
1259
1263
  };
1260
1264
 
1265
+ // src/resources/files/index.ts
1266
+ var import_qs17 = __toESM(require("qs"));
1267
+ var FilesServiceResource = class extends BaseResource {
1268
+ async getByUuid(fileUuid) {
1269
+ const response = await this.client.get(`/v1.0/files/${fileUuid}`);
1270
+ if (response.status === 204) {
1271
+ return null;
1272
+ }
1273
+ return response.data;
1274
+ }
1275
+ async list(params) {
1276
+ const queryParams = {};
1277
+ if (params) {
1278
+ const filter = {};
1279
+ const paramKeys = Object.keys(params);
1280
+ for (const key of paramKeys) {
1281
+ if (params[key] !== void 0) {
1282
+ const filterKey = key.replace("filter_", "");
1283
+ if (filterKey.startsWith("size_") || filterKey.startsWith("date_")) {
1284
+ const [prefix, sub] = filterKey.split("_");
1285
+ if (!filter[prefix]) filter[prefix] = {};
1286
+ if (key === "filter_size_unit") filter.size = { ...filter.size, unit: params[key] };
1287
+ else if (key === "filter_size_from") filter.size = { ...filter.size, from: params[key] };
1288
+ else if (key === "filter_size_to") filter.size = { ...filter.size, to: params[key] };
1289
+ else if (key === "filter_date_type") filter.date = { ...filter.date, type: params[key] };
1290
+ else if (key === "filter_date_preset") filter.date = { ...filter.date, date_preset: params[key] };
1291
+ else if (key === "filter_date_from") filter.date = { ...filter.date, from: params[key] };
1292
+ else if (key === "filter_date_to") filter.date = { ...filter.date, to: params[key] };
1293
+ } else {
1294
+ filter[filterKey] = params[key];
1295
+ }
1296
+ }
1297
+ }
1298
+ if (Object.keys(filter).length > 0) {
1299
+ queryParams.filter = filter;
1300
+ }
1301
+ }
1302
+ const query = import_qs17.default.stringify(queryParams, { skipNulls: true, arrayFormat: "brackets" });
1303
+ const qsStr = query ? `?${query}` : "";
1304
+ const response = await this.client.get(`/v1.0/files${qsStr}`);
1305
+ if (response.status === 204 || !response.data) {
1306
+ return { items: [], raw: response.data };
1307
+ }
1308
+ return {
1309
+ // Se houver um array nativo
1310
+ items: Array.isArray(response.data) ? response.data : response.data?._embedded?.files || response.data?.items,
1311
+ raw: response.data
1312
+ };
1313
+ }
1314
+ async createUploadSession(payload) {
1315
+ const response = await this.client.post("/v1.0/sessions", payload);
1316
+ return response.data;
1317
+ }
1318
+ async uploadPart(sessionToken, filePart) {
1319
+ const response = await this.client.post(`/v1.0/sessions/upload/${sessionToken}`, filePart, {
1320
+ headers: {
1321
+ "Content-Type": "application/octet-stream"
1322
+ }
1323
+ });
1324
+ return response.data;
1325
+ }
1326
+ async update(fileUuid, payload) {
1327
+ if (payload.name !== void 0 && payload.version_uuid !== void 0) {
1328
+ throw new Error("A Files API n\xE3o permite alterar 'name' e definir 'version_uuid' na mesma requisi\xE7\xE3o.");
1329
+ }
1330
+ const response = await this.client.patch(`/v1.0/files/${fileUuid}`, payload);
1331
+ return response.data;
1332
+ }
1333
+ async delete(items) {
1334
+ const payload = Array.isArray(items) ? items : [items];
1335
+ const response = await this.client.delete(`/v1.0/files`, { data: payload });
1336
+ return response.data || {};
1337
+ }
1338
+ async restore(items) {
1339
+ const payload = Array.isArray(items) ? items : [items];
1340
+ const response = await this.client.post(`/v1.0/files/restore`, payload);
1341
+ return response.data;
1342
+ }
1343
+ async listVersions(fileUuid) {
1344
+ const response = await this.client.get(`/v1.0/files/${fileUuid}/versions`);
1345
+ return {
1346
+ items: Array.isArray(response.data) ? response.data : response.data?._embedded?.versions || response.data?.items,
1347
+ raw: response.data
1348
+ };
1349
+ }
1350
+ };
1351
+ var EntityFilesResource = class extends BaseResource {
1352
+ normalizeEntity(entity) {
1353
+ if (entity === "contatos") return "contacts";
1354
+ if (entity === "empresas") return "companies";
1355
+ return entity;
1356
+ }
1357
+ async listAttachedToEntity(entity, entityId, params) {
1358
+ const normalEntity = this.normalizeEntity(entity);
1359
+ const query = import_qs17.default.stringify(params, { skipNulls: true });
1360
+ const qsStr = query ? `?${query}` : "";
1361
+ const response = await this.client.get(`/api/v4/${normalEntity}/${entityId}/files${qsStr}`);
1362
+ if (response.status === 204) {
1363
+ return { items: [], raw: null };
1364
+ }
1365
+ return {
1366
+ items: Array.isArray(response.data) ? response.data : response.data?._embedded?.files || response.data?.items,
1367
+ raw: response.data
1368
+ };
1369
+ }
1370
+ async attachToEntity(entity, entityId, items) {
1371
+ const normalEntity = this.normalizeEntity(entity);
1372
+ const payload = Array.isArray(items) ? items : [items];
1373
+ const response = await this.client.put(`/api/v4/${normalEntity}/${entityId}/files`, payload);
1374
+ return response.data;
1375
+ }
1376
+ async detachFromEntity(entity, entityId, items) {
1377
+ const normalEntity = this.normalizeEntity(entity);
1378
+ const payload = Array.isArray(items) ? items : [items];
1379
+ await this.client.delete(`/api/v4/${normalEntity}/${entityId}/files`, { data: payload });
1380
+ }
1381
+ };
1382
+ var FileLinksResource = class extends BaseResource {
1383
+ async listLinkedEntities(fileUuid) {
1384
+ const response = await this.client.get(`/api/v4/files/${fileUuid}/links`);
1385
+ return {
1386
+ items: Array.isArray(response.data) ? response.data : response.data?._embedded?.links || response.data?.items,
1387
+ raw: response.data
1388
+ };
1389
+ }
1390
+ };
1391
+ var FilesResource = class extends BaseResource {
1392
+ service;
1393
+ entities;
1394
+ links;
1395
+ constructor(httpClient) {
1396
+ super(httpClient);
1397
+ this.service = new FilesServiceResource(httpClient);
1398
+ this.entities = new EntityFilesResource(httpClient);
1399
+ this.links = new FileLinksResource(httpClient);
1400
+ }
1401
+ };
1402
+
1261
1403
  // src/errors.ts
1262
1404
  var KommoApiError = class extends Error {
1263
1405
  status;
@@ -1303,6 +1445,7 @@ var KommoClient = class {
1303
1445
  websiteButtons;
1304
1446
  chatTemplates;
1305
1447
  webhooks;
1448
+ files;
1306
1449
  constructor(config) {
1307
1450
  this.config = config;
1308
1451
  this.auth = new AuthManager(
@@ -1318,7 +1461,7 @@ var KommoClient = class {
1318
1461
  "Content-Type": "application/json"
1319
1462
  },
1320
1463
  paramsSerializer: (params) => {
1321
- return import_qs17.default.stringify(params, { arrayFormat: "brackets" });
1464
+ return import_qs18.default.stringify(params, { arrayFormat: "brackets" });
1322
1465
  }
1323
1466
  });
1324
1467
  this.httpClient.interceptors.response.use(
@@ -1360,6 +1503,7 @@ var KommoClient = class {
1360
1503
  this.websiteButtons = new WebsiteButtonsResource(this.httpClient);
1361
1504
  this.chatTemplates = new ChatTemplatesResource(this.httpClient);
1362
1505
  this.webhooks = new WebhooksResource(this.httpClient);
1506
+ this.files = new FilesResource(this.httpClient);
1363
1507
  }
1364
1508
  setAccessToken(token) {
1365
1509
  this.config.accessToken = token;
@@ -1452,7 +1596,11 @@ var KNOWN_WEBHOOK_EVENTS = [
1452
1596
  ContactsResource,
1453
1597
  CustomFieldGroupsResource,
1454
1598
  CustomFieldsResource,
1599
+ EntityFilesResource,
1455
1600
  EventsResource,
1601
+ FileLinksResource,
1602
+ FilesResource,
1603
+ FilesServiceResource,
1456
1604
  KNOWN_WEBHOOK_EVENTS,
1457
1605
  KOMMO_PIPELINE_STAGE_COLORS,
1458
1606
  KOMMO_TAG_COLORS,