@ikatec/digisac-api-sdk 1.3.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/_chunks/{chunk-DortyG5C.cjs → chunk-Dk0Otj32.cjs} +19 -0
  2. package/dist/_chunks/scopes-CppNX42t.mjs +29 -0
  3. package/dist/_chunks/scopes-CppNX42t.mjs.map +1 -0
  4. package/dist/apis/authHistory/AuthHistoryApi.cjs +1 -1
  5. package/dist/apis/campaigns/CampaignsApi.cjs +56 -0
  6. package/dist/apis/campaigns/CampaignsApi.cjs.map +1 -1
  7. package/dist/apis/campaigns/CampaignsApi.d.ts +25 -3
  8. package/dist/apis/campaigns/CampaignsApi.d.ts.map +1 -1
  9. package/dist/apis/campaigns/CampaignsApi.mjs +56 -0
  10. package/dist/apis/campaigns/CampaignsApi.mjs.map +1 -1
  11. package/dist/apis/campaigns/index.cjs +8 -1
  12. package/dist/apis/campaigns/index.d.ts +1 -0
  13. package/dist/apis/campaigns/index.d.ts.map +1 -1
  14. package/dist/apis/campaigns/index.mjs +2 -1
  15. package/dist/apis/campaigns/scopes/getManyViewScope.cjs +51 -0
  16. package/dist/apis/campaigns/scopes/getManyViewScope.cjs.map +1 -0
  17. package/dist/apis/campaigns/scopes/getManyViewScope.d.ts +21 -0
  18. package/dist/apis/campaigns/scopes/getManyViewScope.d.ts.map +1 -0
  19. package/dist/apis/campaigns/scopes/getManyViewScope.mjs +49 -0
  20. package/dist/apis/campaigns/scopes/getManyViewScope.mjs.map +1 -0
  21. package/dist/apis/campaigns/scopes/getOneViewScope.cjs +27 -0
  22. package/dist/apis/campaigns/scopes/getOneViewScope.cjs.map +1 -0
  23. package/dist/apis/campaigns/scopes/getOneViewScope.d.ts +5 -0
  24. package/dist/apis/campaigns/scopes/getOneViewScope.d.ts.map +1 -0
  25. package/dist/apis/campaigns/scopes/getOneViewScope.mjs +25 -0
  26. package/dist/apis/campaigns/scopes/getOneViewScope.mjs.map +1 -0
  27. package/dist/apis/campaigns/scopes/index.cjs +21 -0
  28. package/dist/apis/campaigns/scopes/index.cjs.map +1 -0
  29. package/dist/apis/campaigns/scopes/index.d.ts +3 -0
  30. package/dist/apis/campaigns/scopes/index.d.ts.map +1 -0
  31. package/dist/apis/campaigns/scopes/index.mjs +4 -0
  32. package/dist/apis/campaigns/types.d.ts +69 -16
  33. package/dist/apis/campaigns/types.d.ts.map +1 -1
  34. package/dist/apis/contacts/ContactsApi.cjs +1 -1
  35. package/dist/apis/files/types.d.ts +1 -0
  36. package/dist/apis/files/types.d.ts.map +1 -1
  37. package/dist/apis/index.cjs +174 -0
  38. package/dist/apis/index.d.ts +56 -0
  39. package/dist/apis/index.d.ts.map +1 -0
  40. package/dist/apis/index.mjs +113 -0
  41. package/dist/apis/messages/MessagesApi.cjs +1 -1
  42. package/dist/apis/messages/types.d.ts +2 -1
  43. package/dist/apis/messages/types.d.ts.map +1 -1
  44. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.cjs +1 -1
  45. package/dist/apis/stickerUsers/StickerUsersApi.cjs +1 -1
  46. package/dist/apis/terms/TermsApi.cjs +1 -1
  47. package/dist/core/BaseCrudApi.cjs +9 -3
  48. package/dist/core/BaseCrudApi.cjs.map +1 -1
  49. package/dist/core/BaseCrudApi.d.ts +3 -3
  50. package/dist/core/BaseCrudApi.d.ts.map +1 -1
  51. package/dist/core/BaseCrudApi.mjs +8 -2
  52. package/dist/core/BaseCrudApi.mjs.map +1 -1
  53. package/dist/core/index.d.ts +1 -1
  54. package/dist/core/index.d.ts.map +1 -1
  55. package/dist/core/types.d.ts +3 -1
  56. package/dist/core/types.d.ts.map +1 -1
  57. package/dist/index.d.ts +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/package.json +7 -1
  60. package/src/apis/campaigns/CampaignsApi.ts +80 -3
  61. package/src/apis/campaigns/index.ts +1 -0
  62. package/src/apis/campaigns/scopes/getManyViewScope.ts +79 -0
  63. package/src/apis/campaigns/scopes/getOneViewScope.ts +21 -0
  64. package/src/apis/campaigns/scopes/index.ts +2 -0
  65. package/src/apis/campaigns/types.ts +73 -16
  66. package/src/apis/files/types.ts +1 -0
  67. package/src/apis/index.ts +55 -0
  68. package/src/apis/messages/types.ts +2 -1
  69. package/src/core/BaseCrudApi.test.ts +1 -1
  70. package/src/core/BaseCrudApi.ts +14 -3
  71. package/src/core/index.ts +1 -1
  72. package/src/core/types.ts +8 -1
  73. package/src/index.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCrudApi.cjs","names":[],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from './ApiClient'\nimport type { CrudApi, ListQuery, Paginated } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\nexport class BaseCrudApi<\n TResponse,\n TCreate,\n TUpdate = TCreate,\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n> implements CrudApi<TResponse, TCreate, TUpdate, TQuery> {\n protected readonly client: ApiClient\n protected readonly basePath: string\n\n constructor(client: ApiClient, basePath: string) {\n this.client = client\n this.basePath = basePath.replace(/\\/$/, '')\n }\n\n getMany(\n query: TQuery & { paginate: false },\n headers?: Record<string, string>,\n ): Promise<TResponse[]>\n getMany(\n query?: TQuery & { paginate?: true },\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse>>\n getMany(\n query?: TQuery,\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse> | TResponse[]> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<Paginated<TResponse> | TResponse[]>(\n `${this.basePath}${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns a single resource by ID.\n * @permissions $resourceName.view\n */\n getById(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.get<TResponse>(`${this.basePath}/${id}`, headers)\n }\n\n /**\n * Creates a new resource.\n * @permissions $resourceName.create\n */\n create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.post<TResponse, TCreate>(this.basePath, body, headers)\n }\n\n /**\n * Updates an existing resource by ID.\n * @permissions $resourceName.update\n */\n updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a resource by ID.\n * @permissions $resourceName.delete\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.delete<TResponse>(`${this.basePath}/${id}`, headers)\n }\n}\n"],"mappings":";;;;;;AAgBA,IAAa,cAAb,MAK0D;CACxD,AAAmB;CACnB,AAAmB;CAEnB,YAAY,QAAmB,UAAkB;AAC/C,OAAK,SAAS;AACd,OAAK,WAAW,SAAS,QAAQ,OAAO,GAAG;;CAW7C,QACE,OACA,SAC6C;EAC7C,MAAM,cAAc,QAAQ,IAAI,WAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,WAAW,eACnB,QACD;;;;;;CAOH,QAAQ,IAAY,SAAsD;AACxE,SAAO,KAAK,OAAO,IAAe,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ;;;;;;CAOtE,OAAO,MAAe,SAAsD;AAC1E,SAAO,KAAK,OAAO,KAAyB,KAAK,UAAU,MAAM,QAAQ;;;;;;CAO3E,WAAW,IAAY,MAAe,SAAsD;AAC1F,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;CAOrF,WAAW,IAAY,SAAsD;AAC3E,SAAO,KAAK,OAAO,OAAkB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ"}
