@ikatec/digisac-api-sdk 2.1.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apis/contactBlockLists/types.d.ts +2 -1
- package/dist/apis/contactBlockLists/types.d.ts.map +1 -1
- package/dist/apis/contacts/ContactsApi.cjs +8 -0
- package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
- package/dist/apis/contacts/ContactsApi.d.ts +7 -1
- package/dist/apis/contacts/ContactsApi.d.ts.map +1 -1
- package/dist/apis/contacts/ContactsApi.mjs +8 -0
- package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
- package/dist/apis/contacts/types.d.ts +16 -0
- package/dist/apis/contacts/types.d.ts.map +1 -1
- package/dist/apis/departments/DepartmentsApi.cjs +2 -2
- package/dist/apis/departments/DepartmentsApi.cjs.map +1 -1
- package/dist/apis/departments/DepartmentsApi.d.ts +2 -2
- package/dist/apis/departments/DepartmentsApi.d.ts.map +1 -1
- package/dist/apis/departments/DepartmentsApi.mjs +2 -2
- package/dist/apis/departments/DepartmentsApi.mjs.map +1 -1
- package/dist/apis/departments/types.d.ts +1 -0
- package/dist/apis/departments/types.d.ts.map +1 -1
- package/dist/apis/kanbanBoards/types.d.ts +2 -0
- package/dist/apis/kanbanBoards/types.d.ts.map +1 -1
- package/dist/apis/services/ServicesApi.cjs +2 -2
- package/dist/apis/services/ServicesApi.cjs.map +1 -1
- package/dist/apis/services/ServicesApi.d.ts +2 -2
- package/dist/apis/services/ServicesApi.d.ts.map +1 -1
- package/dist/apis/services/ServicesApi.mjs +2 -2
- package/dist/apis/services/ServicesApi.mjs.map +1 -1
- package/dist/apis/services/types.d.ts +1 -0
- package/dist/apis/services/types.d.ts.map +1 -1
- package/dist/apis/tags/types.d.ts +2 -0
- package/dist/apis/tags/types.d.ts.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.cjs +17 -0
- package/dist/apis/ticketTopics/TicketTopicsApi.cjs.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.d.ts +11 -0
- package/dist/apis/ticketTopics/TicketTopicsApi.d.ts.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.mjs +17 -0
- package/dist/apis/ticketTopics/TicketTopicsApi.mjs.map +1 -1
- package/dist/apis/tickets/TicketsApi.cjs +11 -0
- package/dist/apis/tickets/TicketsApi.cjs.map +1 -1
- package/dist/apis/tickets/TicketsApi.d.ts +10 -1
- package/dist/apis/tickets/TicketsApi.d.ts.map +1 -1
- package/dist/apis/tickets/TicketsApi.mjs +11 -0
- package/dist/apis/tickets/TicketsApi.mjs.map +1 -1
- package/dist/apis/tickets/types.d.ts +18 -0
- package/dist/apis/tickets/types.d.ts.map +1 -1
- package/dist/apis/users/UsersApi.cjs +2 -2
- package/dist/apis/users/UsersApi.cjs.map +1 -1
- package/dist/apis/users/UsersApi.d.ts +2 -2
- package/dist/apis/users/UsersApi.d.ts.map +1 -1
- package/dist/apis/users/UsersApi.mjs +2 -2
- package/dist/apis/users/UsersApi.mjs.map +1 -1
- package/dist/apis/users/types.d.ts +1 -0
- package/dist/apis/users/types.d.ts.map +1 -1
- package/dist/core/ArchivableCrudApi.cjs +39 -0
- package/dist/core/ArchivableCrudApi.cjs.map +1 -0
- package/dist/core/ArchivableCrudApi.d.ts +31 -0
- package/dist/core/ArchivableCrudApi.d.ts.map +1 -0
- package/dist/core/ArchivableCrudApi.mjs +38 -0
- package/dist/core/ArchivableCrudApi.mjs.map +1 -0
- package/dist/core/BaseCrudApi.cjs +13 -0
- package/dist/core/BaseCrudApi.cjs.map +1 -1
- package/dist/core/BaseCrudApi.d.ts +6 -0
- package/dist/core/BaseCrudApi.d.ts.map +1 -1
- package/dist/core/BaseCrudApi.mjs +13 -0
- package/dist/core/BaseCrudApi.mjs.map +1 -1
- package/dist/core/index.cjs +2 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.mjs +2 -1
- package/dist/index.cjs +2 -0
- package/dist/index.mjs +2 -1
- package/package.json +1 -1
- package/src/apis/contactBlockLists/types.ts +2 -1
- package/src/apis/contacts/ContactsApi.test.ts +24 -0
- package/src/apis/contacts/ContactsApi.ts +18 -0
- package/src/apis/contacts/types.ts +17 -0
- package/src/apis/departments/DepartmentsApi.ts +2 -2
- package/src/apis/departments/types.ts +1 -0
- package/src/apis/kanbanBoards/types.ts +2 -0
- package/src/apis/services/ServicesApi.ts +6 -2
- package/src/apis/services/types.ts +1 -0
- package/src/apis/tags/types.ts +2 -0
- package/src/apis/ticketTopics/TicketTopicsApi.test.ts +58 -0
- package/src/apis/ticketTopics/TicketTopicsApi.ts +27 -0
- package/src/apis/tickets/TicketsApi.test.ts +64 -0
- package/src/apis/tickets/TicketsApi.ts +22 -1
- package/src/apis/tickets/types.ts +12 -0
- package/src/apis/users/UsersApi.ts +2 -2
- package/src/apis/users/types.ts +1 -0
- package/src/core/ArchivableCrudApi.test.ts +84 -0
- package/src/core/ArchivableCrudApi.ts +42 -0
- package/src/core/BaseCrudApi.test.ts +31 -0
- package/src/core/BaseCrudApi.ts +14 -0
- package/src/core/index.ts +1 -0
|
@@ -60,4 +60,22 @@ export type UpdateTicketPayload = {
|
|
|
60
60
|
comments?: string | null;
|
|
61
61
|
isOpen?: boolean;
|
|
62
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Body for `PUT /tickets/close-many`.
|
|
65
|
+
*
|
|
66
|
+
* Either close an explicit list of tickets by id, or close every open ticket
|
|
67
|
+
* matching a query. For the query variant the outer `query` is an object whose
|
|
68
|
+
* `query` field is a JSON-stringified list query (e.g. `JSON.stringify({ where: {} })`);
|
|
69
|
+
* the backend always forces `where.isOpen = true`.
|
|
70
|
+
*/
|
|
71
|
+
export type CloseManyTicketsPayload = {
|
|
72
|
+
ids: string[];
|
|
73
|
+
ticketTopicIds?: string[] | string;
|
|
74
|
+
comments?: string;
|
|
75
|
+
} | {
|
|
76
|
+
allContactsSelected: true;
|
|
77
|
+
query: {
|
|
78
|
+
query: string;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
63
81
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/tickets/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iDAAiD;IACjD,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kDAAkD;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,yCAAyC;IACzC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,aAAa,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAA;AAE/E,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/tickets/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const
|
|
2
|
+
const require_core_ArchivableCrudApi = require('../../core/ArchivableCrudApi.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/apis/users/UsersApi.ts
|
|
5
|
-
var UsersApi = class extends
|
|
5
|
+
var UsersApi = class extends require_core_ArchivableCrudApi.ArchivableCrudApi {
|
|
6
6
|
constructor(client) {
|
|
7
7
|
super(client, "/users");
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersApi.cjs","names":["
|
|
1
|
+
{"version":3,"file":"UsersApi.cjs","names":["ArchivableCrudApi"],"sources":["../../../src/apis/users/UsersApi.ts"],"sourcesContent":["import type { ApiClient } from '../../core/ApiClient'\nimport { ArchivableCrudApi } from '../../core/ArchivableCrudApi'\nimport type { User, CreateUserPayload, UpdateUserPayload } from './types'\n\nexport class UsersApi extends ArchivableCrudApi<User, CreateUserPayload, UpdateUserPayload> {\n constructor(client: ApiClient) {\n super(client, '/users')\n }\n}\n"],"mappings":";;;;AAIA,IAAa,WAAb,cAA8BA,iDAA8D;CAC1F,YAAY,QAAmB;AAC7B,QAAM,QAAQ,SAAS"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ApiClient } from '../../core/ApiClient';
|
|
2
|
-
import {
|
|
2
|
+
import { ArchivableCrudApi } from '../../core/ArchivableCrudApi';
|
|
3
3
|
import type { User, CreateUserPayload, UpdateUserPayload } from './types';
|
|
4
|
-
export declare class UsersApi extends
|
|
4
|
+
export declare class UsersApi extends ArchivableCrudApi<User, CreateUserPayload, UpdateUserPayload> {
|
|
5
5
|
constructor(client: ApiClient);
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=UsersApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersApi.d.ts","sourceRoot":"","sources":["../../../src/apis/users/UsersApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"UsersApi.d.ts","sourceRoot":"","sources":["../../../src/apis/users/UsersApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEzE,qBAAa,QAAS,SAAQ,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;gBAC7E,MAAM,EAAE,SAAS;CAG9B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArchivableCrudApi } from "../../core/ArchivableCrudApi.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/apis/users/UsersApi.ts
|
|
4
|
-
var UsersApi = class extends
|
|
4
|
+
var UsersApi = class extends ArchivableCrudApi {
|
|
5
5
|
constructor(client) {
|
|
6
6
|
super(client, "/users");
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersApi.mjs","names":[],"sources":["../../../src/apis/users/UsersApi.ts"],"sourcesContent":["import type { ApiClient } from '../../core/ApiClient'\nimport {
|
|
1
|
+
{"version":3,"file":"UsersApi.mjs","names":[],"sources":["../../../src/apis/users/UsersApi.ts"],"sourcesContent":["import type { ApiClient } from '../../core/ApiClient'\nimport { ArchivableCrudApi } from '../../core/ArchivableCrudApi'\nimport type { User, CreateUserPayload, UpdateUserPayload } from './types'\n\nexport class UsersApi extends ArchivableCrudApi<User, CreateUserPayload, UpdateUserPayload> {\n constructor(client: ApiClient) {\n super(client, '/users')\n }\n}\n"],"mappings":";;;AAIA,IAAa,WAAb,cAA8B,kBAA8D;CAC1F,YAAY,QAAmB;AAC7B,QAAM,QAAQ,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/users/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,UAAU,CAAA;IAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IAC5C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7B,WAAW,EAAE,eAAe,CAAA;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IACd,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,CAAA;AAErE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/users/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_core_BaseCrudApi = require('./BaseCrudApi.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/core/ArchivableCrudApi.ts
|
|
5
|
+
/**
|
|
6
|
+
* CRUD base for resources that support soft-delete via an `archivedAt` timestamp
|
|
7
|
+
* (PUT `${basePath}/${id}` with `{ archivedAt }`). Adds `archive`/`unarchive` on
|
|
8
|
+
* top of {@link BaseCrudApi}.
|
|
9
|
+
*
|
|
10
|
+
* Only extend this for resources whose archive write mechanism is `archivedAt`.
|
|
11
|
+
* Resources that archive through a different field (e.g. cards use `isArchived`)
|
|
12
|
+
* or a dedicated endpoint (e.g. ticket-topics POST `/archive`) must NOT use this
|
|
13
|
+
* base and should implement `archive`/`unarchive` themselves.
|
|
14
|
+
*/
|
|
15
|
+
var ArchivableCrudApi = class extends require_core_BaseCrudApi.BaseCrudApi {
|
|
16
|
+
constructor(client, basePath) {
|
|
17
|
+
super(client, basePath);
|
|
18
|
+
this.archive = this.archive.bind(this);
|
|
19
|
+
this.unarchive = this.unarchive.bind(this);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Archives a resource (soft-delete) by setting `archivedAt` to the current time.
|
|
23
|
+
* @permissions $resourceName.update
|
|
24
|
+
*/
|
|
25
|
+
archive(id, headers) {
|
|
26
|
+
return this.updateById(id, { archivedAt: (/* @__PURE__ */ new Date()).toISOString() }, headers);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Restores a previously archived resource by clearing `archivedAt`.
|
|
30
|
+
* @permissions $resourceName.update
|
|
31
|
+
*/
|
|
32
|
+
unarchive(id, headers) {
|
|
33
|
+
return this.updateById(id, { archivedAt: null }, headers);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.ArchivableCrudApi = ArchivableCrudApi;
|
|
39
|
+
//# sourceMappingURL=ArchivableCrudApi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchivableCrudApi.cjs","names":["BaseCrudApi"],"sources":["../../src/core/ArchivableCrudApi.ts"],"sourcesContent":["import type { ApiClient } from './ApiClient'\nimport { BaseCrudApi } from './BaseCrudApi'\nimport type { ListQuery } from './types'\n\n/**\n * CRUD base for resources that support soft-delete via an `archivedAt` timestamp\n * (PUT `${basePath}/${id}` with `{ archivedAt }`). Adds `archive`/`unarchive` on\n * top of {@link BaseCrudApi}.\n *\n * Only extend this for resources whose archive write mechanism is `archivedAt`.\n * Resources that archive through a different field (e.g. cards use `isArchived`)\n * or a dedicated endpoint (e.g. ticket-topics POST `/archive`) must NOT use this\n * base and should implement `archive`/`unarchive` themselves.\n */\nexport class ArchivableCrudApi<\n TResponse,\n TCreate,\n TUpdate extends { archivedAt?: string | null } = TCreate & { archivedAt?: string | null },\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n> extends BaseCrudApi<TResponse, TCreate, TUpdate, TQuery> {\n constructor(client: ApiClient, basePath: string) {\n super(client, basePath)\n this.archive = this.archive.bind(this)\n this.unarchive = this.unarchive.bind(this)\n }\n\n /**\n * Archives a resource (soft-delete) by setting `archivedAt` to the current time.\n * @permissions $resourceName.update\n */\n archive(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.updateById(id, { archivedAt: new Date().toISOString() } as TUpdate, headers)\n }\n\n /**\n * Restores a previously archived resource by clearing `archivedAt`.\n * @permissions $resourceName.update\n */\n unarchive(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.updateById(id, { archivedAt: null } as TUpdate, headers)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAa,oBAAb,cAKUA,qCAAiD;CACzD,YAAY,QAAmB,UAAkB;AAC/C,QAAM,QAAQ,SAAS;AACvB,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,YAAY,KAAK,UAAU,KAAK,KAAK;;;;;;CAO5C,QAAQ,IAAY,SAAsD;AACxE,SAAO,KAAK,WAAW,IAAI,EAAE,6BAAY,IAAI,MAAM,EAAC,aAAa,EAAE,EAAa,QAAQ;;;;;;CAO1F,UAAU,IAAY,SAAsD;AAC1E,SAAO,KAAK,WAAW,IAAI,EAAE,YAAY,MAAM,EAAa,QAAQ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ApiClient } from './ApiClient';
|
|
2
|
+
import { BaseCrudApi } from './BaseCrudApi';
|
|
3
|
+
import type { ListQuery } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* CRUD base for resources that support soft-delete via an `archivedAt` timestamp
|
|
6
|
+
* (PUT `${basePath}/${id}` with `{ archivedAt }`). Adds `archive`/`unarchive` on
|
|
7
|
+
* top of {@link BaseCrudApi}.
|
|
8
|
+
*
|
|
9
|
+
* Only extend this for resources whose archive write mechanism is `archivedAt`.
|
|
10
|
+
* Resources that archive through a different field (e.g. cards use `isArchived`)
|
|
11
|
+
* or a dedicated endpoint (e.g. ticket-topics POST `/archive`) must NOT use this
|
|
12
|
+
* base and should implement `archive`/`unarchive` themselves.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ArchivableCrudApi<TResponse, TCreate, TUpdate extends {
|
|
15
|
+
archivedAt?: string | null;
|
|
16
|
+
} = TCreate & {
|
|
17
|
+
archivedAt?: string | null;
|
|
18
|
+
}, TQuery extends ListQuery<TResponse> = ListQuery<TResponse>> extends BaseCrudApi<TResponse, TCreate, TUpdate, TQuery> {
|
|
19
|
+
constructor(client: ApiClient, basePath: string);
|
|
20
|
+
/**
|
|
21
|
+
* Archives a resource (soft-delete) by setting `archivedAt` to the current time.
|
|
22
|
+
* @permissions $resourceName.update
|
|
23
|
+
*/
|
|
24
|
+
archive(id: string, headers?: Record<string, string>): Promise<TResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Restores a previously archived resource by clearing `archivedAt`.
|
|
27
|
+
* @permissions $resourceName.update
|
|
28
|
+
*/
|
|
29
|
+
unarchive(id: string, headers?: Record<string, string>): Promise<TResponse>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ArchivableCrudApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchivableCrudApi.d.ts","sourceRoot":"","sources":["../../src/core/ArchivableCrudApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAC5B,SAAS,EACT,OAAO,EACP,OAAO,SAAS;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,OAAO,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACzF,MAAM,SAAS,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAC1D,SAAQ,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;gBAC5C,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAM/C;;;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,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAG5E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BaseCrudApi } from "./BaseCrudApi.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/core/ArchivableCrudApi.ts
|
|
4
|
+
/**
|
|
5
|
+
* CRUD base for resources that support soft-delete via an `archivedAt` timestamp
|
|
6
|
+
* (PUT `${basePath}/${id}` with `{ archivedAt }`). Adds `archive`/`unarchive` on
|
|
7
|
+
* top of {@link BaseCrudApi}.
|
|
8
|
+
*
|
|
9
|
+
* Only extend this for resources whose archive write mechanism is `archivedAt`.
|
|
10
|
+
* Resources that archive through a different field (e.g. cards use `isArchived`)
|
|
11
|
+
* or a dedicated endpoint (e.g. ticket-topics POST `/archive`) must NOT use this
|
|
12
|
+
* base and should implement `archive`/`unarchive` themselves.
|
|
13
|
+
*/
|
|
14
|
+
var ArchivableCrudApi = class extends BaseCrudApi {
|
|
15
|
+
constructor(client, basePath) {
|
|
16
|
+
super(client, basePath);
|
|
17
|
+
this.archive = this.archive.bind(this);
|
|
18
|
+
this.unarchive = this.unarchive.bind(this);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Archives a resource (soft-delete) by setting `archivedAt` to the current time.
|
|
22
|
+
* @permissions $resourceName.update
|
|
23
|
+
*/
|
|
24
|
+
archive(id, headers) {
|
|
25
|
+
return this.updateById(id, { archivedAt: (/* @__PURE__ */ new Date()).toISOString() }, headers);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Restores a previously archived resource by clearing `archivedAt`.
|
|
29
|
+
* @permissions $resourceName.update
|
|
30
|
+
*/
|
|
31
|
+
unarchive(id, headers) {
|
|
32
|
+
return this.updateById(id, { archivedAt: null }, headers);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ArchivableCrudApi };
|
|
38
|
+
//# sourceMappingURL=ArchivableCrudApi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchivableCrudApi.mjs","names":[],"sources":["../../src/core/ArchivableCrudApi.ts"],"sourcesContent":["import type { ApiClient } from './ApiClient'\nimport { BaseCrudApi } from './BaseCrudApi'\nimport type { ListQuery } from './types'\n\n/**\n * CRUD base for resources that support soft-delete via an `archivedAt` timestamp\n * (PUT `${basePath}/${id}` with `{ archivedAt }`). Adds `archive`/`unarchive` on\n * top of {@link BaseCrudApi}.\n *\n * Only extend this for resources whose archive write mechanism is `archivedAt`.\n * Resources that archive through a different field (e.g. cards use `isArchived`)\n * or a dedicated endpoint (e.g. ticket-topics POST `/archive`) must NOT use this\n * base and should implement `archive`/`unarchive` themselves.\n */\nexport class ArchivableCrudApi<\n TResponse,\n TCreate,\n TUpdate extends { archivedAt?: string | null } = TCreate & { archivedAt?: string | null },\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n> extends BaseCrudApi<TResponse, TCreate, TUpdate, TQuery> {\n constructor(client: ApiClient, basePath: string) {\n super(client, basePath)\n this.archive = this.archive.bind(this)\n this.unarchive = this.unarchive.bind(this)\n }\n\n /**\n * Archives a resource (soft-delete) by setting `archivedAt` to the current time.\n * @permissions $resourceName.update\n */\n archive(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.updateById(id, { archivedAt: new Date().toISOString() } as TUpdate, headers)\n }\n\n /**\n * Restores a previously archived resource by clearing `archivedAt`.\n * @permissions $resourceName.update\n */\n unarchive(id: string, headers?: Record<string, string>): Promise<TResponse> {\n return this.updateById(id, { archivedAt: null } as TUpdate, headers)\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAa,oBAAb,cAKU,YAAiD;CACzD,YAAY,QAAmB,UAAkB;AAC/C,QAAM,QAAQ,SAAS;AACvB,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,YAAY,KAAK,UAAU,KAAK,KAAK;;;;;;CAO5C,QAAQ,IAAY,SAAsD;AACxE,SAAO,KAAK,WAAW,IAAI,EAAE,6BAAY,IAAI,MAAM,EAAC,aAAa,EAAE,EAAa,QAAQ;;;;;;CAO1F,UAAU,IAAY,SAAsD;AAC1E,SAAO,KAAK,WAAW,IAAI,EAAE,YAAY,MAAM,EAAa,QAAQ"}
|
|
@@ -11,6 +11,7 @@ var BaseCrudApi = class {
|
|
|
11
11
|
this.client = client;
|
|
12
12
|
this.basePath = basePath.replace(/\/$/, "");
|
|
13
13
|
this.getMany = this.getMany.bind(this);
|
|
14
|
+
this.getOne = this.getOne.bind(this);
|
|
14
15
|
this.getById = this.getById.bind(this);
|
|
15
16
|
this.create = this.create.bind(this);
|
|
16
17
|
this.updateById = this.updateById.bind(this);
|
|
@@ -21,6 +22,18 @@ var BaseCrudApi = class {
|
|
|
21
22
|
return this.client.get(`${this.basePath}${queryString}`, headers);
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
25
|
+
* Returns the first resource matching the query, or `null` when none match.
|
|
26
|
+
* Convenience over `getMany` with `limit: 1`.
|
|
27
|
+
* @permissions $resourceName.view
|
|
28
|
+
*/
|
|
29
|
+
async getOne(query, headers) {
|
|
30
|
+
return (await this.getMany({
|
|
31
|
+
...query,
|
|
32
|
+
limit: 1,
|
|
33
|
+
paginate: false
|
|
34
|
+
}, headers))[0] ?? null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
24
37
|
* Returns a single resource by ID.
|
|
25
38
|
* @permissions $resourceName.view
|
|
26
39
|
*/
|
|
@@ -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, 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 public readonly client: ApiClient\n public 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,AAAgB;CAChB,AAAgB;CAEhB,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;;;;;;
|
|
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 public readonly client: ApiClient\n public 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.getOne = this.getOne.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 the first resource matching the query, or `null` when none match.\n * Convenience over `getMany` with `limit: 1`.\n * @permissions $resourceName.view\n */\n async getOne(query?: TQuery, headers?: Record<string, string>): Promise<TResponse | null> {\n const results = await this.getMany(\n { ...query, limit: 1, paginate: false } as TQuery & { paginate: false },\n headers,\n )\n return results[0] ?? null\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,AAAgB;CAChB,AAAgB;CAEhB,YAAY,QAAmB,UAAkB;AAC/C,OAAK,SAAS;AACd,OAAK,WAAW,SAAS,QAAQ,OAAO,GAAG;AAC3C,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,SAAS,KAAK,OAAO,KAAK,KAAK;AACpC,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;;;;;;;CAQH,MAAM,OAAO,OAAgB,SAA6D;AAKxF,UAJgB,MAAM,KAAK,QACzB;GAAE,GAAG;GAAO,OAAO;GAAG,UAAU;GAAO,EACvC,QACD,EACc,MAAM;;;;;;CAOvB,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"}
|
|
@@ -11,6 +11,12 @@ export declare class BaseCrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery e
|
|
|
11
11
|
getMany(query?: TQuery & {
|
|
12
12
|
paginate?: true;
|
|
13
13
|
}, headers?: Record<string, string>): Promise<Paginated<TResponse>>;
|
|
14
|
+
/**
|
|
15
|
+
* Returns the first resource matching the query, or `null` when none match.
|
|
16
|
+
* Convenience over `getMany` with `limit: 1`.
|
|
17
|
+
* @permissions $resourceName.view
|
|
18
|
+
*/
|
|
19
|
+
getOne(query?: TQuery, headers?: Record<string, string>): Promise<TResponse | null>;
|
|
14
20
|
/**
|
|
15
21
|
* Returns a single resource by ID.
|
|
16
22
|
* @permissions $resourceName.view
|
|
@@ -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,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,SAAgB,MAAM,EAAE,SAAS,CAAA;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAA;gBAEpB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;
|
|
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,SAAgB,MAAM,EAAE,SAAS,CAAA;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAA;gBAEpB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAW/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;;;;OAIG;IACG,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQzF;;;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"}
|
|
@@ -8,6 +8,7 @@ var BaseCrudApi = class {
|
|
|
8
8
|
this.client = client;
|
|
9
9
|
this.basePath = basePath.replace(/\/$/, "");
|
|
10
10
|
this.getMany = this.getMany.bind(this);
|
|
11
|
+
this.getOne = this.getOne.bind(this);
|
|
11
12
|
this.getById = this.getById.bind(this);
|
|
12
13
|
this.create = this.create.bind(this);
|
|
13
14
|
this.updateById = this.updateById.bind(this);
|
|
@@ -18,6 +19,18 @@ var BaseCrudApi = class {
|
|
|
18
19
|
return this.client.get(`${this.basePath}${queryString}`, headers);
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
22
|
+
* Returns the first resource matching the query, or `null` when none match.
|
|
23
|
+
* Convenience over `getMany` with `limit: 1`.
|
|
24
|
+
* @permissions $resourceName.view
|
|
25
|
+
*/
|
|
26
|
+
async getOne(query, headers) {
|
|
27
|
+
return (await this.getMany({
|
|
28
|
+
...query,
|
|
29
|
+
limit: 1,
|
|
30
|
+
paginate: false
|
|
31
|
+
}, headers))[0] ?? null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
21
34
|
* Returns a single resource by ID.
|
|
22
35
|
* @permissions $resourceName.view
|
|
23
36
|
*/
|
|
@@ -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, 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 public readonly client: ApiClient\n public 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,AAAgB;CAChB,AAAgB;CAEhB,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;;;;;;
|
|
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 public readonly client: ApiClient\n public 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.getOne = this.getOne.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 the first resource matching the query, or `null` when none match.\n * Convenience over `getMany` with `limit: 1`.\n * @permissions $resourceName.view\n */\n async getOne(query?: TQuery, headers?: Record<string, string>): Promise<TResponse | null> {\n const results = await this.getMany(\n { ...query, limit: 1, paginate: false } as TQuery & { paginate: false },\n headers,\n )\n return results[0] ?? null\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,AAAgB;CAChB,AAAgB;CAEhB,YAAY,QAAmB,UAAkB;AAC/C,OAAK,SAAS;AACd,OAAK,WAAW,SAAS,QAAQ,OAAO,GAAG;AAC3C,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,SAAS,KAAK,OAAO,KAAK,KAAK;AACpC,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;;;;;;;CAQH,MAAM,OAAO,OAAgB,SAA6D;AAKxF,UAJgB,MAAM,KAAK,QACzB;GAAE,GAAG;GAAO,OAAO;GAAG,UAAU;GAAO,EACvC,QACD,EACc,MAAM;;;;;;CAOvB,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"}
|
package/dist/core/index.cjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_core_BaseApiClient = require('./BaseApiClient.cjs');
|
|
3
3
|
const require_core_BaseCrudApi = require('./BaseCrudApi.cjs');
|
|
4
|
+
const require_core_ArchivableCrudApi = require('./ArchivableCrudApi.cjs');
|
|
4
5
|
|
|
5
6
|
exports.ApiError = require_core_BaseApiClient.ApiError;
|
|
7
|
+
exports.ArchivableCrudApi = require_core_ArchivableCrudApi.ArchivableCrudApi;
|
|
6
8
|
exports.BaseApiClient = require_core_BaseApiClient.BaseApiClient;
|
|
7
9
|
exports.BaseCrudApi = require_core_BaseCrudApi.BaseCrudApi;
|
package/dist/core/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ 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 { ArchivableCrudApi } from './ArchivableCrudApi';
|
|
5
6
|
export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated } from './types';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -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,YAAY,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,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/core/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ApiError, BaseApiClient } from "./BaseApiClient.mjs";
|
|
2
2
|
import { BaseCrudApi } from "./BaseCrudApi.mjs";
|
|
3
|
+
import { ArchivableCrudApi } from "./ArchivableCrudApi.mjs";
|
|
3
4
|
|
|
4
|
-
export { ApiError, BaseApiClient, BaseCrudApi };
|
|
5
|
+
export { ApiError, ArchivableCrudApi, BaseApiClient, BaseCrudApi };
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_core_BaseApiClient = require('./core/BaseApiClient.cjs');
|
|
3
3
|
const require_core_BaseCrudApi = require('./core/BaseCrudApi.cjs');
|
|
4
|
+
const require_core_ArchivableCrudApi = require('./core/ArchivableCrudApi.cjs');
|
|
4
5
|
require('./core/index.cjs');
|
|
5
6
|
|
|
6
7
|
exports.ApiError = require_core_BaseApiClient.ApiError;
|
|
8
|
+
exports.ArchivableCrudApi = require_core_ArchivableCrudApi.ArchivableCrudApi;
|
|
7
9
|
exports.BaseApiClient = require_core_BaseApiClient.BaseApiClient;
|
|
8
10
|
exports.BaseCrudApi = require_core_BaseCrudApi.BaseCrudApi;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ApiError, BaseApiClient } from "./core/BaseApiClient.mjs";
|
|
2
2
|
import { BaseCrudApi } from "./core/BaseCrudApi.mjs";
|
|
3
|
+
import { ArchivableCrudApi } from "./core/ArchivableCrudApi.mjs";
|
|
3
4
|
import "./core/index.mjs";
|
|
4
5
|
|
|
5
|
-
export { ApiError, BaseApiClient, BaseCrudApi };
|
|
6
|
+
export { ApiError, ArchivableCrudApi, BaseApiClient, BaseCrudApi };
|
package/package.json
CHANGED
|
@@ -23,7 +23,8 @@ export type ContactBlockListRelationships = 'user'
|
|
|
23
23
|
|
|
24
24
|
export type CreateContactBlockListPayload = {
|
|
25
25
|
name: string
|
|
26
|
-
|
|
26
|
+
/** ID of an uploaded CSV file (POST /files/create-to-upload, attachedType 'contact_block_list.file'). */
|
|
27
|
+
fileId: string
|
|
27
28
|
defaultDDI?: string
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -341,6 +341,30 @@ describe('ContactsApi', () => {
|
|
|
341
341
|
})
|
|
342
342
|
})
|
|
343
343
|
|
|
344
|
+
describe('transferTicket', () => {
|
|
345
|
+
it('calls client.post with /contacts/:id/ticket/transfer and payload', async () => {
|
|
346
|
+
vi.mocked(client.post).mockResolvedValue({ ok: true })
|
|
347
|
+
const result = await api.transferTicket('c1', { departmentId: 'd1' })
|
|
348
|
+
expect(client.post).toHaveBeenCalledWith(
|
|
349
|
+
'/contacts/c1/ticket/transfer',
|
|
350
|
+
{ departmentId: 'd1' },
|
|
351
|
+
undefined,
|
|
352
|
+
)
|
|
353
|
+
expect(result).toEqual({ ok: true })
|
|
354
|
+
})
|
|
355
|
+
|
|
356
|
+
it('includes optional userId and forwards custom headers', async () => {
|
|
357
|
+
vi.mocked(client.post).mockResolvedValue({ ok: true })
|
|
358
|
+
const headers = { 'X-Custom': 'h' }
|
|
359
|
+
await api.transferTicket('c1', { departmentId: 'd1', userId: 'u1' }, headers)
|
|
360
|
+
expect(client.post).toHaveBeenCalledWith(
|
|
361
|
+
'/contacts/c1/ticket/transfer',
|
|
362
|
+
{ departmentId: 'd1', userId: 'u1' },
|
|
363
|
+
headers,
|
|
364
|
+
)
|
|
365
|
+
})
|
|
366
|
+
})
|
|
367
|
+
|
|
344
368
|
// ── Error propagation ────────────────────────────────────────────
|
|
345
369
|
|
|
346
370
|
describe('error propagation', () => {
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
CreateContactPayload,
|
|
10
10
|
ExistsContactsParams,
|
|
11
11
|
ExportTemplatePayload,
|
|
12
|
+
TransferTicketPayload,
|
|
12
13
|
UpdateContactPayload,
|
|
13
14
|
} from './types'
|
|
14
15
|
|
|
@@ -102,4 +103,21 @@ export class ContactsApi extends BaseCrudApi<Contact, CreateContactPayload, Upda
|
|
|
102
103
|
headers,
|
|
103
104
|
)
|
|
104
105
|
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Opens (or transfers) the contact's ticket to a department, and optionally a user.
|
|
109
|
+
* This is the real ticket-open flow used by the UI — there is no `POST /tickets`.
|
|
110
|
+
* @permissions tickets.transfer.all OR tickets.transfer.me
|
|
111
|
+
*/
|
|
112
|
+
transferTicket(
|
|
113
|
+
contactId: string,
|
|
114
|
+
payload: TransferTicketPayload,
|
|
115
|
+
headers?: Record<string, string>,
|
|
116
|
+
): Promise<unknown> {
|
|
117
|
+
return this.client.post<unknown, TransferTicketPayload>(
|
|
118
|
+
`${this.basePath}/${contactId}/ticket/transfer`,
|
|
119
|
+
payload,
|
|
120
|
+
headers,
|
|
121
|
+
)
|
|
122
|
+
}
|
|
105
123
|
}
|
|
@@ -153,6 +153,8 @@ export type CreateContactPayload = {
|
|
|
153
153
|
name?: string
|
|
154
154
|
serviceId: string
|
|
155
155
|
idFromService?: string
|
|
156
|
+
/** Top-level convenience input; the backend copies it into `data.number`. */
|
|
157
|
+
number?: string
|
|
156
158
|
defaultDepartmentId?: string
|
|
157
159
|
defaultUserId?: string
|
|
158
160
|
data?: ContactData
|
|
@@ -170,6 +172,8 @@ export type UpdateContactPayload = {
|
|
|
170
172
|
note?: string | null
|
|
171
173
|
isSilenced?: boolean
|
|
172
174
|
block?: boolean
|
|
175
|
+
/** Tag IDs to associate with the contact. */
|
|
176
|
+
tagIds?: string[]
|
|
173
177
|
}
|
|
174
178
|
|
|
175
179
|
export type ExportTemplatePayload = {
|
|
@@ -187,3 +191,16 @@ export type ExistsContactsParams = {
|
|
|
187
191
|
}
|
|
188
192
|
|
|
189
193
|
export type CountMediaResult = Record<string, number>
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Body for `POST /contacts/:id/ticket/transfer`. Opens or transfers the contact's
|
|
197
|
+
* ticket. The backend only reads these fields; it does not enforce a 24h window or template.
|
|
198
|
+
*/
|
|
199
|
+
export type TransferTicketPayload = {
|
|
200
|
+
departmentId: string
|
|
201
|
+
userId?: string
|
|
202
|
+
comments?: string
|
|
203
|
+
kanbanCardColumnId?: string
|
|
204
|
+
kanbanCardSubject?: string
|
|
205
|
+
initialMessage?: string
|
|
206
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ApiClient } from '../../core/ApiClient'
|
|
2
|
-
import {
|
|
2
|
+
import { ArchivableCrudApi } from '../../core/ArchivableCrudApi'
|
|
3
3
|
import type { Department, CreateDepartmentPayload, UpdateDepartmentPayload } from './types'
|
|
4
4
|
|
|
5
|
-
export class DepartmentsApi extends
|
|
5
|
+
export class DepartmentsApi extends ArchivableCrudApi<
|
|
6
6
|
Department,
|
|
7
7
|
CreateDepartmentPayload,
|
|
8
8
|
UpdateDepartmentPayload
|
|
@@ -19,6 +19,8 @@ export type KanbanBoardRelationships = 'departments' | 'columns'
|
|
|
19
19
|
export type CreateKanbanBoardPayload = {
|
|
20
20
|
name: string
|
|
21
21
|
timeoutAlertEnabled?: boolean
|
|
22
|
+
/** Department IDs to link to the board. Required by the backend on creation. */
|
|
23
|
+
departmentIds: string[]
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
export type UpdateKanbanBoardPayload = {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { ApiClient } from '../../core/ApiClient'
|
|
2
|
-
import {
|
|
2
|
+
import { ArchivableCrudApi } from '../../core/ArchivableCrudApi'
|
|
3
3
|
import type { Service, CreateServicePayload, UpdateServicePayload } from './types'
|
|
4
4
|
|
|
5
|
-
export class ServicesApi extends
|
|
5
|
+
export class ServicesApi extends ArchivableCrudApi<
|
|
6
|
+
Service,
|
|
7
|
+
CreateServicePayload,
|
|
8
|
+
UpdateServicePayload
|
|
9
|
+
> {
|
|
6
10
|
constructor(client: ApiClient) {
|
|
7
11
|
super(client, '/services')
|
|
8
12
|
}
|
package/src/apis/tags/types.ts
CHANGED
|
@@ -19,6 +19,8 @@ export type TagRelationships = 'contacts' | 'departments'
|
|
|
19
19
|
export type CreateTagPayload = {
|
|
20
20
|
label: string
|
|
21
21
|
backgroundColor?: string
|
|
22
|
+
/** Department IDs to link to the tag on creation. */
|
|
23
|
+
departments?: string[]
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
export type UpdateTagPayload = {
|