kommo-aiatende-api 1.2.1 → 1.2.3

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/dist/index.d.mts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { AxiosInstance } from 'axios';
2
2
 
3
+ interface RetryConfig {
4
+ /** Número máximo de novas tentativas após a primeira falha. Padrão: 2. */
5
+ retries?: number;
6
+ /** Atraso base (ms) usado no backoff exponencial. Padrão: 300. */
7
+ baseDelayMs?: number;
8
+ /** Teto do atraso entre tentativas (ms). Padrão: 3000. */
9
+ maxDelayMs?: number;
10
+ }
3
11
  interface KommoConfig {
4
12
  domain: string;
5
13
  accessToken?: string;
@@ -7,6 +15,10 @@ interface KommoConfig {
7
15
  clientId?: string;
8
16
  clientSecret?: string;
9
17
  redirectUri?: string;
18
+ /** Timeout (ms) por requisição HTTP. Padrão: 30000. */
19
+ timeout?: number;
20
+ /** Configuração de retry para erros transitórios de rede (ex.: "socket hang up"). Passe `false` para desativar. */
21
+ retry?: RetryConfig | false;
10
22
  }
11
23
  interface AccessTokenResponse {
12
24
  token_type: string;
@@ -73,6 +85,14 @@ declare class AuthManager {
73
85
  declare abstract class BaseResource {
74
86
  protected client: AxiosInstance;
75
87
  constructor(client: AxiosInstance);
88
+ /**
89
+ * POST de criação em lote marcado como seguro para retry: cada item recebe um
90
+ * request_id (se ainda não tiver um) para que a Kommo deduplique reenvios após
91
+ * falhas transitórias de rede, e a requisição fica elegível ao retry automático.
92
+ */
93
+ protected postIdempotent<TResponse, TItem extends {
94
+ request_id?: string;
95
+ }>(url: string, items: TItem[]): Promise<TResponse>;
76
96
  }
77
97
 
78
98
  interface Lead {
@@ -2792,6 +2812,64 @@ declare class AccountResource extends BaseResource {
2792
2812
  get(params?: GetAccountParams): Promise<Account>;
2793
2813
  }
2794
2814
 
2815
+ type TalkEntityType = 'lead';
2816
+ type TalkStatus = 'in_work' | 'closed' | 'nps_scheduled' | 'nps_in_progress' | 'with_error';
2817
+ interface Talk {
2818
+ talk_id: number;
2819
+ created_at: number;
2820
+ updated_at: number;
2821
+ rate: number | null;
2822
+ contact_id: number;
2823
+ chat_id: string;
2824
+ entity_id: number;
2825
+ entity_type: TalkEntityType;
2826
+ status: TalkStatus;
2827
+ is_in_work: boolean;
2828
+ is_read: boolean;
2829
+ origin: string;
2830
+ source_id: string | null;
2831
+ account_id: number;
2832
+ _embedded?: {
2833
+ contacts?: Array<{
2834
+ id: number;
2835
+ }>;
2836
+ leads?: Array<{
2837
+ id: number;
2838
+ }>;
2839
+ };
2840
+ }
2841
+ interface ListTalksParams {
2842
+ page?: number;
2843
+ limit?: number;
2844
+ filter_talk_id?: number[];
2845
+ filter_contact_id?: number[];
2846
+ filter_entity_id?: number[];
2847
+ filter_entity_type?: TalkEntityType;
2848
+ filter_only_in_work?: boolean;
2849
+ }
2850
+ interface ListTalksResponse {
2851
+ _page: number;
2852
+ _links?: {
2853
+ self?: {
2854
+ href: string;
2855
+ };
2856
+ next?: {
2857
+ href: string;
2858
+ };
2859
+ };
2860
+ _embedded?: {
2861
+ talks?: Talk[];
2862
+ };
2863
+ }
2864
+ interface CloseTalkParams {
2865
+ force_close?: boolean;
2866
+ }
2867
+
2868
+ declare class TalksResource extends BaseResource {
2869
+ list(params?: ListTalksParams): Promise<ListTalksResponse>;
2870
+ close(id: number, params?: CloseTalkParams): Promise<void>;
2871
+ }
2872
+
2795
2873
  declare class KommoClient {
2796
2874
  config: KommoConfig;
2797
2875
  auth: AuthManager;
@@ -2818,6 +2896,7 @@ declare class KommoClient {
2818
2896
  webhooks: WebhooksResource;
2819
2897
  files: FilesResource;
2820
2898
  account: AccountResource;
2899
+ talks: TalksResource;
2821
2900
  constructor(config: KommoConfig);
2822
2901
  setAccessToken(token: string): void;
2823
2902
  }
@@ -2831,4 +2910,4 @@ declare class KommoApiError extends Error {
2831
2910
  constructor(message: string, info?: Partial<KommoApiError>);
2832
2911
  }
2833
2912
 
2834
- export { type AccessTokenResponse, type Account, AccountResource, type AccountWithParam, type AmojoRights, 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, type GetAccountParams, 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 };
2913
+ export { type AccessTokenResponse, type Account, AccountResource, type AccountWithParam, type AmojoRights, 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 CloseTalkParams, 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, type GetAccountParams, 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 ListTalksParams, type ListTalksResponse, 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 RetryConfig, 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 Talk, type TalkEntityType, type TalkStatus, TalksResource, 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
@@ -1,5 +1,13 @@
1
1
  import { AxiosInstance } from 'axios';
2
2
 
3
+ interface RetryConfig {
4
+ /** Número máximo de novas tentativas após a primeira falha. Padrão: 2. */
5
+ retries?: number;
6
+ /** Atraso base (ms) usado no backoff exponencial. Padrão: 300. */
7
+ baseDelayMs?: number;
8
+ /** Teto do atraso entre tentativas (ms). Padrão: 3000. */
9
+ maxDelayMs?: number;
10
+ }
3
11
  interface KommoConfig {
4
12
  domain: string;
5
13
  accessToken?: string;
@@ -7,6 +15,10 @@ interface KommoConfig {
7
15
  clientId?: string;
8
16
  clientSecret?: string;
9
17
  redirectUri?: string;
18
+ /** Timeout (ms) por requisição HTTP. Padrão: 30000. */
19
+ timeout?: number;
20
+ /** Configuração de retry para erros transitórios de rede (ex.: "socket hang up"). Passe `false` para desativar. */
21
+ retry?: RetryConfig | false;
10
22
  }
11
23
  interface AccessTokenResponse {
12
24
  token_type: string;
@@ -73,6 +85,14 @@ declare class AuthManager {
73
85
  declare abstract class BaseResource {
74
86
  protected client: AxiosInstance;
75
87
  constructor(client: AxiosInstance);
88
+ /**
89
+ * POST de criação em lote marcado como seguro para retry: cada item recebe um
90
+ * request_id (se ainda não tiver um) para que a Kommo deduplique reenvios após
91
+ * falhas transitórias de rede, e a requisição fica elegível ao retry automático.
92
+ */
93
+ protected postIdempotent<TResponse, TItem extends {
94
+ request_id?: string;
95
+ }>(url: string, items: TItem[]): Promise<TResponse>;
76
96
  }
77
97
 
78
98
  interface Lead {
@@ -2792,6 +2812,64 @@ declare class AccountResource extends BaseResource {
2792
2812
  get(params?: GetAccountParams): Promise<Account>;
2793
2813
  }
2794
2814
 
2815
+ type TalkEntityType = 'lead';
2816
+ type TalkStatus = 'in_work' | 'closed' | 'nps_scheduled' | 'nps_in_progress' | 'with_error';
2817
+ interface Talk {
2818
+ talk_id: number;
2819
+ created_at: number;
2820
+ updated_at: number;
2821
+ rate: number | null;
2822
+ contact_id: number;
2823
+ chat_id: string;
2824
+ entity_id: number;
2825
+ entity_type: TalkEntityType;
2826
+ status: TalkStatus;
2827
+ is_in_work: boolean;
2828
+ is_read: boolean;
2829
+ origin: string;
2830
+ source_id: string | null;
2831
+ account_id: number;
2832
+ _embedded?: {
2833
+ contacts?: Array<{
2834
+ id: number;
2835
+ }>;
2836
+ leads?: Array<{
2837
+ id: number;
2838
+ }>;
2839
+ };
2840
+ }
2841
+ interface ListTalksParams {
2842
+ page?: number;
2843
+ limit?: number;
2844
+ filter_talk_id?: number[];
2845
+ filter_contact_id?: number[];
2846
+ filter_entity_id?: number[];
2847
+ filter_entity_type?: TalkEntityType;
2848
+ filter_only_in_work?: boolean;
2849
+ }
2850
+ interface ListTalksResponse {
2851
+ _page: number;
2852
+ _links?: {
2853
+ self?: {
2854
+ href: string;
2855
+ };
2856
+ next?: {
2857
+ href: string;
2858
+ };
2859
+ };
2860
+ _embedded?: {
2861
+ talks?: Talk[];
2862
+ };
2863
+ }
2864
+ interface CloseTalkParams {
2865
+ force_close?: boolean;
2866
+ }
2867
+
2868
+ declare class TalksResource extends BaseResource {
2869
+ list(params?: ListTalksParams): Promise<ListTalksResponse>;
2870
+ close(id: number, params?: CloseTalkParams): Promise<void>;
2871
+ }
2872
+
2795
2873
  declare class KommoClient {
2796
2874
  config: KommoConfig;
2797
2875
  auth: AuthManager;
@@ -2818,6 +2896,7 @@ declare class KommoClient {
2818
2896
  webhooks: WebhooksResource;
2819
2897
  files: FilesResource;
2820
2898
  account: AccountResource;
2899
+ talks: TalksResource;
2821
2900
  constructor(config: KommoConfig);
2822
2901
  setAccessToken(token: string): void;
2823
2902
  }
@@ -2831,4 +2910,4 @@ declare class KommoApiError extends Error {
2831
2910
  constructor(message: string, info?: Partial<KommoApiError>);
2832
2911
  }
2833
2912
 
2834
- export { type AccessTokenResponse, type Account, AccountResource, type AccountWithParam, type AmojoRights, 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, type GetAccountParams, 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 };
2913
+ export { type AccessTokenResponse, type Account, AccountResource, type AccountWithParam, type AmojoRights, 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 CloseTalkParams, 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, type GetAccountParams, 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 ListTalksParams, type ListTalksResponse, 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 RetryConfig, 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 Talk, type TalkEntityType, type TalkStatus, TalksResource, 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
@@ -56,6 +56,7 @@ __export(index_exports, {
56
56
  SalesbotsResource: () => SalesbotsResource,
57
57
  SourcesResource: () => SourcesResource,
58
58
  TagsResource: () => TagsResource,
59
+ TalksResource: () => TalksResource,
59
60
  TasksResource: () => TasksResource,
60
61
  UnsortedResource: () => UnsortedResource,
61
62
  UsersResource: () => UsersResource,
@@ -67,7 +68,7 @@ module.exports = __toCommonJS(index_exports);
67
68
 
68
69
  // src/client.ts
69
70
  var import_axios2 = __toESM(require("axios"));
70
- var import_qs18 = __toESM(require("qs"));
71
+ var import_qs19 = __toESM(require("qs"));
71
72
 
72
73
  // src/auth.ts
73
74
  var import_axios = __toESM(require("axios"));
@@ -108,12 +109,30 @@ var AuthManager = class {
108
109
  // src/resources/leads/index.ts
109
110
  var import_qs = __toESM(require("qs"));
110
111
 
112
+ // src/utils/idempotency.ts
113
+ var import_crypto = require("crypto");
114
+ function ensureRequestId(item) {
115
+ if (item.request_id) return item;
116
+ return { ...item, request_id: (0, import_crypto.randomUUID)() };
117
+ }
118
+
111
119
  // src/base.ts
112
120
  var BaseResource = class {
113
121
  client;
114
122
  constructor(client) {
115
123
  this.client = client;
116
124
  }
125
+ /**
126
+ * POST de criação em lote marcado como seguro para retry: cada item recebe um
127
+ * request_id (se ainda não tiver um) para que a Kommo deduplique reenvios após
128
+ * falhas transitórias de rede, e a requisição fica elegível ao retry automático.
129
+ */
130
+ async postIdempotent(url, items) {
131
+ const payload = items.map(ensureRequestId);
132
+ const config = { _idempotentRetry: true };
133
+ const response = await this.client.post(url, payload, config);
134
+ return response.data;
135
+ }
117
136
  };
118
137
 
119
138
  // src/resources/leads/index.ts
@@ -185,8 +204,7 @@ var LeadsResource = class extends BaseResource {
185
204
  }
186
205
  async create(items) {
187
206
  const payload = Array.isArray(items) ? items : [items];
188
- const response = await this.client.post("/api/v4/leads", payload);
189
- return response.data;
207
+ return this.postIdempotent("/api/v4/leads", payload);
190
208
  }
191
209
  async update(items) {
192
210
  const payload = Array.isArray(items) ? items : [items];
@@ -199,8 +217,7 @@ var LeadsResource = class extends BaseResource {
199
217
  }
200
218
  async createComplex(items) {
201
219
  const payload = Array.isArray(items) ? items : [items];
202
- const response = await this.client.post("/api/v4/leads/complex", payload);
203
- return response.data;
220
+ return this.postIdempotent("/api/v4/leads/complex", payload);
204
221
  }
205
222
  async listLossReasons() {
206
223
  const response = await this.client.get("/api/v4/leads/loss_reasons");
@@ -277,8 +294,7 @@ var ContactsResource = class extends BaseResource {
277
294
  }
278
295
  async create(items) {
279
296
  const payload = Array.isArray(items) ? items : [items];
280
- const response = await this.client.post("/api/v4/contacts", payload);
281
- return response.data;
297
+ return this.postIdempotent("/api/v4/contacts", payload);
282
298
  }
283
299
  async update(items) {
284
300
  const payload = Array.isArray(items) ? items : [items];
@@ -745,8 +761,7 @@ var CompaniesResource = class extends BaseResource {
745
761
  }
746
762
  async create(items) {
747
763
  const payload = Array.isArray(items) ? items : [items];
748
- const response = await this.client.post("/api/v4/companies", payload);
749
- return response.data;
764
+ return this.postIdempotent("/api/v4/companies", payload);
750
765
  }
751
766
  async update(items) {
752
767
  const payload = Array.isArray(items) ? items : [items];
@@ -1414,6 +1429,33 @@ var AccountResource = class extends BaseResource {
1414
1429
  }
1415
1430
  };
1416
1431
 
1432
+ // src/resources/talks/index.ts
1433
+ var import_qs18 = __toESM(require("qs"));
1434
+ var TalksResource = class extends BaseResource {
1435
+ async list(params) {
1436
+ const queryParams = {};
1437
+ if (params) {
1438
+ if (params.page !== void 0) queryParams.page = params.page;
1439
+ if (params.limit !== void 0) queryParams.limit = params.limit;
1440
+ if (params.filter_talk_id !== void 0) queryParams.filter = { ...queryParams.filter, talk_id: params.filter_talk_id };
1441
+ if (params.filter_contact_id !== void 0) queryParams.filter = { ...queryParams.filter, contact_id: params.filter_contact_id };
1442
+ if (params.filter_entity_id !== void 0) queryParams.filter = { ...queryParams.filter, entity_id: params.filter_entity_id };
1443
+ if (params.filter_entity_type !== void 0) queryParams.filter = { ...queryParams.filter, entity_type: params.filter_entity_type };
1444
+ if (params.filter_only_in_work) queryParams.filter = { ...queryParams.filter, only_in_work: "" };
1445
+ }
1446
+ const query = import_qs18.default.stringify(queryParams, { skipNulls: true, arrayFormat: "brackets" });
1447
+ const qsStr = query ? `?${query}` : "";
1448
+ const response = await this.client.get(`/api/v4/talks${qsStr}`);
1449
+ if (response.status === 204 || !response.data) {
1450
+ return { _page: 1, _embedded: { talks: [] } };
1451
+ }
1452
+ return response.data;
1453
+ }
1454
+ async close(id, params) {
1455
+ await this.client.post(`/api/v4/talks/${id}/close`, params ?? {});
1456
+ }
1457
+ };
1458
+
1417
1459
  // src/errors.ts
1418
1460
  var KommoApiError = class extends Error {
1419
1461
  status;
@@ -1434,6 +1476,47 @@ var KommoApiError = class extends Error {
1434
1476
  }
1435
1477
  };
1436
1478
 
1479
+ // src/http/retry.ts
1480
+ var IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["get", "delete", "patch", "put", "head", "options"]);
1481
+ var TRANSIENT_ERROR_CODES = /* @__PURE__ */ new Set([
1482
+ "ECONNRESET",
1483
+ "ECONNABORTED",
1484
+ "ETIMEDOUT",
1485
+ "EAI_AGAIN",
1486
+ "EPIPE"
1487
+ ]);
1488
+ function isTransientNetworkError(error) {
1489
+ if (error.response) return false;
1490
+ if (error.code && TRANSIENT_ERROR_CODES.has(error.code)) return true;
1491
+ return /socket hang up|network error/i.test(error.message || "");
1492
+ }
1493
+ function isRetryableRequest(config) {
1494
+ const method = (config.method || "get").toLowerCase();
1495
+ if (IDEMPOTENT_METHODS.has(method)) return true;
1496
+ return method === "post" && config._idempotentRetry === true;
1497
+ }
1498
+ function wait(ms) {
1499
+ return new Promise((resolve) => setTimeout(resolve, ms));
1500
+ }
1501
+ function attachRetryInterceptor(client, retryConfig = {}) {
1502
+ const { retries = 2, baseDelayMs = 300, maxDelayMs = 3e3 } = retryConfig;
1503
+ client.interceptors.response.use(void 0, async (error) => {
1504
+ const config = error.config;
1505
+ if (!config || retries <= 0 || !isTransientNetworkError(error) || !isRetryableRequest(config)) {
1506
+ throw error;
1507
+ }
1508
+ const attempt = config._retryCount ?? 0;
1509
+ if (attempt >= retries) {
1510
+ throw error;
1511
+ }
1512
+ config._retryCount = attempt + 1;
1513
+ const backoff = Math.min(maxDelayMs, baseDelayMs * 2 ** attempt);
1514
+ const jitter = backoff * 0.3 * Math.random();
1515
+ await wait(backoff + jitter);
1516
+ return client.request(config);
1517
+ });
1518
+ }
1519
+
1437
1520
  // src/client.ts
1438
1521
  var KommoClient = class {
1439
1522
  config;
@@ -1461,6 +1544,7 @@ var KommoClient = class {
1461
1544
  webhooks;
1462
1545
  files;
1463
1546
  account;
1547
+ talks;
1464
1548
  constructor(config) {
1465
1549
  this.config = config;
1466
1550
  this.auth = new AuthManager(
@@ -1472,13 +1556,17 @@ var KommoClient = class {
1472
1556
  const baseURL = `https://${config.domain}.kommo.com`;
1473
1557
  this.httpClient = import_axios2.default.create({
1474
1558
  baseURL,
1559
+ timeout: config.timeout ?? 3e4,
1475
1560
  headers: {
1476
1561
  "Content-Type": "application/json"
1477
1562
  },
1478
1563
  paramsSerializer: (params) => {
1479
- return import_qs18.default.stringify(params, { arrayFormat: "brackets" });
1564
+ return import_qs19.default.stringify(params, { arrayFormat: "brackets" });
1480
1565
  }
1481
1566
  });
1567
+ if (config.retry !== false) {
1568
+ attachRetryInterceptor(this.httpClient, config.retry || {});
1569
+ }
1482
1570
  this.httpClient.interceptors.response.use(
1483
1571
  (response) => response,
1484
1572
  (error) => {
@@ -1520,6 +1608,7 @@ var KommoClient = class {
1520
1608
  this.webhooks = new WebhooksResource(this.httpClient);
1521
1609
  this.files = new FilesResource(this.httpClient);
1522
1610
  this.account = new AccountResource(this.httpClient);
1611
+ this.talks = new TalksResource(this.httpClient);
1523
1612
  }
1524
1613
  setAccessToken(token) {
1525
1614
  this.config.accessToken = token;
@@ -1648,6 +1737,7 @@ var KNOWN_WEBHOOK_EVENTS = [
1648
1737
  SalesbotsResource,
1649
1738
  SourcesResource,
1650
1739
  TagsResource,
1740
+ TalksResource,
1651
1741
  TasksResource,
1652
1742
  UnsortedResource,
1653
1743
  UsersResource,