@ikatec/digisac-api-sdk 2.2.1 → 3.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.
- package/dist/apis/acceptanceTerms/types.d.ts +18 -2
- package/dist/apis/acceptanceTerms/types.d.ts.map +1 -1
- package/dist/apis/accounts/types.d.ts +2 -0
- package/dist/apis/accounts/types.d.ts.map +1 -1
- package/dist/apis/terms/TermsApi.cjs +34 -6
- package/dist/apis/terms/TermsApi.cjs.map +1 -1
- package/dist/apis/terms/TermsApi.d.ts +27 -6
- package/dist/apis/terms/TermsApi.d.ts.map +1 -1
- package/dist/apis/terms/TermsApi.mjs +34 -6
- package/dist/apis/terms/TermsApi.mjs.map +1 -1
- package/dist/apis/terms/types.d.ts +0 -14
- package/dist/apis/terms/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/apis/acceptanceTerms/AcceptanceTermsApi.test.ts +96 -0
- package/src/apis/acceptanceTerms/types.ts +19 -2
- package/src/apis/accounts/types.ts +2 -0
- package/src/apis/terms/TermsApi.test.ts +56 -102
- package/src/apis/terms/TermsApi.ts +41 -12
- package/src/apis/terms/types.ts +0 -16
|
@@ -5,22 +5,38 @@ export type AcceptanceTerm = {
|
|
|
5
5
|
name: string;
|
|
6
6
|
textField: string;
|
|
7
7
|
accountId: string;
|
|
8
|
-
|
|
8
|
+
/** `null` when the term has no attachment. */
|
|
9
|
+
fileId: string | null;
|
|
9
10
|
createdAt: string;
|
|
10
11
|
updatedAt: string;
|
|
11
12
|
deletedAt: string | null;
|
|
12
13
|
account?: Account;
|
|
13
|
-
file
|
|
14
|
+
/** Present with `include: ['file']`; `null` when the term has no attachment. */
|
|
15
|
+
file?: File | null;
|
|
14
16
|
};
|
|
15
17
|
export type AcceptanceTermRelationships = 'account' | 'file';
|
|
18
|
+
/** Attachment sent inline with the term. `base64` is the raw file content, without the data-URI prefix. */
|
|
19
|
+
export type AcceptanceTermFileUpload = {
|
|
20
|
+
base64: string;
|
|
21
|
+
name: string;
|
|
22
|
+
mimetype: string;
|
|
23
|
+
};
|
|
16
24
|
export type CreateAcceptanceTermPayload = {
|
|
17
25
|
name: string;
|
|
18
26
|
fileId?: string;
|
|
19
27
|
textField?: string;
|
|
28
|
+
/** Uploads and attaches a file to the new term. */
|
|
29
|
+
file?: AcceptanceTermFileUpload;
|
|
20
30
|
};
|
|
21
31
|
export type UpdateAcceptanceTermPayload = {
|
|
22
32
|
name?: string;
|
|
23
33
|
fileId?: string;
|
|
24
34
|
textField?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Replaces the attachment with a new upload, or removes it when `{}` is sent. Omitting `file`
|
|
37
|
+
* currently makes the backend persist the update and then answer 500 (SD-2285) — send `file`
|
|
38
|
+
* explicitly on every update.
|
|
39
|
+
*/
|
|
40
|
+
file?: AcceptanceTermFileUpload | Record<string, never>;
|
|
25
41
|
};
|
|
26
42
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/acceptanceTerms/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/acceptanceTerms/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gFAAgF;IAChF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,MAAM,CAAA;AAE5D,2GAA2G;AAC3G,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,wBAAwB,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACxD,CAAA"}
|
|
@@ -130,6 +130,8 @@ export type AccountSettings = {
|
|
|
130
130
|
timezone?: string;
|
|
131
131
|
/** Requires agents to select a topic when closing a ticket. */
|
|
132
132
|
topicRequired?: boolean;
|
|
133
|
+
/** Requires agents to fill in the summary when closing a ticket. */
|
|
134
|
+
summaryRequired?: boolean;
|
|
133
135
|
/** Enables visibility of tags in the chat interface. */
|
|
134
136
|
showTagsInChat?: boolean;
|
|
135
137
|
/** Enables the ticket (SAC) functionality for the account. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/accounts/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/accounts/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../../_chunks/chunk-Dk0Otj32.cjs');
|
|
3
|
-
const require_core_BaseCrudApi = require('../../core/BaseCrudApi.cjs');
|
|
4
3
|
let qs = require("qs");
|
|
5
4
|
qs = require_chunk.__toESM(qs);
|
|
6
5
|
|
|
7
6
|
//#region src/apis/terms/TermsApi.ts
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Platform terms of use. Terms are published by Agnus (billing) and accepted by the account users,
|
|
9
|
+
* so the `/terms` route has no create/list/update/delete — only the routes below.
|
|
10
|
+
*
|
|
11
|
+
* `GET /terms/:id/export-pdf` is not exposed: it answers a binary PDF, and `ApiClient` only
|
|
12
|
+
* handles JSON/text bodies.
|
|
13
|
+
*/
|
|
14
|
+
var TermsApi = class {
|
|
15
|
+
client;
|
|
16
|
+
basePath = "/terms";
|
|
9
17
|
constructor(client) {
|
|
10
|
-
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.getById = this.getById.bind(this);
|
|
20
|
+
this.getNotAgreed = this.getNotAgreed.bind(this);
|
|
21
|
+
this.agree = this.agree.bind(this);
|
|
11
22
|
}
|
|
12
|
-
/** Returns
|
|
13
|
-
|
|
23
|
+
/** Returns a single term by its ID, scoped to the current account (`null` when not found). */
|
|
24
|
+
getById(id, query, headers) {
|
|
14
25
|
const queryString = query ? `?${qs.default.stringify(query)}` : "";
|
|
15
|
-
return this.client.get(`${this.basePath}
|
|
26
|
+
return this.client.get(`${this.basePath}/${id}${queryString}`, headers);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns the terms of the current account that were not agreed to yet (`agreementDate` null).
|
|
30
|
+
* The backend answers a plain array (not paginated) and ignores query parameters.
|
|
31
|
+
*/
|
|
32
|
+
getNotAgreed(headers) {
|
|
33
|
+
return this.client.get(`${this.basePath}/terms-not-agreed`, headers);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Agrees to the given terms on behalf of the authenticated user. IRREVERSIBLE: the acceptance is
|
|
37
|
+
* registered on Agnus, the terms get `agreementDate`/`userId`, and the signed PDFs are e-mailed
|
|
38
|
+
* to the user. Only terms of the current account are affected.
|
|
39
|
+
*
|
|
40
|
+
* The response is passed through from Agnus as-is, so it is not typed.
|
|
41
|
+
*/
|
|
42
|
+
agree(termIds, headers) {
|
|
43
|
+
return this.client.patch(`${this.basePath}/agree`, { terms: termIds }, headers);
|
|
16
44
|
}
|
|
17
45
|
};
|
|
18
46
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TermsApi.cjs","names":[
|
|
1
|
+
{"version":3,"file":"TermsApi.cjs","names":[],"sources":["../../../src/apis/terms/TermsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport type { GetByIdQuery, HasGetById } from '../../core/types'\nimport type { Term } from './types'\n\n/**\n * Platform terms of use. Terms are published by Agnus (billing) and accepted by the account users,\n * so the `/terms` route has no create/list/update/delete — only the routes below.\n *\n * `GET /terms/:id/export-pdf` is not exposed: it answers a binary PDF, and `ApiClient` only\n * handles JSON/text bodies.\n */\nexport class TermsApi implements HasGetById<Term> {\n protected readonly client: ApiClient\n public readonly basePath = '/terms'\n\n constructor(client: ApiClient) {\n this.client = client\n this.getById = this.getById.bind(this)\n this.getNotAgreed = this.getNotAgreed.bind(this)\n this.agree = this.agree.bind(this)\n }\n\n /** Returns a single term by its ID, scoped to the current account (`null` when not found). */\n getById(id: string, query?: GetByIdQuery<Term>, headers?: Record<string, string>): Promise<Term> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<Term>(`${this.basePath}/${id}${queryString}`, headers)\n }\n\n /**\n * Returns the terms of the current account that were not agreed to yet (`agreementDate` null).\n * The backend answers a plain array (not paginated) and ignores query parameters.\n */\n getNotAgreed(headers?: Record<string, string>): Promise<Term[]> {\n return this.client.get<Term[]>(`${this.basePath}/terms-not-agreed`, headers)\n }\n\n /**\n * Agrees to the given terms on behalf of the authenticated user. IRREVERSIBLE: the acceptance is\n * registered on Agnus, the terms get `agreementDate`/`userId`, and the signed PDFs are e-mailed\n * to the user. Only terms of the current account are affected.\n *\n * The response is passed through from Agnus as-is, so it is not typed.\n */\n agree(termIds: string[], headers?: Record<string, string>): Promise<unknown> {\n return this.client.patch<unknown, { terms: string[] }>(\n `${this.basePath}/agree`,\n { terms: termIds },\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,IAAa,WAAb,MAAkD;CAChD,AAAmB;CACnB,AAAgB,WAAW;CAE3B,YAAY,QAAmB;AAC7B,OAAK,SAAS;AACd,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,eAAe,KAAK,aAAa,KAAK,KAAK;AAChD,OAAK,QAAQ,KAAK,MAAM,KAAK,KAAK;;;CAIpC,QAAQ,IAAY,OAA4B,SAAiD;EAC/F,MAAM,cAAc,QAAQ,IAAI,WAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IAAU,GAAG,KAAK,SAAS,GAAG,KAAK,eAAe,QAAQ;;;;;;CAO/E,aAAa,SAAmD;AAC9D,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,oBAAoB,QAAQ;;;;;;;;;CAU9E,MAAM,SAAmB,SAAoD;AAC3E,SAAO,KAAK,OAAO,MACjB,GAAG,KAAK,SAAS,SACjB,EAAE,OAAO,SAAS,EAClB,QACD"}
|
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
import type { ApiClient } from '../../core/ApiClient';
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import type { GetByIdQuery, HasGetById } from '../../core/types';
|
|
3
|
+
import type { Term } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Platform terms of use. Terms are published by Agnus (billing) and accepted by the account users,
|
|
6
|
+
* so the `/terms` route has no create/list/update/delete — only the routes below.
|
|
7
|
+
*
|
|
8
|
+
* `GET /terms/:id/export-pdf` is not exposed: it answers a binary PDF, and `ApiClient` only
|
|
9
|
+
* handles JSON/text bodies.
|
|
10
|
+
*/
|
|
11
|
+
export declare class TermsApi implements HasGetById<Term> {
|
|
12
|
+
protected readonly client: ApiClient;
|
|
13
|
+
readonly basePath = "/terms";
|
|
6
14
|
constructor(client: ApiClient);
|
|
7
|
-
/** Returns
|
|
8
|
-
|
|
15
|
+
/** Returns a single term by its ID, scoped to the current account (`null` when not found). */
|
|
16
|
+
getById(id: string, query?: GetByIdQuery<Term>, headers?: Record<string, string>): Promise<Term>;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the terms of the current account that were not agreed to yet (`agreementDate` null).
|
|
19
|
+
* The backend answers a plain array (not paginated) and ignores query parameters.
|
|
20
|
+
*/
|
|
21
|
+
getNotAgreed(headers?: Record<string, string>): Promise<Term[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Agrees to the given terms on behalf of the authenticated user. IRREVERSIBLE: the acceptance is
|
|
24
|
+
* registered on Agnus, the terms get `agreementDate`/`userId`, and the signed PDFs are e-mailed
|
|
25
|
+
* to the user. Only terms of the current account are affected.
|
|
26
|
+
*
|
|
27
|
+
* The response is passed through from Agnus as-is, so it is not typed.
|
|
28
|
+
*/
|
|
29
|
+
agree(termIds: string[], headers?: Record<string, string>): Promise<unknown>;
|
|
9
30
|
}
|
|
10
31
|
//# sourceMappingURL=TermsApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TermsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/terms/TermsApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TermsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/terms/TermsApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC;;;;;;GAMG;AACH,qBAAa,QAAS,YAAW,UAAU,CAAC,IAAI,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IACpC,SAAgB,QAAQ,YAAW;gBAEvB,MAAM,EAAE,SAAS;IAO7B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhG;;;OAGG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAI/D;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAO7E"}
|
|
@@ -1,15 +1,43 @@
|
|
|
1
|
-
import { BaseCrudApi } from "../../core/BaseCrudApi.mjs";
|
|
2
1
|
import qs from "qs";
|
|
3
2
|
|
|
4
3
|
//#region src/apis/terms/TermsApi.ts
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Platform terms of use. Terms are published by Agnus (billing) and accepted by the account users,
|
|
6
|
+
* so the `/terms` route has no create/list/update/delete — only the routes below.
|
|
7
|
+
*
|
|
8
|
+
* `GET /terms/:id/export-pdf` is not exposed: it answers a binary PDF, and `ApiClient` only
|
|
9
|
+
* handles JSON/text bodies.
|
|
10
|
+
*/
|
|
11
|
+
var TermsApi = class {
|
|
12
|
+
client;
|
|
13
|
+
basePath = "/terms";
|
|
6
14
|
constructor(client) {
|
|
7
|
-
|
|
15
|
+
this.client = client;
|
|
16
|
+
this.getById = this.getById.bind(this);
|
|
17
|
+
this.getNotAgreed = this.getNotAgreed.bind(this);
|
|
18
|
+
this.agree = this.agree.bind(this);
|
|
8
19
|
}
|
|
9
|
-
/** Returns
|
|
10
|
-
|
|
20
|
+
/** Returns a single term by its ID, scoped to the current account (`null` when not found). */
|
|
21
|
+
getById(id, query, headers) {
|
|
11
22
|
const queryString = query ? `?${qs.stringify(query)}` : "";
|
|
12
|
-
return this.client.get(`${this.basePath}
|
|
23
|
+
return this.client.get(`${this.basePath}/${id}${queryString}`, headers);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns the terms of the current account that were not agreed to yet (`agreementDate` null).
|
|
27
|
+
* The backend answers a plain array (not paginated) and ignores query parameters.
|
|
28
|
+
*/
|
|
29
|
+
getNotAgreed(headers) {
|
|
30
|
+
return this.client.get(`${this.basePath}/terms-not-agreed`, headers);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Agrees to the given terms on behalf of the authenticated user. IRREVERSIBLE: the acceptance is
|
|
34
|
+
* registered on Agnus, the terms get `agreementDate`/`userId`, and the signed PDFs are e-mailed
|
|
35
|
+
* to the user. Only terms of the current account are affected.
|
|
36
|
+
*
|
|
37
|
+
* The response is passed through from Agnus as-is, so it is not typed.
|
|
38
|
+
*/
|
|
39
|
+
agree(termIds, headers) {
|
|
40
|
+
return this.client.patch(`${this.basePath}/agree`, { terms: termIds }, headers);
|
|
13
41
|
}
|
|
14
42
|
};
|
|
15
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TermsApi.mjs","names":[],"sources":["../../../src/apis/terms/TermsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport {
|
|
1
|
+
{"version":3,"file":"TermsApi.mjs","names":[],"sources":["../../../src/apis/terms/TermsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport type { GetByIdQuery, HasGetById } from '../../core/types'\nimport type { Term } from './types'\n\n/**\n * Platform terms of use. Terms are published by Agnus (billing) and accepted by the account users,\n * so the `/terms` route has no create/list/update/delete — only the routes below.\n *\n * `GET /terms/:id/export-pdf` is not exposed: it answers a binary PDF, and `ApiClient` only\n * handles JSON/text bodies.\n */\nexport class TermsApi implements HasGetById<Term> {\n protected readonly client: ApiClient\n public readonly basePath = '/terms'\n\n constructor(client: ApiClient) {\n this.client = client\n this.getById = this.getById.bind(this)\n this.getNotAgreed = this.getNotAgreed.bind(this)\n this.agree = this.agree.bind(this)\n }\n\n /** Returns a single term by its ID, scoped to the current account (`null` when not found). */\n getById(id: string, query?: GetByIdQuery<Term>, headers?: Record<string, string>): Promise<Term> {\n const queryString = query ? `?${qs.stringify(query)}` : ''\n return this.client.get<Term>(`${this.basePath}/${id}${queryString}`, headers)\n }\n\n /**\n * Returns the terms of the current account that were not agreed to yet (`agreementDate` null).\n * The backend answers a plain array (not paginated) and ignores query parameters.\n */\n getNotAgreed(headers?: Record<string, string>): Promise<Term[]> {\n return this.client.get<Term[]>(`${this.basePath}/terms-not-agreed`, headers)\n }\n\n /**\n * Agrees to the given terms on behalf of the authenticated user. IRREVERSIBLE: the acceptance is\n * registered on Agnus, the terms get `agreementDate`/`userId`, and the signed PDFs are e-mailed\n * to the user. Only terms of the current account are affected.\n *\n * The response is passed through from Agnus as-is, so it is not typed.\n */\n agree(termIds: string[], headers?: Record<string, string>): Promise<unknown> {\n return this.client.patch<unknown, { terms: string[] }>(\n `${this.basePath}/agree`,\n { terms: termIds },\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;;;AAYA,IAAa,WAAb,MAAkD;CAChD,AAAmB;CACnB,AAAgB,WAAW;CAE3B,YAAY,QAAmB;AAC7B,OAAK,SAAS;AACd,OAAK,UAAU,KAAK,QAAQ,KAAK,KAAK;AACtC,OAAK,eAAe,KAAK,aAAa,KAAK,KAAK;AAChD,OAAK,QAAQ,KAAK,MAAM,KAAK,KAAK;;;CAIpC,QAAQ,IAAY,OAA4B,SAAiD;EAC/F,MAAM,cAAc,QAAQ,IAAI,GAAG,UAAU,MAAM,KAAK;AACxD,SAAO,KAAK,OAAO,IAAU,GAAG,KAAK,SAAS,GAAG,KAAK,eAAe,QAAQ;;;;;;CAO/E,aAAa,SAAmD;AAC9D,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,oBAAoB,QAAQ;;;;;;;;;CAU9E,MAAM,SAAmB,SAAoD;AAC3E,SAAO,KAAK,OAAO,MACjB,GAAG,KAAK,SAAS,SACjB,EAAE,OAAO,SAAS,EAClB,QACD"}
|
|
@@ -11,18 +11,4 @@ export type Term = {
|
|
|
11
11
|
createdAt: string;
|
|
12
12
|
updatedAt: string;
|
|
13
13
|
};
|
|
14
|
-
export type CreateTermPayload = {
|
|
15
|
-
title: Record<string, string>;
|
|
16
|
-
text: Record<string, string>;
|
|
17
|
-
expirationDate: string;
|
|
18
|
-
version: string;
|
|
19
|
-
agnusId: string;
|
|
20
|
-
accountId?: string;
|
|
21
|
-
};
|
|
22
|
-
export type UpdateTermPayload = {
|
|
23
|
-
title?: Record<string, string>;
|
|
24
|
-
text?: Record<string, string>;
|
|
25
|
-
expirationDate?: string;
|
|
26
|
-
version?: string;
|
|
27
|
-
};
|
|
28
14
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/terms/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/terms/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
+
import { AcceptanceTermsApi } from './AcceptanceTermsApi'
|
|
3
|
+
import type { ApiClient } from '../../core/ApiClient'
|
|
4
|
+
import type {
|
|
5
|
+
AcceptanceTerm,
|
|
6
|
+
CreateAcceptanceTermPayload,
|
|
7
|
+
UpdateAcceptanceTermPayload,
|
|
8
|
+
} from './types'
|
|
9
|
+
|
|
10
|
+
// ── Mock client factory ──────────────────────────────────────────────
|
|
11
|
+
|
|
12
|
+
function createMockClient(): ApiClient {
|
|
13
|
+
return {
|
|
14
|
+
setAccessToken: vi.fn().mockReturnThis(),
|
|
15
|
+
request: vi.fn(),
|
|
16
|
+
get: vi.fn(),
|
|
17
|
+
post: vi.fn(),
|
|
18
|
+
put: vi.fn(),
|
|
19
|
+
patch: vi.fn(),
|
|
20
|
+
delete: vi.fn(),
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ── Fixtures ─────────────────────────────────────────────────────────
|
|
25
|
+
|
|
26
|
+
const term: AcceptanceTerm = {
|
|
27
|
+
id: 'at-1',
|
|
28
|
+
name: 'LGPD',
|
|
29
|
+
textField: 'Ao continuar, você concorda...',
|
|
30
|
+
accountId: 'acc-1',
|
|
31
|
+
fileId: null,
|
|
32
|
+
createdAt: '2024-01-01T00:00:00Z',
|
|
33
|
+
updatedAt: '2024-01-01T00:00:00Z',
|
|
34
|
+
deletedAt: null,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const upload = { base64: 'JVBERi0xLjQ=', name: 'termo.pdf', mimetype: 'application/pdf' }
|
|
38
|
+
|
|
39
|
+
// ── Tests ────────────────────────────────────────────────────────────
|
|
40
|
+
|
|
41
|
+
describe('AcceptanceTermsApi', () => {
|
|
42
|
+
let client: ReturnType<typeof createMockClient>
|
|
43
|
+
let api: AcceptanceTermsApi
|
|
44
|
+
|
|
45
|
+
beforeEach(() => {
|
|
46
|
+
client = createMockClient()
|
|
47
|
+
api = new AcceptanceTermsApi(client)
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
describe('create', () => {
|
|
51
|
+
it('sends the inline file upload in the body', async () => {
|
|
52
|
+
vi.mocked(client.post).mockResolvedValue({ ...term, fileId: 'file-1' })
|
|
53
|
+
const body: CreateAcceptanceTermPayload = { name: 'LGPD', textField: 'Texto', file: upload }
|
|
54
|
+
await api.create(body)
|
|
55
|
+
expect(client.post).toHaveBeenCalledWith('/acceptance-terms', body, undefined)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('creates a term without attachment', async () => {
|
|
59
|
+
vi.mocked(client.post).mockResolvedValue(term)
|
|
60
|
+
const result = await api.create({ name: 'LGPD', textField: 'Texto' })
|
|
61
|
+
expect(client.post).toHaveBeenCalledWith(
|
|
62
|
+
'/acceptance-terms',
|
|
63
|
+
{ name: 'LGPD', textField: 'Texto' },
|
|
64
|
+
undefined,
|
|
65
|
+
)
|
|
66
|
+
expect(result.fileId).toBeNull()
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
describe('updateById', () => {
|
|
71
|
+
it('sends a new file upload', async () => {
|
|
72
|
+
vi.mocked(client.put).mockResolvedValue(term)
|
|
73
|
+
const body: UpdateAcceptanceTermPayload = { name: 'LGPD v2', file: upload }
|
|
74
|
+
await api.updateById('at-1', body)
|
|
75
|
+
expect(client.put).toHaveBeenCalledWith('/acceptance-terms/at-1', body, undefined)
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('sends an empty file object to remove the attachment', async () => {
|
|
79
|
+
vi.mocked(client.put).mockResolvedValue(term)
|
|
80
|
+
const body: UpdateAcceptanceTermPayload = { name: 'LGPD', textField: 'Texto', file: {} }
|
|
81
|
+
await api.updateById('at-1', body)
|
|
82
|
+
expect(client.put).toHaveBeenCalledWith('/acceptance-terms/at-1', body, undefined)
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
describe('getById', () => {
|
|
87
|
+
it('includes the file relationship', async () => {
|
|
88
|
+
vi.mocked(client.get).mockResolvedValue({ ...term, file: null })
|
|
89
|
+
const result = await api.getById('at-1', { include: ['file'] })
|
|
90
|
+
const url = vi.mocked(client.get).mock.calls[0][0] as string
|
|
91
|
+
expect(url).toContain('/acceptance-terms/at-1?')
|
|
92
|
+
expect(url).toContain('include')
|
|
93
|
+
expect(result.file).toBeNull()
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
})
|
|
@@ -6,25 +6,42 @@ export type AcceptanceTerm = {
|
|
|
6
6
|
name: string
|
|
7
7
|
textField: string
|
|
8
8
|
accountId: string
|
|
9
|
-
|
|
9
|
+
/** `null` when the term has no attachment. */
|
|
10
|
+
fileId: string | null
|
|
10
11
|
createdAt: string
|
|
11
12
|
updatedAt: string
|
|
12
13
|
deletedAt: string | null
|
|
13
14
|
// relationships
|
|
14
15
|
account?: Account
|
|
15
|
-
file
|
|
16
|
+
/** Present with `include: ['file']`; `null` when the term has no attachment. */
|
|
17
|
+
file?: File | null
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export type AcceptanceTermRelationships = 'account' | 'file'
|
|
19
21
|
|
|
22
|
+
/** Attachment sent inline with the term. `base64` is the raw file content, without the data-URI prefix. */
|
|
23
|
+
export type AcceptanceTermFileUpload = {
|
|
24
|
+
base64: string
|
|
25
|
+
name: string
|
|
26
|
+
mimetype: string
|
|
27
|
+
}
|
|
28
|
+
|
|
20
29
|
export type CreateAcceptanceTermPayload = {
|
|
21
30
|
name: string
|
|
22
31
|
fileId?: string
|
|
23
32
|
textField?: string
|
|
33
|
+
/** Uploads and attaches a file to the new term. */
|
|
34
|
+
file?: AcceptanceTermFileUpload
|
|
24
35
|
}
|
|
25
36
|
|
|
26
37
|
export type UpdateAcceptanceTermPayload = {
|
|
27
38
|
name?: string
|
|
28
39
|
fileId?: string
|
|
29
40
|
textField?: string
|
|
41
|
+
/**
|
|
42
|
+
* Replaces the attachment with a new upload, or removes it when `{}` is sent. Omitting `file`
|
|
43
|
+
* currently makes the backend persist the update and then answer 500 (SD-2285) — send `file`
|
|
44
|
+
* explicitly on every update.
|
|
45
|
+
*/
|
|
46
|
+
file?: AcceptanceTermFileUpload | Record<string, never>
|
|
30
47
|
}
|
|
@@ -131,6 +131,8 @@ export type AccountSettings = {
|
|
|
131
131
|
timezone?: string
|
|
132
132
|
/** Requires agents to select a topic when closing a ticket. */
|
|
133
133
|
topicRequired?: boolean
|
|
134
|
+
/** Requires agents to fill in the summary when closing a ticket. */
|
|
135
|
+
summaryRequired?: boolean
|
|
134
136
|
/** Enables visibility of tags in the chat interface. */
|
|
135
137
|
showTagsInChat?: boolean
|
|
136
138
|
/** Enables the ticket (SAC) functionality for the account. */
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
2
|
import { TermsApi } from './TermsApi'
|
|
3
3
|
import type { ApiClient } from '../../core/ApiClient'
|
|
4
|
-
import type { Term
|
|
5
|
-
import type { Paginated } from '../../core/types'
|
|
4
|
+
import type { Term } from './types'
|
|
6
5
|
|
|
7
6
|
// ── Mock client factory ──────────────────────────────────────────────
|
|
8
7
|
|
|
@@ -34,17 +33,6 @@ const term: Term = {
|
|
|
34
33
|
updatedAt: '2024-01-01T00:00:00Z',
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
const paginated: Paginated<Term> = {
|
|
38
|
-
data: [term],
|
|
39
|
-
total: 1,
|
|
40
|
-
limit: 10,
|
|
41
|
-
skip: 0,
|
|
42
|
-
currentPage: 1,
|
|
43
|
-
lastPage: 1,
|
|
44
|
-
from: 1,
|
|
45
|
-
to: 1,
|
|
46
|
-
}
|
|
47
|
-
|
|
48
36
|
// ── Tests ────────────────────────────────────────────────────────────
|
|
49
37
|
|
|
50
38
|
describe('TermsApi', () => {
|
|
@@ -56,30 +44,13 @@ describe('TermsApi', () => {
|
|
|
56
44
|
api = new TermsApi(client)
|
|
57
45
|
})
|
|
58
46
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
expect(result).toEqual(paginated)
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
it('serializes query parameters', async () => {
|
|
70
|
-
vi.mocked(client.get).mockResolvedValue(paginated)
|
|
71
|
-
await api.getMany({ page: 2 })
|
|
72
|
-
const url = vi.mocked(client.get).mock.calls[0][0] as string
|
|
73
|
-
expect(url).toContain('/terms?')
|
|
74
|
-
expect(url).toContain('page=2')
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
it('forwards custom headers', async () => {
|
|
78
|
-
vi.mocked(client.get).mockResolvedValue(paginated)
|
|
79
|
-
const headers = { 'X-Custom': 'value' }
|
|
80
|
-
await api.getMany(undefined, headers)
|
|
81
|
-
expect(client.get).toHaveBeenCalledWith('/terms', headers)
|
|
82
|
-
})
|
|
47
|
+
it('exposes only the read routes served by the backend', () => {
|
|
48
|
+
expect(api.basePath).toBe('/terms')
|
|
49
|
+
// /terms has no list/create/update/delete routes (404 "Route not found.")
|
|
50
|
+
expect(api).not.toHaveProperty('getMany')
|
|
51
|
+
expect(api).not.toHaveProperty('create')
|
|
52
|
+
expect(api).not.toHaveProperty('updateById')
|
|
53
|
+
expect(api).not.toHaveProperty('deleteById')
|
|
83
54
|
})
|
|
84
55
|
|
|
85
56
|
// ── getById ──────────────────────────────────────────────────────
|
|
@@ -92,100 +63,83 @@ describe('TermsApi', () => {
|
|
|
92
63
|
expect(result).toEqual(term)
|
|
93
64
|
})
|
|
94
65
|
|
|
66
|
+
it('serializes the query', async () => {
|
|
67
|
+
vi.mocked(client.get).mockResolvedValue(term)
|
|
68
|
+
await api.getById('term-1', { attributes: ['id', 'version'] })
|
|
69
|
+
const url = vi.mocked(client.get).mock.calls[0][0] as string
|
|
70
|
+
expect(url).toContain('/terms/term-1?')
|
|
71
|
+
expect(url).toContain('attributes')
|
|
72
|
+
})
|
|
73
|
+
|
|
95
74
|
it('forwards custom headers', async () => {
|
|
96
75
|
vi.mocked(client.get).mockResolvedValue(term)
|
|
97
76
|
const headers = { 'X-Tenant': 'abc' }
|
|
98
77
|
await api.getById('term-1', undefined, headers)
|
|
99
78
|
expect(client.get).toHaveBeenCalledWith('/terms/term-1', headers)
|
|
100
79
|
})
|
|
101
|
-
})
|
|
102
80
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const body: CreateTermPayload = {
|
|
109
|
-
title: { en: 'ToS' },
|
|
110
|
-
text: { en: 'Text' },
|
|
111
|
-
expirationDate: '2025-01-01',
|
|
112
|
-
version: '1.0',
|
|
113
|
-
agnusId: 'agnus-1',
|
|
114
|
-
}
|
|
115
|
-
const result = await api.create(body)
|
|
116
|
-
expect(client.post).toHaveBeenCalledWith('/terms', body, undefined)
|
|
117
|
-
expect(result).toEqual(term)
|
|
81
|
+
it('keeps working when detached from the instance', async () => {
|
|
82
|
+
vi.mocked(client.get).mockResolvedValue(term)
|
|
83
|
+
const { getById } = api
|
|
84
|
+
await getById('term-1')
|
|
85
|
+
expect(client.get).toHaveBeenCalledWith('/terms/term-1', undefined)
|
|
118
86
|
})
|
|
119
87
|
})
|
|
120
88
|
|
|
121
|
-
// ──
|
|
89
|
+
// ── getNotAgreed ─────────────────────────────────────────────────
|
|
122
90
|
|
|
123
|
-
describe('
|
|
124
|
-
it('calls client.
|
|
125
|
-
vi.mocked(client.
|
|
126
|
-
const result = await api.
|
|
127
|
-
expect(client.
|
|
128
|
-
expect(result).toEqual(term)
|
|
91
|
+
describe('getNotAgreed', () => {
|
|
92
|
+
it('calls client.get with /terms/terms-not-agreed and returns the plain array', async () => {
|
|
93
|
+
vi.mocked(client.get).mockResolvedValue([term])
|
|
94
|
+
const result = await api.getNotAgreed()
|
|
95
|
+
expect(client.get).toHaveBeenCalledWith('/terms/terms-not-agreed', undefined)
|
|
96
|
+
expect(result).toEqual([term])
|
|
129
97
|
})
|
|
130
98
|
|
|
131
99
|
it('forwards custom headers', async () => {
|
|
132
|
-
vi.mocked(client.
|
|
133
|
-
const headers = { '
|
|
134
|
-
await api.
|
|
135
|
-
expect(client.
|
|
100
|
+
vi.mocked(client.get).mockResolvedValue([])
|
|
101
|
+
const headers = { 'X-Custom': 'h' }
|
|
102
|
+
await api.getNotAgreed(headers)
|
|
103
|
+
expect(client.get).toHaveBeenCalledWith('/terms/terms-not-agreed', headers)
|
|
136
104
|
})
|
|
137
105
|
})
|
|
138
106
|
|
|
139
|
-
// ──
|
|
140
|
-
|
|
141
|
-
describe('
|
|
142
|
-
it('calls client.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
expect(
|
|
107
|
+
// ── agree ────────────────────────────────────────────────────────
|
|
108
|
+
|
|
109
|
+
describe('agree', () => {
|
|
110
|
+
it('calls client.patch with /terms/agree and the term ids', async () => {
|
|
111
|
+
const agnusResponse = { agreed: true }
|
|
112
|
+
vi.mocked(client.patch).mockResolvedValue(agnusResponse)
|
|
113
|
+
const result = await api.agree(['term-1', 'term-2'])
|
|
114
|
+
expect(client.patch).toHaveBeenCalledWith(
|
|
115
|
+
'/terms/agree',
|
|
116
|
+
{ terms: ['term-1', 'term-2'] },
|
|
117
|
+
undefined,
|
|
118
|
+
)
|
|
119
|
+
expect(result).toEqual(agnusResponse)
|
|
147
120
|
})
|
|
148
121
|
|
|
149
122
|
it('forwards custom headers', async () => {
|
|
150
|
-
vi.mocked(client.
|
|
151
|
-
const headers = { 'X-
|
|
152
|
-
await api.
|
|
153
|
-
expect(client.
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
// ── getNotAgreed ─────────────────────────────────────────────────
|
|
158
|
-
|
|
159
|
-
describe('getNotAgreed', () => {
|
|
160
|
-
it('calls client.get with /terms/terms-not-agreed when no query is provided', async () => {
|
|
161
|
-
vi.mocked(client.get).mockResolvedValue(paginated)
|
|
162
|
-
const result = await api.getNotAgreed()
|
|
163
|
-
expect(client.get).toHaveBeenCalledWith('/terms/terms-not-agreed', undefined)
|
|
164
|
-
expect(result).toEqual(paginated)
|
|
165
|
-
})
|
|
166
|
-
|
|
167
|
-
it('serializes query parameters', async () => {
|
|
168
|
-
vi.mocked(client.get).mockResolvedValue(paginated)
|
|
169
|
-
await api.getNotAgreed({ page: 1, perPage: 5 })
|
|
170
|
-
const url = vi.mocked(client.get).mock.calls[0][0] as string
|
|
171
|
-
expect(url).toContain('/terms/terms-not-agreed?')
|
|
172
|
-
expect(url).toContain('page=1')
|
|
123
|
+
vi.mocked(client.patch).mockResolvedValue({})
|
|
124
|
+
const headers = { 'X-Custom': 'h' }
|
|
125
|
+
await api.agree(['term-1'], headers)
|
|
126
|
+
expect(client.patch).toHaveBeenCalledWith('/terms/agree', { terms: ['term-1'] }, headers)
|
|
173
127
|
})
|
|
174
128
|
|
|
175
|
-
it('
|
|
176
|
-
vi.mocked(client.
|
|
177
|
-
const
|
|
178
|
-
await
|
|
179
|
-
expect(client.
|
|
129
|
+
it('keeps working when detached from the instance', async () => {
|
|
130
|
+
vi.mocked(client.patch).mockResolvedValue({})
|
|
131
|
+
const { agree } = api
|
|
132
|
+
await agree(['term-1'])
|
|
133
|
+
expect(client.patch).toHaveBeenCalledWith('/terms/agree', { terms: ['term-1'] }, undefined)
|
|
180
134
|
})
|
|
181
135
|
})
|
|
182
136
|
|
|
183
137
|
// ── Error propagation ────────────────────────────────────────────
|
|
184
138
|
|
|
185
139
|
describe('error propagation', () => {
|
|
186
|
-
it('propagates errors from
|
|
140
|
+
it('propagates errors from getById', async () => {
|
|
187
141
|
vi.mocked(client.get).mockRejectedValue(new Error('Network error'))
|
|
188
|
-
await expect(api.
|
|
142
|
+
await expect(api.getById('term-1')).rejects.toThrow('Network error')
|
|
189
143
|
})
|
|
190
144
|
|
|
191
145
|
it('propagates errors from getNotAgreed', async () => {
|
|
@@ -1,22 +1,51 @@
|
|
|
1
1
|
import qs from 'qs'
|
|
2
2
|
import type { ApiClient } from '../../core/ApiClient'
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
5
|
-
|
|
3
|
+
import type { GetByIdQuery, HasGetById } from '../../core/types'
|
|
4
|
+
import type { Term } from './types'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Platform terms of use. Terms are published by Agnus (billing) and accepted by the account users,
|
|
8
|
+
* so the `/terms` route has no create/list/update/delete — only the routes below.
|
|
9
|
+
*
|
|
10
|
+
* `GET /terms/:id/export-pdf` is not exposed: it answers a binary PDF, and `ApiClient` only
|
|
11
|
+
* handles JSON/text bodies.
|
|
12
|
+
*/
|
|
13
|
+
export class TermsApi implements HasGetById<Term> {
|
|
14
|
+
protected readonly client: ApiClient
|
|
15
|
+
public readonly basePath = '/terms'
|
|
6
16
|
|
|
7
|
-
export class TermsApi extends BaseCrudApi<Term, CreateTermPayload, UpdateTermPayload> {
|
|
8
17
|
constructor(client: ApiClient) {
|
|
9
|
-
|
|
18
|
+
this.client = client
|
|
19
|
+
this.getById = this.getById.bind(this)
|
|
20
|
+
this.getNotAgreed = this.getNotAgreed.bind(this)
|
|
21
|
+
this.agree = this.agree.bind(this)
|
|
10
22
|
}
|
|
11
23
|
|
|
12
|
-
/** Returns
|
|
13
|
-
|
|
14
|
-
query?: ListQuery<Term>,
|
|
15
|
-
headers?: Record<string, string>,
|
|
16
|
-
): Promise<Paginated<Term>> {
|
|
24
|
+
/** Returns a single term by its ID, scoped to the current account (`null` when not found). */
|
|
25
|
+
getById(id: string, query?: GetByIdQuery<Term>, headers?: Record<string, string>): Promise<Term> {
|
|
17
26
|
const queryString = query ? `?${qs.stringify(query)}` : ''
|
|
18
|
-
return this.client.get<
|
|
19
|
-
|
|
27
|
+
return this.client.get<Term>(`${this.basePath}/${id}${queryString}`, headers)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Returns the terms of the current account that were not agreed to yet (`agreementDate` null).
|
|
32
|
+
* The backend answers a plain array (not paginated) and ignores query parameters.
|
|
33
|
+
*/
|
|
34
|
+
getNotAgreed(headers?: Record<string, string>): Promise<Term[]> {
|
|
35
|
+
return this.client.get<Term[]>(`${this.basePath}/terms-not-agreed`, headers)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Agrees to the given terms on behalf of the authenticated user. IRREVERSIBLE: the acceptance is
|
|
40
|
+
* registered on Agnus, the terms get `agreementDate`/`userId`, and the signed PDFs are e-mailed
|
|
41
|
+
* to the user. Only terms of the current account are affected.
|
|
42
|
+
*
|
|
43
|
+
* The response is passed through from Agnus as-is, so it is not typed.
|
|
44
|
+
*/
|
|
45
|
+
agree(termIds: string[], headers?: Record<string, string>): Promise<unknown> {
|
|
46
|
+
return this.client.patch<unknown, { terms: string[] }>(
|
|
47
|
+
`${this.basePath}/agree`,
|
|
48
|
+
{ terms: termIds },
|
|
20
49
|
headers,
|
|
21
50
|
)
|
|
22
51
|
}
|
package/src/apis/terms/types.ts
CHANGED
|
@@ -11,19 +11,3 @@ export type Term = {
|
|
|
11
11
|
createdAt: string
|
|
12
12
|
updatedAt: string
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
export type CreateTermPayload = {
|
|
16
|
-
title: Record<string, string>
|
|
17
|
-
text: Record<string, string>
|
|
18
|
-
expirationDate: string
|
|
19
|
-
version: string
|
|
20
|
-
agnusId: string
|
|
21
|
-
accountId?: string
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export type UpdateTermPayload = {
|
|
25
|
-
title?: Record<string, string>
|
|
26
|
-
text?: Record<string, string>
|
|
27
|
-
expirationDate?: string
|
|
28
|
-
version?: string
|
|
29
|
-
}
|