1
+ {"version":3,"file":"BaseCrudApi.cjs","names":[],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from './ApiClient'\nimport type { CrudApi, GetByIdQuery, ListQuery, Paginated } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n GetByIdQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\nexport class BaseCrudApi<\n TResponse,\n TCreate,\n TUpdate = TCreate,\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n> implements CrudApi<TResponse, TCreate, TUpdate, TQuery> {\n protected readonly client: ApiClient\n protected readonly basePath: string\n\n constructor(client: ApiClient, basePath: string) {\n this.client = client\n this.basePath = basePath.replace(/\\/$/, '')\n this.getMany = this.getMany.bind(this)\n this.getById = this.getById.bind(this)\n this.create = this.create.bind(this)\n this.updateById = this.updateById.bind(this)\n this.deleteById = this.deleteById.bind(this)\n }\n\n getMany(\n query: TQuery & { paginate: false },\n headers?: Record<string, string>,\n ): Promise<TResponse[]>\n getMany(\n query?: TQuery & { paginate?: true },\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse>>\n getMany(\n query?: TQuery,\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse> | TResponse[]> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<Paginated<TResponse> | TResponse[]>(\n `${this.basePath}${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns a single resource by ID.\n * @permissions $resourceName.view\n */\n getById(\n id: string,\n query?: GetByIdQuery<TResponse>,\n headers?: Record<string, string>,\n ): Promise<TResponse> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<TResponse>(`${this.basePath}/${id}${queryString}`, headers)\n }\n\n /**\n * Creates a new resource.\n * @permissions $resourceName.create\n */\n create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.post<TResponse, TCreate>(this.basePath, body, headers)\n }\n\n /**\n * Updates an existing resource by ID.\n * @permissions $resourceName.update\n */\n updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a resource by ID.\n * @permissions $resourceName.delete\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.delete<TResponse>(`${this.basePath}/${id}`, headers)\n }\n}\n"],"mappings":";;;;;;AAiBA,IAAa,cAAb,MAK0D;CACxD,AAAmB;CACnB,AAAmB;CAEnB,YAAY,QAAmB,UAAkB;AAC/C,OAAK,SAAS;AACd,OAAK,WAAW,SAAS,QAAQ,OAAO,GAAG;AAC3C,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,SAAS,KAAK,OAAO,KAAK,KAAK;AACpC,OAAK,aAAa,KAAK,WAAW,KAAK,KAAK;AAC5C,OAAK,aAAa,KAAK,WAAW,KAAK,KAAK;;CAW9C,QACE,OACA,SAC6C;EAC7C,MAAM,cAAc,QAAQ,IAAI,WAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,WAAW,eACnB,QACD;;;;;;CAOH,QACE,IACA,OACA,SACoB;EACpB,MAAM,cAAc,QAAQ,IAAI,WAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IAAe,GAAG,KAAK,SAAS,GAAG,KAAK,eAAe,QAAQ;;;;;;CAOpF,OAAO,MAAe,SAAsD;AAC1E,SAAO,KAAK,OAAO,KAAyB,KAAK,UAAU,MAAM,QAAQ;;;;;;CAO3E,WAAW,IAAY,MAAe,SAAsD;AAC1F,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;CAOrF,WAAW,IAAY,SAAsD;AAC3E,SAAO,KAAK,OAAO,OAAkB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ"}
@@ -1,6 +1,6 @@
1
1
  import type { ApiClient } from './ApiClient';
2
- import type { CrudApi, ListQuery, Paginated } from './types';
3
- export type { WhereClause, IncludeItem, ListQuery, Paginated, HasGetMany, HasGetById, HasCreate, HasUpdateById, HasDeleteById, CrudApi, } from './types';
2
+ import type { CrudApi, GetByIdQuery, ListQuery, Paginated } from './types';
3
+ export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated, HasGetMany, HasGetById, HasCreate, HasUpdateById, HasDeleteById, CrudApi, } from './types';
4
4
  export declare class BaseCrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery extends ListQuery<TResponse> = ListQuery<TResponse>> implements CrudApi<TResponse, TCreate, TUpdate, TQuery> {
5
5
  protected readonly client: ApiClient;
6
6
  protected readonly basePath: string;
@@ -15,7 +15,7 @@ export declare class BaseCrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery e
15
15
  * Returns a single resource by ID.
16
16
  * @permissions $resourceName.view
17
17
  */
18
- getById(id: string, headers?: Record<string, string>): Promise<TResponse>;
18
+ getById(id: string, query?: GetByIdQuery<TResponse>, headers?: Record<string, string>): Promise<TResponse>;
19
19
  /**
20
20
  * Creates a new resource.
21
21
  * @permissions $resourceName.create
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCrudApi.d.ts","sourceRoot":"","sources":["../../src/core/BaseCrudApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC5D,YAAY,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAA;AAEhB,qBAAa,WAAW,CACtB,SAAS,EACT,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,MAAM,SAAS,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAC1D,YAAW,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;gBAEvB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAK/C,OAAO,CACL,KAAK,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,SAAS,EAAE,CAAC;IACvB,OAAO,CACL,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,EACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAYhC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAIzE;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3E;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3F;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAG7E"}
1
+ {"version":3,"file":"BaseCrudApi.d.ts","sourceRoot":"","sources":["../../src/core/BaseCrudApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC1E,YAAY,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAA;AAEhB,qBAAa,WAAW,CACtB,SAAS,EACT,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,MAAM,SAAS,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAC1D,YAAW,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;gBAEvB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAU/C,OAAO,CACL,KAAK,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,SAAS,EAAE,CAAC;IACvB,OAAO,CACL,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,EACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAYhC;;;OAGG;IACH,OAAO,CACL,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,SAAS,CAAC;IAKrB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3E;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3F;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAG7E"}
@@ -7,6 +7,11 @@ var BaseCrudApi = class {
7
7
  constructor(client, basePath) {
8
8
  this.client = client;
9
9
  this.basePath = basePath.replace(/\/$/, "");
10
+ this.getMany = this.getMany.bind(this);
11
+ this.getById = this.getById.bind(this);
12
+ this.create = this.create.bind(this);
13
+ this.updateById = this.updateById.bind(this);
14
+ this.deleteById = this.deleteById.bind(this);
10
15
  }
11
16
  getMany(query, headers) {
12
17
  const queryString = query ? `?${qs.stringify(query)}` : "";
@@ -16,8 +21,9 @@ var BaseCrudApi = class {
16
21
  * Returns a single resource by ID.
17
22
  * @permissions $resourceName.view
18
23
  */
19
- getById(id, headers) {
20
- return this.client.get(`${this.basePath}/${id}`, headers);
24
+ getById(id, query, headers) {
25
+ const queryString = query ? `?${qs.stringify(query)}` : "";
26
+ return this.client.get(`${this.basePath}/${id}${queryString}`, headers);
21
27
  }
22
28
  /**
23
29
  * Creates a new resource.
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCrudApi.mjs","names":[],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from './ApiClient'\nimport type { CrudApi, ListQuery, Paginated } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\nexport class BaseCrudApi<\n TResponse,\n TCreate,\n TUpdate = TCreate,\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n> implements CrudApi<TResponse, TCreate, TUpdate, TQuery> {\n protected readonly client: ApiClient\n protected readonly basePath: string\n\n constructor(client: ApiClient, basePath: string) {\n this.client = client\n this.basePath = basePath.replace(/\\/$/, '')\n }\n\n getMany(\n query: TQuery & { paginate: false },\n headers?: Record<string, string>,\n ): Promise<TResponse[]>\n getMany(\n query?: TQuery & { paginate?: true },\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse>>\n getMany(\n query?: TQuery,\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse> | TResponse[]> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<Paginated<TResponse> | TResponse[]>(\n `${this.basePath}${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns a single resource by ID.\n * @permissions $resourceName.view\n */\n getById(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.get<TResponse>(`${this.basePath}/${id}`, headers)\n }\n\n /**\n * Creates a new resource.\n * @permissions $resourceName.create\n */\n create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.post<TResponse, TCreate>(this.basePath, body, headers)\n }\n\n /**\n * Updates an existing resource by ID.\n * @permissions $resourceName.update\n */\n updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a resource by ID.\n * @permissions $resourceName.delete\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.delete<TResponse>(`${this.basePath}/${id}`, headers)\n }\n}\n"],"mappings":";;;AAgBA,IAAa,cAAb,MAK0D;CACxD,AAAmB;CACnB,AAAmB;CAEnB,YAAY,QAAmB,UAAkB;AAC/C,OAAK,SAAS;AACd,OAAK,WAAW,SAAS,QAAQ,OAAO,GAAG;;CAW7C,QACE,OACA,SAC6C;EAC7C,MAAM,cAAc,QAAQ,IAAI,GAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,WAAW,eACnB,QACD;;;;;;CAOH,QAAQ,IAAY,SAAsD;AACxE,SAAO,KAAK,OAAO,IAAe,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ;;;;;;CAOtE,OAAO,MAAe,SAAsD;AAC1E,SAAO,KAAK,OAAO,KAAyB,KAAK,UAAU,MAAM,QAAQ;;;;;;CAO3E,WAAW,IAAY,MAAe,SAAsD;AAC1F,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;CAOrF,WAAW,IAAY,SAAsD;AAC3E,SAAO,KAAK,OAAO,OAAkB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ"}
1
+ {"version":3,"file":"BaseCrudApi.mjs","names":[],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from './ApiClient'\nimport type { CrudApi, GetByIdQuery, ListQuery, Paginated } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n GetByIdQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\nexport class BaseCrudApi<\n TResponse,\n TCreate,\n TUpdate = TCreate,\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n> implements CrudApi<TResponse, TCreate, TUpdate, TQuery> {\n protected readonly client: ApiClient\n protected readonly basePath: string\n\n constructor(client: ApiClient, basePath: string) {\n this.client = client\n this.basePath = basePath.replace(/\\/$/, '')\n this.getMany = this.getMany.bind(this)\n this.getById = this.getById.bind(this)\n this.create = this.create.bind(this)\n this.updateById = this.updateById.bind(this)\n this.deleteById = this.deleteById.bind(this)\n }\n\n getMany(\n query: TQuery & { paginate: false },\n headers?: Record<string, string>,\n ): Promise<TResponse[]>\n getMany(\n query?: TQuery & { paginate?: true },\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse>>\n getMany(\n query?: TQuery,\n headers?: Record<string, string>,\n ): Promise<Paginated<TResponse> | TResponse[]> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<Paginated<TResponse> | TResponse[]>(\n `${this.basePath}${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns a single resource by ID.\n * @permissions $resourceName.view\n */\n getById(\n id: string,\n query?: GetByIdQuery<TResponse>,\n headers?: Record<string, string>,\n ): Promise<TResponse> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<TResponse>(`${this.basePath}/${id}${queryString}`, headers)\n }\n\n /**\n * Creates a new resource.\n * @permissions $resourceName.create\n */\n create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.post<TResponse, TCreate>(this.basePath, body, headers)\n }\n\n /**\n * Updates an existing resource by ID.\n * @permissions $resourceName.update\n */\n updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a resource by ID.\n * @permissions $resourceName.delete\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.delete<TResponse>(`${this.basePath}/${id}`, headers)\n }\n}\n"],"mappings":";;;AAiBA,IAAa,cAAb,MAK0D;CACxD,AAAmB;CACnB,AAAmB;CAEnB,YAAY,QAAmB,UAAkB;AAC/C,OAAK,SAAS;AACd,OAAK,WAAW,SAAS,QAAQ,OAAO,GAAG;AAC3C,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,SAAS,KAAK,OAAO,KAAK,KAAK;AACpC,OAAK,aAAa,KAAK,WAAW,KAAK,KAAK;AAC5C,OAAK,aAAa,KAAK,WAAW,KAAK,KAAK;;CAW9C,QACE,OACA,SAC6C;EAC7C,MAAM,cAAc,QAAQ,IAAI,GAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,WAAW,eACnB,QACD;;;;;;CAOH,QACE,IACA,OACA,SACoB;EACpB,MAAM,cAAc,QAAQ,IAAI,GAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IAAe,GAAG,KAAK,SAAS,GAAG,KAAK,eAAe,QAAQ;;;;;;CAOpF,OAAO,MAAe,SAAsD;AAC1E,SAAO,KAAK,OAAO,KAAyB,KAAK,UAAU,MAAM,QAAQ;;;;;;CAO3E,WAAW,IAAY,MAAe,SAAsD;AAC1F,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;CAOrF,WAAW,IAAY,SAAsD;AAC3E,SAAO,KAAK,OAAO,OAAkB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ"}
@@ -2,5 +2,5 @@ export type { ApiClient, HttpMethod } from './ApiClient';
2
2
  export { BaseApiClient, ApiError } from './BaseApiClient';
3
3
  export type { ValidationError } from './BaseApiClient';
4
4
  export { BaseCrudApi } from './BaseCrudApi';
5
- export type { WhereClause, IncludeItem, ListQuery, Paginated } from './types';
5
+ export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated } from './types';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
@@ -51,6 +51,7 @@ type TypedIncludeObject<T> = {
51
51
  [K in AssociationKeys<T>]: {
52
52
  model: K;
53
53
  as?: string;
54
+ attributes?: (keyof Unwrap<T[K]> & string)[];
54
55
  include?: IncludeItem<Unwrap<T[K]>>[];
55
56
  required?: boolean;
56
57
  where?: WhereClause<Unwrap<T[K]>>;
@@ -91,8 +92,9 @@ export interface HasGetMany<TResponse, TQuery extends ListQuery<TResponse> = Lis
91
92
  paginate?: true;
92
93
  }, headers?: Record<string, string>): Promise<Paginated<TResponse>>;
93
94
  }
95
+ export type GetByIdQuery<T = Record<string, unknown>> = Pick<ListQuery<T>, 'include' | 'attributes'>;
94
96
  export interface HasGetById<TResponse> {
95
- getById(id: string, headers?: Record<string, string>): Promise<TResponse>;
97
+ getById(id: string, query?: GetByIdQuery<TResponse>, headers?: Record<string, string>): Promise<TResponse>;
96
98
  }
97
99
  export interface HasCreate<TResponse, TCreate> {
98
100
  create(body: TCreate, headers?: Record<string, string>): Promise<TResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './core/index';
1
+ export * from './core';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikatec/digisac-api-sdk",
3
- "version": "1.3.2",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -12,6 +12,12 @@
12
12
  "import": "./dist/index.mjs",
13
13
  "require": "./dist/index.cjs"
14
14
  },
15
+ "./apis": {
16
+ "typescript": "./src/apis/index.ts",
17
+ "types": "./dist/apis/index.d.ts",
18
+ "import": "./dist/apis/index.mjs",
19
+ "require": "./dist/apis/index.cjs"
20
+ },
15
21
  "./incommingWebhooks": {
16
22
  "typescript": "./src/incommingWebhooks/index.ts",
17
23
  "types": "./dist/incommingWebhooks/index.d.ts",
@@ -1,6 +1,16 @@
1
- import type { ApiClient } from '../../core/ApiClient'
2
- import { BaseCrudApi } from '../../core/BaseCrudApi'
3
- import type { Campaign, CreateCampaignPayload, UpdateCampaignPayload } from './types'
1
+ import type { ApiClient } from '../../core'
2
+ import { BaseCrudApi } from '../../core'
3
+ import type {
4
+ AutoPauseModePayload,
5
+ Campaign,
6
+ CampaignStats,
7
+ CreateCampaignPayload,
8
+ ExportCampaignResultPayload,
9
+ ExportTemplateCsvPayload,
10
+ HsmLimit,
11
+ SetIntervalPayload,
12
+ UpdateCampaignPayload,
13
+ } from './types'
4
14
 
5
15
  export class CampaignsApi extends BaseCrudApi<
6
16
  Campaign,
@@ -9,5 +19,72 @@ export class CampaignsApi extends BaseCrudApi<
9
19
  > {
10
20
  constructor(client: ApiClient) {
11
21
  super(client, '/campaigns')
22
+
23
+ this.sendById = this.sendById.bind(this)
24
+ this.pauseById = this.pauseById.bind(this)
25
+ this.resumeById = this.resumeById.bind(this)
26
+ this.duplicateById = this.duplicateById.bind(this)
27
+ this.getStatsById = this.getStatsById.bind(this)
28
+ this.setIntervalById = this.setIntervalById.bind(this)
29
+ this.getContactCount = this.getContactCount.bind(this)
30
+ this.setAutoPauseMode = this.setAutoPauseMode.bind(this)
31
+ this.exportCampaignResult = this.exportCampaignResult.bind(this)
32
+ this.exportTemplateCsv = this.exportTemplateCsv.bind(this)
33
+ this.getHsmLimit = this.getHsmLimit.bind(this)
34
+ }
35
+
36
+ /** Starts sending messages for the given campaign. */
37
+ sendById(id: string): Promise<Campaign> {
38
+ return this.client.post<Campaign>(`${this.basePath}/${id}/send`)
39
+ }
40
+
41
+ /** Pauses a campaign that is currently sending. */
42
+ pauseById(id: string): Promise<Campaign> {
43
+ return this.client.post<Campaign>(`${this.basePath}/${id}/pause`)
44
+ }
45
+
46
+ /** Resumes a previously paused campaign. */
47
+ resumeById(id: string): Promise<Campaign> {
48
+ return this.client.post<Campaign>(`${this.basePath}/${id}/resume`)
49
+ }
50
+
51
+ /** Creates a copy of an existing campaign. */
52
+ duplicateById(id: string): Promise<Campaign> {
53
+ return this.client.post<Campaign>(`${this.basePath}/${id}/duplicate`)
54
+ }
55
+
56
+ /** Returns send/delivery/view statistics for a campaign. */
57
+ getStatsById(id: string): Promise<CampaignStats> {
58
+ return this.client.get<CampaignStats>(`${this.basePath}/${id}/stats`)
59
+ }
60
+
61
+ /** Updates the min/max send interval for a campaign. */
62
+ setIntervalById(id: string, data: SetIntervalPayload): Promise<Campaign> {
63
+ return this.client.post<Campaign, SetIntervalPayload>(`${this.basePath}/${id}/interval`, data)
64
+ }
65
+
66
+ /** Returns the total number of contacts targeted by a campaign. */
67
+ getContactCount(id: string): Promise<number> {
68
+ return this.client.get<number>(`${this.basePath}/${id}/contactCount`)
69
+ }
70
+
71
+ /** Configures the auto-pause behavior for campaigns. */
72
+ setAutoPauseMode(data: AutoPauseModePayload): Promise<unknown> {
73
+ return this.client.put(`${this.basePath}/autoPauseMode`, data)
74
+ }
75
+
76
+ /** Exports campaign send results as a CSV file. */
77
+ exportCampaignResult(data: ExportCampaignResultPayload): Promise<unknown> {
78
+ return this.client.post(`${this.basePath}/export/csv`, data)
79
+ }
80
+
81
+ /** Exports a CSV template for importing contacts into an HSM campaign. */
82
+ exportTemplateCsv(data: ExportTemplateCsvPayload): Promise<unknown> {
83
+ return this.client.post(`${this.basePath}/exportTemplate`, data)
84
+ }
85
+
86
+ /** Returns the HSM message usage and limit for an account. */
87
+ getHsmLimit(accountId: string): Promise<HsmLimit> {
88
+ return this.client.get<HsmLimit>(`/whatsapp-business-templates/${accountId}/hsmLimit`)
12
89
  }
13
90
  }
@@ -1,2 +1,3 @@
1
1
  export { CampaignsApi } from './CampaignsApi'
2
+ export * as scopes from './scopes'
2
3
  export type * from './types'
@@ -0,0 +1,79 @@
1
+ import type { IncludeItem, ListQuery, WhereClause } from '../../../core'
2
+ import type { Campaign, CampaignStatus } from '../types'
3
+
4
+ export type GetManyPaginatedFilters = {
5
+ title?: string
6
+ status?: CampaignStatus
7
+ serviceId?: string
8
+ createdAtFrom?: string
9
+ createdAtTo?: string
10
+ startedAtFrom?: string
11
+ startedAtTo?: string
12
+ quality?: string
13
+ page?: number
14
+ perPage?: number
15
+ sort?: string
16
+ order?: 'ASC' | 'DESC'
17
+ paginate?: boolean
18
+ }
19
+
20
+ export function getManyViewScope(
21
+ filters: GetManyPaginatedFilters = {},
22
+ ): ListQuery<Campaign> & { paginate: true } {
23
+ const where: WhereClause<Campaign> = {}
24
+ const $and: WhereClause<Campaign>[] = []
25
+
26
+ if (filters.title) {
27
+ where.title = { $iLike: `%${filters.title}%` }
28
+ }
29
+ if (filters.status) {
30
+ where.status = filters.status
31
+ }
32
+ if (filters.serviceId) {
33
+ where.serviceId = filters.serviceId
34
+ }
35
+ if (filters.createdAtFrom) {
36
+ $and.push({ createdAt: { $gte: filters.createdAtFrom } })
37
+ }
38
+ if (filters.createdAtTo) {
39
+ $and.push({ createdAt: { $lte: filters.createdAtTo } })
40
+ }
41
+ if (filters.startedAtFrom) {
42
+ $and.push({ startedAt: { $gte: filters.startedAtFrom } })
43
+ }
44
+ if (filters.startedAtTo) {
45
+ $and.push({ startedAt: { $lte: filters.startedAtTo } })
46
+ }
47
+
48
+ if ($and.length > 0) {
49
+ where.$and = $and
50
+ }
51
+
52
+ const include: IncludeItem<Campaign>[] = [
53
+ 'service',
54
+ 'tags',
55
+ {
56
+ model: 'messages',
57
+ ...(filters.quality && { required: true }),
58
+ include: [
59
+ 'file',
60
+ {
61
+ model: 'hsm',
62
+ ...(filters.quality && { where: { quality: filters.quality }, required: true }),
63
+ },
64
+ ],
65
+ },
66
+ { model: 'createdBy', attributes: ['id', 'name'] },
67
+ { model: 'sentBy', attributes: ['id', 'name'] },
68
+ ]
69
+
70
+ return {
71
+ where,
72
+ order: [[(filters.sort ?? 'createdAt') as keyof Campaign & string, filters.order ?? 'DESC']],
73
+ page: filters.page ?? 1,
74
+ perPage: filters.perPage ?? 15,
75
+ paginate: true as const,
76
+ ...(filters.quality && { subQuery: false }),
77
+ include,
78
+ }
79
+ }
@@ -0,0 +1,21 @@
1
+ import type { GetByIdQuery } from '../../../core'
2
+ import type { Campaign } from '../types'
3
+
4
+ /** Query scope that includes all associations for a detailed campaign view. */
5
+ export function getOneViewScope(): GetByIdQuery<Campaign> {
6
+ return {
7
+ include: [
8
+ 'service',
9
+ 'tags',
10
+ {
11
+ model: 'messages',
12
+ include: ['file', 'hsm', 'hsmFile'],
13
+ },
14
+ 'importFile',
15
+ 'defaultDepartment',
16
+ 'defaultUser',
17
+ 'createdBy',
18
+ 'sentBy',
19
+ ],
20
+ }
21
+ }
@@ -0,0 +1,2 @@
1
+ export { getOneViewScope } from './getOneViewScope'
2
+ export { getManyViewScope, type GetManyPaginatedFilters } from './getManyViewScope'
@@ -1,7 +1,9 @@
1
- import type { Department } from '../departments/types'
2
- import type { Service } from '../services/types'
3
- import type { Tag } from '../tags/types'
4
- import type { User } from '../users/types'
1
+ import type { Department } from '../departments'
2
+ import type { File } from '../files'
3
+ import type { Message } from '../messages'
4
+ import type { Service } from '../services'
5
+ import type { Tag } from '../tags'
6
+ import type { User } from '../users'
5
7
 
6
8
  export type CampaignStatus =
7
9
  | 'ready'
@@ -47,6 +49,9 @@ export type Campaign = {
47
49
  totalContacts: number | null
48
50
  totalContactsImported: number | null
49
51
  totalValidContacts: number | null
52
+ sentContacts: number | null
53
+ viewedContacts: number | null
54
+ contactCount: number | null
50
55
  mustOpenTicket: boolean
51
56
  marketingIntegration: boolean
52
57
  accountId: string
@@ -65,6 +70,8 @@ export type Campaign = {
65
70
  createdBy?: User | null
66
71
  sentBy?: User | null
67
72
  tags?: Tag[]
73
+ messages?: Message[]
74
+ importFile?: File | null
68
75
  }
69
76
 
70
77
  export type CampaignRelationships =
@@ -74,24 +81,74 @@ export type CampaignRelationships =
74
81
  | 'createdBy'
75
82
  | 'sentBy'
76
83
  | 'tags'
84
+ | 'messages'
85
+ | 'importFile'
77
86
 
78
87
  export type CreateCampaignPayload = {
79
88
  title: string
80
89
  serviceId: string
81
- config: CampaignConfig
82
- defaultDepartmentId?: string
83
- defaultUserId?: string
84
- sendsAt?: string
90
+ config?: { minInterval: number | string; maxInterval: number | string }
91
+ tagIds?: string[]
92
+ messages?: { text?: string; fileId?: string }[]
85
93
  isScheduled?: boolean
94
+ sendsAt?: string | null
86
95
  mustOpenTicket?: boolean
87
- }
88
-
89
- export type UpdateCampaignPayload = {
90
- title?: string
91
- config?: CampaignConfig
92
96
  defaultDepartmentId?: string | null
93
97
  defaultUserId?: string | null
94
- sendsAt?: string | null
95
- isScheduled?: boolean
96
- mustOpenTicket?: boolean
98
+ hsm?: unknown
99
+ parameters?: unknown
100
+ fileTemplate?: unknown
101
+ contacts?: unknown[]
102
+ useTags?: boolean
103
+ marketingIntegration?: boolean
104
+ fileId?: string
105
+ nameField?: string
106
+ numberField?: string
107
+ }
108
+
109
+ export type UpdateCampaignPayload = Partial<CreateCampaignPayload>
110
+
111
+ export type CampaignStatsInfo = {
112
+ totalValidContacts: number
113
+ totalContacts: number
114
+ totalContactsImported: number
115
+ firedSuccessCount: number
116
+ firedFailedCount: number
117
+ totalMessagesCount: number
118
+ totalFiredCount: number
119
+ firedBlockedByMessageRuleCount: number
120
+ }
121
+
122
+ export type CampaignStatsMessages = {
123
+ error: number
124
+ received: number
125
+ viewed: number
126
+ answered: number
127
+ }
128
+
129
+ export type CampaignStats = {
130
+ campaignInfo: CampaignStatsInfo
131
+ messageInfo: CampaignStatsMessages
132
+ }
133
+
134
+ export type SetIntervalPayload = {
135
+ minInterval: string
136
+ maxInterval: string
137
+ }
138
+
139
+ export type ExportCampaignResultPayload = {
140
+ campaignId: string
141
+ }
142
+
143
+ export type ExportTemplateCsvPayload = {
144
+ hsmId: string
145
+ }
146
+
147
+ export type AutoPauseModePayload = {
148
+ mode: string
149
+ }
150
+
151
+ export type HsmLimit = {
152
+ hsmLimit: number
153
+ hsmUsedLimit: number
97
154
  }
@@ -23,6 +23,7 @@ export type FileStorage =
23
23
 
24
24
  export type File = {
25
25
  id: string
26
+ url: string
26
27
  name: string | null
27
28
  checksum: string | null
28
29
  mimetype: string
@@ -0,0 +1,55 @@
1
+ export * from './absence'
2
+ export * from './acceptanceTerms'
3
+ export * from './accounts'
4
+ export * from './activityLog'
5
+ export * from './answers'
6
+ export * from './authHistory'
7
+ export * from './botVersions'
8
+ export * from './bots'
9
+ export * from './campaigns'
10
+ export * from './cards'
11
+ export * from './categories'
12
+ export * from './clientFeedback'
13
+ export * from './contactBlockLists'
14
+ export * from './contactBlockListsControls'
15
+ export * from './contacts'
16
+ export * from './creditMovements'
17
+ export * from './customFields'
18
+ export * from './departments'
19
+ export * from './distribution'
20
+ export * from './files'
21
+ export * from './holiday'
22
+ export * from './integrations'
23
+ export * from './interactiveMessages'
24
+ export * from './kanbanBoards'
25
+ export * from './kanbanCards'
26
+ export * from './kanbanColumns'
27
+ export * from './knowledgeBase'
28
+ export * from './knowledgeBaseItem'
29
+ export * from './me'
30
+ export * from './messages'
31
+ export * from './notifications'
32
+ export * from './organizations'
33
+ export * from './people'
34
+ export * from './permissions'
35
+ export * from './personalAccessTokens'
36
+ export * from './pipeline'
37
+ export * from './planAiHistory'
38
+ export * from './questions'
39
+ export * from './quickReplies'
40
+ export * from './roles'
41
+ export * from './schedule'
42
+ export * from './serviceAccessManagement'
43
+ export * from './serviceEvents'
44
+ export * from './services'
45
+ export * from './stickerUsers'
46
+ export * from './stickers'
47
+ export * from './tags'
48
+ export * from './terms'
49
+ export * from './ticketTopics'
50
+ export * from './tickets'
51
+ export * from './timetable'
52
+ export * from './transcripts'
53
+ export * from './users'
54
+ export * from './webhooks'
55
+ export * from './whatsappBusinessTemplates'
@@ -3,6 +3,7 @@ import type { Department } from '../departments/types'
3
3
  import type { File } from '../files/types'
4
4
  import type { Ticket } from '../tickets/types'
5
5
  import type { User } from '../users/types'
6
+ import type { WhatsappBusinessTemplate } from '../whatsappBusinessTemplates/types'
6
7
 
7
8
  export type MessageType =
8
9
  | 'chat'
@@ -127,7 +128,7 @@ export type Message = {
127
128
  quotedMessage?: Message | null
128
129
  ticketUser?: User | null
129
130
  ticketDepartment?: Department | null
130
- hsm?: unknown
131
+ hsm?: WhatsappBusinessTemplate | null
131
132
  hsmFile?: File | null
132
133
  reactions?: Message[]
133
134
  reactionParentMessage?: Message | null
@@ -147,7 +147,7 @@ describe('BaseCrudApi', () => {
147
147
  vi.mocked(client.get).mockResolvedValue({ id: '1', name: 'x' })
148
148
  const headers = { 'X-Tenant': '123' }
149
149
 
150
- await api.getById('1', headers)
150
+ await api.getById('1', undefined, headers)
151
151
  expect(client.get).toHaveBeenCalledWith('/items/1', headers)
152
152
  })
153
153
  })
@@ -1,10 +1,11 @@
1
1
  import qs from 'qs'
2
2
  import type { ApiClient } from './ApiClient'
3
- import type { CrudApi, ListQuery, Paginated } from './types'
3
+ import type { CrudApi, GetByIdQuery, ListQuery, Paginated } from './types'
4
4
  export type {
5
5
  WhereClause,
6
6
  IncludeItem,
7
7
  ListQuery,
8
+ GetByIdQuery,
8
9
  Paginated,
9
10
  HasGetMany,
10
11
  HasGetById,
@@ -26,6 +27,11 @@ export class BaseCrudApi<
26
27
  constructor(client: ApiClient, basePath: string) {
27
28
  this.client = client
28
29
  this.basePath = basePath.replace(/\/$/, '')
30
+ this.getMany = this.getMany.bind(this)
31
+ this.getById = this.getById.bind(this)
32
+ this.create = this.create.bind(this)
33
+ this.updateById = this.updateById.bind(this)
34
+ this.deleteById = this.deleteById.bind(this)
29
35
  }
30
36
 
31
37
  getMany(
@@ -51,8 +57,13 @@ export class BaseCrudApi<
51
57
  * Returns a single resource by ID.
52
58
  * @permissions $resourceName.view
53
59
  */
54
- getById(id: string, headers?: Record<string, string>): Promise<TResponse> {
55
- return this.client.get<TResponse>(`${this.basePath}/${id}`, headers)
60
+ getById(
61
+ id: string,
62
+ query?: GetByIdQuery<TResponse>,
63
+ headers?: Record<string, string>,
64
+ ): Promise<TResponse> {
65
+ const queryString = query ? `?${qs.stringify(query)}` : ''
66
+ return this.client.get<TResponse>(`${this.basePath}/${id}${queryString}`, headers)
56
67
  }
57
68
 
58
69
  /**
package/src/core/index.ts CHANGED
@@ -2,4 +2,4 @@ export type { ApiClient, HttpMethod } from './ApiClient'
2
2
  export { BaseApiClient, ApiError } from './BaseApiClient'
3
3
  export type { ValidationError } from './BaseApiClient'
4
4
  export { BaseCrudApi } from './BaseCrudApi'
5
- export type { WhereClause, IncludeItem, ListQuery, Paginated } from './types'
5
+ export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated } from './types'