{"version":3,"file":"ContactsApi.mjs","names":[],"sources":["../../../src/apis/contacts/ContactsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport { BaseCrudApi } from '../../core/BaseCrudApi'\nimport type { ListQuery, Paginated } from '../../core/types'\nimport type {\n  Contact,\n  CountContactsQuery,\n  CountMediaResult,\n  CreateContactPayload,\n  ExistsContactsParams,\n  ExportTemplatePayload,\n  TransferTicketPayload,\n  UpdateContactPayload,\n} from './types'\n\nexport class ContactsApi extends BaseCrudApi<Contact, CreateContactPayload, UpdateContactPayload> {\n  constructor(client: ApiClient) {\n    super(client, '/contacts')\n  }\n\n  /**\n   * Downloads a CSV template for importing contacts, with columns based on the service type.\n   * @permissions contacts.view AND contacts.export\n   */\n  exportTemplate(body: ExportTemplatePayload, headers?: Record<string, string>): Promise<unknown> {\n    return this.client.post<unknown, ExportTemplatePayload>(\n      `${this.basePath}/export-template`,\n      body,\n      headers,\n    )\n  }\n\n  /**\n   * Returns the total number of contacts matching the given query filters.\n   * @permissions contacts.view\n   */\n  count(query?: CountContactsQuery, headers?: Record<string, string>): Promise<{ count: number }> {\n    const queryString = query ? `?${qs.stringify(query)}` : ''\n    return this.client.get<{ count: number }>(`${this.basePath}/count${queryString}`, headers)\n  }\n\n  /**\n   * Returns the total number of contacts matching the given filters (POST variant for complex queries).\n   * @permissions contacts.view\n   */\n  countPost(\n    body: CountContactsQuery,\n    headers?: Record<string, string>,\n  ): Promise<{ count: number }> {\n    return this.client.post<{ count: number }, CountContactsQuery>(\n      `${this.basePath}/count`,\n      body,\n      headers,\n    )\n  }\n\n  /**\n   * Returns a paginated list of contacts available for message forwarding.\n   * @permissions contacts.view\n   */\n  forward(\n    query?: ListQuery<Contact>,\n    headers?: Record<string, string>,\n  ): Promise<Paginated<Contact>> {\n    const queryString = query ? `?${qs.stringify(query)}` : ''\n    return this.client.get<Paginated<Contact>>(`${this.basePath}/forward${queryString}`, headers)\n  }\n\n  /**\n   * Checks whether contacts exist for the given phone numbers on a specific service. Returns a map of number to boolean.\n   * @permissions contacts.view\n   */\n  exists(\n    params: ExistsContactsParams,\n    headers?: Record<string, string>,\n  ): Promise<Record<string, boolean>> {\n    const queryString = `?${qs.stringify(params)}`\n    return this.client.get<Record<string, boolean>>(\n      `${this.basePath}/exists${queryString}`,\n      headers,\n    )\n  }\n\n  /**\n   * Returns media counts grouped by type (e.g. image, video, document, link) for a contact.\n   * @permissions contacts.view\n   */\n  countMedia(contactId: string, headers?: Record<string, string>): Promise<CountMediaResult> {\n    return this.client.get<CountMediaResult>(`${this.basePath}/${contactId}/media/count`, headers)\n  }\n\n  /**\n   * Returns a paginated list of contacts using POST body for advanced filtering.\n   * @permissions contacts.view\n   */\n  list(\n    body: Record<string, unknown>,\n    headers?: Record<string, string>,\n  ): Promise<Paginated<Contact>> {\n    return this.client.post<Paginated<Contact>, Record<string, unknown>>(\n      `${this.basePath}/list`,\n      body,\n      headers,\n    )\n  }\n\n  /**\n   * Opens (or transfers) the contact's ticket to a department, and optionally a user.\n   * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.\n   * @permissions tickets.transfer.all OR tickets.transfer.me\n   */\n  transferTicket(\n    contactId: string,\n    payload: TransferTicketPayload,\n    headers?: Record<string, string>,\n  ): Promise<unknown> {\n    return this.client.post<unknown, TransferTicketPayload>(\n      `${this.basePath}/${contactId}/ticket/transfer`,\n      payload,\n      headers,\n    )\n  }\n}\n"],"mappings":";;;;AAeA,IAAa,cAAb,cAAiC,YAAiE;CAChG,YAAY,QAAmB;AAC7B,QAAM,QAAQ,YAAY;;;;;;CAO5B,eAAe,MAA6B,SAAoD;AAC9F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,mBACjB,MACA,QACD;;;;;;CAOH,MAAM,OAA4B,SAA8D;EAC9F,MAAM,cAAc,QAAQ,IAAI,GAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IAAuB,GAAG,KAAK,SAAS,QAAQ,eAAe,QAAQ;;;;;;CAO5F,UACE,MACA,SAC4B;AAC5B,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,SACjB,MACA,QACD;;;;;;CAOH,QACE,OACA,SAC6B;EAC7B,MAAM,cAAc,QAAQ,IAAI,GAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,UAAU,eAAe,QAAQ;;;;;;CAO/F,OACE,QACA,SACkC;EAClC,MAAM,cAAc,IAAI,GAAG,UAAU,OAAO;AAC5C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,SAAS,eAC1B,QACD;;;;;;CAOH,WAAW,WAAmB,SAA6D;AACzF,SAAO,KAAK,OAAO,IAAsB,GAAG,KAAK,SAAS,GAAG,UAAU,eAAe,QAAQ;;;;;;CAOhG,KACE,MACA,SAC6B;AAC7B,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,QACjB,MACA,QACD;;;;;;;CAQH,eACE,WACA,SACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,UAAU,mBAC9B,SACA,QACD"}