@catalisa/wpp-sdk 0.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/README.md +486 -0
- package/dist/client.d.ts +81 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +97 -0
- package/dist/client.js.map +1 -0
- package/dist/errors/index.d.ts +42 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +70 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/http/client.d.ts +48 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +125 -0
- package/dist/http/client.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/apiTokens.d.ts +29 -0
- package/dist/resources/apiTokens.d.ts.map +1 -0
- package/dist/resources/apiTokens.js +38 -0
- package/dist/resources/apiTokens.js.map +1 -0
- package/dist/resources/auth.d.ts +29 -0
- package/dist/resources/auth.d.ts.map +1 -0
- package/dist/resources/auth.js +43 -0
- package/dist/resources/auth.js.map +1 -0
- package/dist/resources/branding.d.ts +27 -0
- package/dist/resources/branding.d.ts.map +1 -0
- package/dist/resources/branding.js +36 -0
- package/dist/resources/branding.js.map +1 -0
- package/dist/resources/health.d.ts +16 -0
- package/dist/resources/health.d.ts.map +1 -0
- package/dist/resources/health.js +19 -0
- package/dist/resources/health.js.map +1 -0
- package/dist/resources/tenants.d.ts +36 -0
- package/dist/resources/tenants.d.ts.map +1 -0
- package/dist/resources/tenants.js +51 -0
- package/dist/resources/tenants.js.map +1 -0
- package/dist/resources/users.d.ts +33 -0
- package/dist/resources/users.d.ts.map +1 -0
- package/dist/resources/users.js +46 -0
- package/dist/resources/users.js.map +1 -0
- package/dist/resources/webhooks.d.ts +113 -0
- package/dist/resources/webhooks.d.ts.map +1 -0
- package/dist/resources/webhooks.js +216 -0
- package/dist/resources/webhooks.js.map +1 -0
- package/dist/resources/whatsapp.d.ts +121 -0
- package/dist/resources/whatsapp.d.ts.map +1 -0
- package/dist/resources/whatsapp.js +183 -0
- package/dist/resources/whatsapp.js.map +1 -0
- package/dist/resources/whatsappAdmin.d.ts +110 -0
- package/dist/resources/whatsappAdmin.d.ts.map +1 -0
- package/dist/resources/whatsappAdmin.js +140 -0
- package/dist/resources/whatsappAdmin.js.map +1 -0
- package/dist/types/admin.d.ts +57 -0
- package/dist/types/admin.d.ts.map +1 -0
- package/dist/types/admin.js +6 -0
- package/dist/types/admin.js.map +1 -0
- package/dist/types/auth.d.ts +31 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +6 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/branding.d.ts +30 -0
- package/dist/types/branding.d.ts.map +1 -0
- package/dist/types/branding.js +6 -0
- package/dist/types/branding.js.map +1 -0
- package/dist/types/common.d.ts +27 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +6 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +26 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/webhook.d.ts +126 -0
- package/dist/types/webhook.d.ts.map +1 -0
- package/dist/types/webhook.js +6 -0
- package/dist/types/webhook.js.map +1 -0
- package/dist/types/whatsapp.d.ts +154 -0
- package/dist/types/whatsapp.d.ts.map +1 -0
- package/dist/types/whatsapp.js +6 -0
- package/dist/types/whatsapp.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base API Error class
|
|
3
|
+
*/
|
|
4
|
+
export declare class APIError extends Error {
|
|
5
|
+
statusCode?: number | undefined;
|
|
6
|
+
response?: any | undefined;
|
|
7
|
+
constructor(message: string, statusCode?: number | undefined, response?: any | undefined);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Authentication/Authorization errors (401, 403)
|
|
11
|
+
*/
|
|
12
|
+
export declare class AuthError extends APIError {
|
|
13
|
+
constructor(message: string, statusCode?: number, response?: any);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validation errors (400, 422)
|
|
17
|
+
*/
|
|
18
|
+
export declare class ValidationError extends APIError {
|
|
19
|
+
errors?: Record<string, string[]> | undefined;
|
|
20
|
+
constructor(message: string, errors?: Record<string, string[]> | undefined, statusCode?: number, response?: any);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Not Found errors (404)
|
|
24
|
+
*/
|
|
25
|
+
export declare class NotFoundError extends APIError {
|
|
26
|
+
constructor(message: string, response?: any);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Rate Limit errors (429)
|
|
30
|
+
*/
|
|
31
|
+
export declare class RateLimitError extends APIError {
|
|
32
|
+
retryAfter?: number | undefined;
|
|
33
|
+
constructor(message: string, retryAfter?: number | undefined, response?: any);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Network/Connection errors
|
|
37
|
+
*/
|
|
38
|
+
export declare class NetworkError extends APIError {
|
|
39
|
+
originalError?: Error | undefined;
|
|
40
|
+
constructor(message: string, originalError?: Error | undefined);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,UAAU,CAAC,EAAE,MAAM;IACnB,QAAQ,CAAC,EAAE,GAAG;gBAFrB,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,QAAQ,CAAC,EAAE,GAAG,YAAA;CAMxB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,QAAQ;gBACzB,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG;CAIjE;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAGlC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBADxC,OAAO,EAAE,MAAM,EACR,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,YAAA,EACxC,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,GAAG;CAKjB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG;CAI5C;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAGjC,UAAU,CAAC,EAAE,MAAM;gBAD1B,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EAC1B,QAAQ,CAAC,EAAE,GAAG;CAKjB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACJ,aAAa,CAAC,EAAE,KAAK;gBAA7C,OAAO,EAAE,MAAM,EAAS,aAAa,CAAC,EAAE,KAAK,YAAA;CAI1D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetworkError = exports.RateLimitError = exports.NotFoundError = exports.ValidationError = exports.AuthError = exports.APIError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Base API Error class
|
|
6
|
+
*/
|
|
7
|
+
class APIError extends Error {
|
|
8
|
+
constructor(message, statusCode, response) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.statusCode = statusCode;
|
|
11
|
+
this.response = response;
|
|
12
|
+
this.name = 'APIError';
|
|
13
|
+
Error.captureStackTrace(this, this.constructor);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.APIError = APIError;
|
|
17
|
+
/**
|
|
18
|
+
* Authentication/Authorization errors (401, 403)
|
|
19
|
+
*/
|
|
20
|
+
class AuthError extends APIError {
|
|
21
|
+
constructor(message, statusCode, response) {
|
|
22
|
+
super(message, statusCode, response);
|
|
23
|
+
this.name = 'AuthError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.AuthError = AuthError;
|
|
27
|
+
/**
|
|
28
|
+
* Validation errors (400, 422)
|
|
29
|
+
*/
|
|
30
|
+
class ValidationError extends APIError {
|
|
31
|
+
constructor(message, errors, statusCode, response) {
|
|
32
|
+
super(message, statusCode, response);
|
|
33
|
+
this.errors = errors;
|
|
34
|
+
this.name = 'ValidationError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.ValidationError = ValidationError;
|
|
38
|
+
/**
|
|
39
|
+
* Not Found errors (404)
|
|
40
|
+
*/
|
|
41
|
+
class NotFoundError extends APIError {
|
|
42
|
+
constructor(message, response) {
|
|
43
|
+
super(message, 404, response);
|
|
44
|
+
this.name = 'NotFoundError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.NotFoundError = NotFoundError;
|
|
48
|
+
/**
|
|
49
|
+
* Rate Limit errors (429)
|
|
50
|
+
*/
|
|
51
|
+
class RateLimitError extends APIError {
|
|
52
|
+
constructor(message, retryAfter, response) {
|
|
53
|
+
super(message, 429, response);
|
|
54
|
+
this.retryAfter = retryAfter;
|
|
55
|
+
this.name = 'RateLimitError';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.RateLimitError = RateLimitError;
|
|
59
|
+
/**
|
|
60
|
+
* Network/Connection errors
|
|
61
|
+
*/
|
|
62
|
+
class NetworkError extends APIError {
|
|
63
|
+
constructor(message, originalError) {
|
|
64
|
+
super(message);
|
|
65
|
+
this.originalError = originalError;
|
|
66
|
+
this.name = 'NetworkError';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.NetworkError = NetworkError;
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IACjC,YACE,OAAe,EACR,UAAmB,EACnB,QAAc;QAErB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,eAAU,GAAV,UAAU,CAAS;QACnB,aAAQ,GAAR,QAAQ,CAAM;QAGrB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAVD,4BAUC;AAED;;GAEG;AACH,MAAa,SAAU,SAAQ,QAAQ;IACrC,YAAY,OAAe,EAAE,UAAmB,EAAE,QAAc;QAC9D,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AALD,8BAKC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,YACE,OAAe,EACR,MAAiC,EACxC,UAAmB,EACnB,QAAc;QAEd,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAJ9B,WAAM,GAAN,MAAM,CAA2B;QAKxC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAVD,0CAUC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,QAAQ;IACzC,YAAY,OAAe,EAAE,QAAc;QACzC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,OAAe,EACR,UAAmB,EAC1B,QAAc;QAEd,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAHvB,eAAU,GAAV,UAAU,CAAS;QAI1B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AATD,wCASC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe,EAAS,aAAqB;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAQ;QAEvD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
|
|
2
|
+
export interface HTTPClientConfig {
|
|
3
|
+
baseURL: string;
|
|
4
|
+
timeout?: number;
|
|
5
|
+
headers?: Record<string, string>;
|
|
6
|
+
onRequest?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;
|
|
7
|
+
onResponse?: (response: AxiosResponse) => AxiosResponse | Promise<AxiosResponse>;
|
|
8
|
+
onError?: (error: any) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* HTTP Client wrapper around axios with error handling
|
|
12
|
+
*/
|
|
13
|
+
export declare class HTTPClient {
|
|
14
|
+
private client;
|
|
15
|
+
private config;
|
|
16
|
+
constructor(config: HTTPClientConfig);
|
|
17
|
+
private setupInterceptors;
|
|
18
|
+
private handleError;
|
|
19
|
+
/**
|
|
20
|
+
* Set authorization header (JWT or API Token)
|
|
21
|
+
*/
|
|
22
|
+
setAuth(token: string, type?: 'jwt' | 'apiToken'): void;
|
|
23
|
+
/**
|
|
24
|
+
* Clear authorization header
|
|
25
|
+
*/
|
|
26
|
+
clearAuth(): void;
|
|
27
|
+
/**
|
|
28
|
+
* GET request
|
|
29
|
+
*/
|
|
30
|
+
get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* POST request
|
|
33
|
+
*/
|
|
34
|
+
post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
|
|
35
|
+
/**
|
|
36
|
+
* PUT request
|
|
37
|
+
*/
|
|
38
|
+
put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
|
|
39
|
+
/**
|
|
40
|
+
* PATCH request
|
|
41
|
+
*/
|
|
42
|
+
patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
|
|
43
|
+
/**
|
|
44
|
+
* DELETE request
|
|
45
|
+
*/
|
|
46
|
+
delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,aAAa,EAAc,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAUxH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACrH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACjF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAcpC,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,WAAW;IA0CnB;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,KAAK,GAAG,UAAkB,GAAG,IAAI;IAQ9D;;OAEG;IACH,SAAS,IAAI,IAAI;IAKjB;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKxE;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKrF;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKpF;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKtF;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;CAI5E"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HTTPClient = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
/**
|
|
10
|
+
* HTTP Client wrapper around axios with error handling
|
|
11
|
+
*/
|
|
12
|
+
class HTTPClient {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.client = axios_1.default.create({
|
|
16
|
+
baseURL: config.baseURL,
|
|
17
|
+
timeout: config.timeout || 30000,
|
|
18
|
+
headers: {
|
|
19
|
+
'Content-Type': 'application/json',
|
|
20
|
+
...config.headers,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
this.setupInterceptors();
|
|
24
|
+
}
|
|
25
|
+
setupInterceptors() {
|
|
26
|
+
// Request interceptor
|
|
27
|
+
this.client.interceptors.request.use(async (config) => {
|
|
28
|
+
if (this.config.onRequest) {
|
|
29
|
+
return await this.config.onRequest(config);
|
|
30
|
+
}
|
|
31
|
+
return config;
|
|
32
|
+
}, (error) => Promise.reject(error));
|
|
33
|
+
// Response interceptor
|
|
34
|
+
this.client.interceptors.response.use(async (response) => {
|
|
35
|
+
if (this.config.onResponse) {
|
|
36
|
+
return await this.config.onResponse(response);
|
|
37
|
+
}
|
|
38
|
+
return response;
|
|
39
|
+
}, async (error) => {
|
|
40
|
+
const handledError = this.handleError(error);
|
|
41
|
+
if (this.config.onError) {
|
|
42
|
+
this.config.onError(handledError);
|
|
43
|
+
}
|
|
44
|
+
return Promise.reject(handledError);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
handleError(error) {
|
|
48
|
+
// Network errors (no response)
|
|
49
|
+
if (!error.response) {
|
|
50
|
+
return new errors_1.NetworkError(error.message || 'Network error occurred', error);
|
|
51
|
+
}
|
|
52
|
+
const { status, data } = error.response;
|
|
53
|
+
const message = data?.message || error.message || 'An error occurred';
|
|
54
|
+
// Map HTTP status codes to custom errors
|
|
55
|
+
switch (status) {
|
|
56
|
+
case 400:
|
|
57
|
+
case 422:
|
|
58
|
+
return new errors_1.ValidationError(message, data?.errors, status, data);
|
|
59
|
+
case 401:
|
|
60
|
+
case 403:
|
|
61
|
+
return new errors_1.AuthError(message, status, data);
|
|
62
|
+
case 404:
|
|
63
|
+
return new errors_1.NotFoundError(message, data);
|
|
64
|
+
case 429:
|
|
65
|
+
return new errors_1.RateLimitError(message, parseInt(error.response.headers?.['retry-after'] || '60'), data);
|
|
66
|
+
default:
|
|
67
|
+
return new errors_1.APIError(message, status, data);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set authorization header (JWT or API Token)
|
|
72
|
+
*/
|
|
73
|
+
setAuth(token, type = 'jwt') {
|
|
74
|
+
if (type === 'jwt') {
|
|
75
|
+
this.client.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.client.defaults.headers.common['x-api-key'] = token;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Clear authorization header
|
|
83
|
+
*/
|
|
84
|
+
clearAuth() {
|
|
85
|
+
delete this.client.defaults.headers.common['Authorization'];
|
|
86
|
+
delete this.client.defaults.headers.common['x-api-key'];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* GET request
|
|
90
|
+
*/
|
|
91
|
+
async get(url, config) {
|
|
92
|
+
const response = await this.client.get(url, config);
|
|
93
|
+
return response.data;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* POST request
|
|
97
|
+
*/
|
|
98
|
+
async post(url, data, config) {
|
|
99
|
+
const response = await this.client.post(url, data, config);
|
|
100
|
+
return response.data;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* PUT request
|
|
104
|
+
*/
|
|
105
|
+
async put(url, data, config) {
|
|
106
|
+
const response = await this.client.put(url, data, config);
|
|
107
|
+
return response.data;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* PATCH request
|
|
111
|
+
*/
|
|
112
|
+
async patch(url, data, config) {
|
|
113
|
+
const response = await this.client.patch(url, data, config);
|
|
114
|
+
return response.data;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* DELETE request
|
|
118
|
+
*/
|
|
119
|
+
async delete(url, config) {
|
|
120
|
+
const response = await this.client.delete(url, config);
|
|
121
|
+
return response.data;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.HTTPClient = HTTPClient;
|
|
125
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @wpp/sdk - TypeScript SDK for WhatsApp Multi-tenant API
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { WhatsAppAPIClient } from '@wpp/sdk';
|
|
7
|
+
*
|
|
8
|
+
* const client = new WhatsAppAPIClient({
|
|
9
|
+
* baseURL: 'https://api.example.com',
|
|
10
|
+
* auth: { type: 'apiToken', token: 'wpp_live_xxx' }
|
|
11
|
+
* });
|
|
12
|
+
*
|
|
13
|
+
* await client.whatsapp.connect();
|
|
14
|
+
* await client.whatsapp.send({
|
|
15
|
+
* jid: '5511999999999@s.whatsapp.net',
|
|
16
|
+
* text: 'Hello from SDK!'
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export { WhatsAppAPIClient, WhatsAppAPIClientConfig } from './client';
|
|
21
|
+
export * from './types';
|
|
22
|
+
export * from './errors';
|
|
23
|
+
export { AuthResource } from './resources/auth';
|
|
24
|
+
export { UsersResource } from './resources/users';
|
|
25
|
+
export { TenantsResource } from './resources/tenants';
|
|
26
|
+
export { ApiTokensResource } from './resources/apiTokens';
|
|
27
|
+
export { WhatsAppResource } from './resources/whatsapp';
|
|
28
|
+
export { WhatsAppAdminResource } from './resources/whatsappAdmin';
|
|
29
|
+
export { WebhooksResource } from './resources/webhooks';
|
|
30
|
+
export { BrandingResource } from './resources/branding';
|
|
31
|
+
export { HealthResource } from './resources/health';
|
|
32
|
+
export { HTTPClient, HTTPClientConfig } from './http/client';
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGtE,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @wpp/sdk - TypeScript SDK for WhatsApp Multi-tenant API
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { WhatsAppAPIClient } from '@wpp/sdk';
|
|
8
|
+
*
|
|
9
|
+
* const client = new WhatsAppAPIClient({
|
|
10
|
+
* baseURL: 'https://api.example.com',
|
|
11
|
+
* auth: { type: 'apiToken', token: 'wpp_live_xxx' }
|
|
12
|
+
* });
|
|
13
|
+
*
|
|
14
|
+
* await client.whatsapp.connect();
|
|
15
|
+
* await client.whatsapp.send({
|
|
16
|
+
* jid: '5511999999999@s.whatsapp.net',
|
|
17
|
+
* text: 'Hello from SDK!'
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
33
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.HTTPClient = exports.HealthResource = exports.BrandingResource = exports.WebhooksResource = exports.WhatsAppAdminResource = exports.WhatsAppResource = exports.ApiTokensResource = exports.TenantsResource = exports.UsersResource = exports.AuthResource = exports.WhatsAppAPIClient = void 0;
|
|
37
|
+
// Export main client
|
|
38
|
+
var client_1 = require("./client");
|
|
39
|
+
Object.defineProperty(exports, "WhatsAppAPIClient", { enumerable: true, get: function () { return client_1.WhatsAppAPIClient; } });
|
|
40
|
+
// Export all types
|
|
41
|
+
__exportStar(require("./types"), exports);
|
|
42
|
+
// Export errors
|
|
43
|
+
__exportStar(require("./errors"), exports);
|
|
44
|
+
// Export resources (for advanced use cases)
|
|
45
|
+
var auth_1 = require("./resources/auth");
|
|
46
|
+
Object.defineProperty(exports, "AuthResource", { enumerable: true, get: function () { return auth_1.AuthResource; } });
|
|
47
|
+
var users_1 = require("./resources/users");
|
|
48
|
+
Object.defineProperty(exports, "UsersResource", { enumerable: true, get: function () { return users_1.UsersResource; } });
|
|
49
|
+
var tenants_1 = require("./resources/tenants");
|
|
50
|
+
Object.defineProperty(exports, "TenantsResource", { enumerable: true, get: function () { return tenants_1.TenantsResource; } });
|
|
51
|
+
var apiTokens_1 = require("./resources/apiTokens");
|
|
52
|
+
Object.defineProperty(exports, "ApiTokensResource", { enumerable: true, get: function () { return apiTokens_1.ApiTokensResource; } });
|
|
53
|
+
var whatsapp_1 = require("./resources/whatsapp");
|
|
54
|
+
Object.defineProperty(exports, "WhatsAppResource", { enumerable: true, get: function () { return whatsapp_1.WhatsAppResource; } });
|
|
55
|
+
var whatsappAdmin_1 = require("./resources/whatsappAdmin");
|
|
56
|
+
Object.defineProperty(exports, "WhatsAppAdminResource", { enumerable: true, get: function () { return whatsappAdmin_1.WhatsAppAdminResource; } });
|
|
57
|
+
var webhooks_1 = require("./resources/webhooks");
|
|
58
|
+
Object.defineProperty(exports, "WebhooksResource", { enumerable: true, get: function () { return webhooks_1.WebhooksResource; } });
|
|
59
|
+
var branding_1 = require("./resources/branding");
|
|
60
|
+
Object.defineProperty(exports, "BrandingResource", { enumerable: true, get: function () { return branding_1.BrandingResource; } });
|
|
61
|
+
var health_1 = require("./resources/health");
|
|
62
|
+
Object.defineProperty(exports, "HealthResource", { enumerable: true, get: function () { return health_1.HealthResource; } });
|
|
63
|
+
// Export HTTP client (for advanced use cases)
|
|
64
|
+
var client_2 = require("./http/client");
|
|
65
|
+
Object.defineProperty(exports, "HTTPClient", { enumerable: true, get: function () { return client_2.HTTPClient; } });
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;;AAEH,qBAAqB;AACrB,mCAAsE;AAA7D,2GAAA,iBAAiB,OAAA;AAE1B,mBAAmB;AACnB,0CAAwB;AAExB,gBAAgB;AAChB,2CAAyB;AAEzB,4CAA4C;AAC5C,yCAAgD;AAAvC,oGAAA,YAAY,OAAA;AACrB,2CAAkD;AAAzC,sGAAA,aAAa,OAAA;AACtB,+CAAsD;AAA7C,0GAAA,eAAe,OAAA;AACxB,mDAA0D;AAAjD,8GAAA,iBAAiB,OAAA;AAC1B,iDAAwD;AAA/C,4GAAA,gBAAgB,OAAA;AACzB,2DAAkE;AAAzD,sHAAA,qBAAqB,OAAA;AAC9B,iDAAwD;AAA/C,4GAAA,gBAAgB,OAAA;AACzB,iDAAwD;AAA/C,4GAAA,gBAAgB,OAAA;AACzB,6CAAoD;AAA3C,wGAAA,cAAc,OAAA;AAEvB,8CAA8C;AAC9C,wCAA6D;AAApD,oGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { HTTPClient } from '../http/client';
|
|
2
|
+
import { APIToken, CreateAPITokenRequest } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* API Token management resource (admin only)
|
|
5
|
+
* Requires JWT authentication with admin role
|
|
6
|
+
*/
|
|
7
|
+
export declare class ApiTokensResource {
|
|
8
|
+
private http;
|
|
9
|
+
constructor(http: HTTPClient);
|
|
10
|
+
/**
|
|
11
|
+
* List all API tokens for a tenant
|
|
12
|
+
* @param tenantId Tenant ID
|
|
13
|
+
*/
|
|
14
|
+
list(tenantId: string): Promise<APIToken[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Create new API token for tenant
|
|
17
|
+
* @param tenantId Tenant ID
|
|
18
|
+
* @param data Token configuration
|
|
19
|
+
* @returns Token with secret key (only shown once - store securely!)
|
|
20
|
+
*/
|
|
21
|
+
create(tenantId: string, data?: CreateAPITokenRequest): Promise<APIToken>;
|
|
22
|
+
/**
|
|
23
|
+
* Revoke/delete API token
|
|
24
|
+
* @param tenantId Tenant ID
|
|
25
|
+
* @param tokenId Token ID to delete
|
|
26
|
+
*/
|
|
27
|
+
delete(tenantId: string, tokenId: string): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=apiTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiTokens.d.ts","sourceRoot":"","sources":["../../src/resources/apiTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAE3D;;;GAGG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;OAGG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjD;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,QAAQ,CAAC;IAInF;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiTokensResource = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* API Token management resource (admin only)
|
|
6
|
+
* Requires JWT authentication with admin role
|
|
7
|
+
*/
|
|
8
|
+
class ApiTokensResource {
|
|
9
|
+
constructor(http) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* List all API tokens for a tenant
|
|
14
|
+
* @param tenantId Tenant ID
|
|
15
|
+
*/
|
|
16
|
+
async list(tenantId) {
|
|
17
|
+
return this.http.get(`/admin/tenants/${tenantId}/tokens`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create new API token for tenant
|
|
21
|
+
* @param tenantId Tenant ID
|
|
22
|
+
* @param data Token configuration
|
|
23
|
+
* @returns Token with secret key (only shown once - store securely!)
|
|
24
|
+
*/
|
|
25
|
+
async create(tenantId, data = {}) {
|
|
26
|
+
return this.http.post(`/admin/tenants/${tenantId}/tokens`, data);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Revoke/delete API token
|
|
30
|
+
* @param tenantId Tenant ID
|
|
31
|
+
* @param tokenId Token ID to delete
|
|
32
|
+
*/
|
|
33
|
+
async delete(tenantId, tokenId) {
|
|
34
|
+
await this.http.delete(`/admin/tenants/${tenantId}/tokens/${tokenId}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.ApiTokensResource = ApiTokensResource;
|
|
38
|
+
//# sourceMappingURL=apiTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiTokens.js","sourceRoot":"","sources":["../../src/resources/apiTokens.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,iBAAiB;IAC5B,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,kBAAkB,QAAQ,SAAS,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAA8B,EAAE;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,kBAAkB,QAAQ,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAe;QAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,QAAQ,WAAW,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;CACF;AA7BD,8CA6BC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { HTTPClient } from '../http/client';
|
|
2
|
+
import { LoginResponse, CurrentUserResponse } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Authentication resource
|
|
5
|
+
* Handles login, password reset, and current user
|
|
6
|
+
*/
|
|
7
|
+
export declare class AuthResource {
|
|
8
|
+
private http;
|
|
9
|
+
constructor(http: HTTPClient);
|
|
10
|
+
/**
|
|
11
|
+
* Login with email and password
|
|
12
|
+
* @returns JWT token and user info
|
|
13
|
+
*/
|
|
14
|
+
login(email: string, password: string): Promise<LoginResponse>;
|
|
15
|
+
/**
|
|
16
|
+
* Request password reset email
|
|
17
|
+
*/
|
|
18
|
+
forgotPassword(email: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Reset password with token from email
|
|
21
|
+
*/
|
|
22
|
+
resetPassword(token: string, newPassword: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Get current user info and refresh token
|
|
25
|
+
* Requires JWT authentication
|
|
26
|
+
*/
|
|
27
|
+
me(): Promise<CurrentUserResponse>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAEL,aAAa,EAGb,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;OAGG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKpE;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;OAGG;IACG,EAAE,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAGzC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthResource = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Authentication resource
|
|
6
|
+
* Handles login, password reset, and current user
|
|
7
|
+
*/
|
|
8
|
+
class AuthResource {
|
|
9
|
+
constructor(http) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Login with email and password
|
|
14
|
+
* @returns JWT token and user info
|
|
15
|
+
*/
|
|
16
|
+
async login(email, password) {
|
|
17
|
+
const data = { email, password };
|
|
18
|
+
return this.http.post('/auth/login', data);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Request password reset email
|
|
22
|
+
*/
|
|
23
|
+
async forgotPassword(email) {
|
|
24
|
+
const data = { email };
|
|
25
|
+
await this.http.post('/auth/forgot-password', data);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reset password with token from email
|
|
29
|
+
*/
|
|
30
|
+
async resetPassword(token, newPassword) {
|
|
31
|
+
const data = { token, newPassword };
|
|
32
|
+
await this.http.post('/auth/reset-password', data);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get current user info and refresh token
|
|
36
|
+
* Requires JWT authentication
|
|
37
|
+
*/
|
|
38
|
+
async me() {
|
|
39
|
+
return this.http.get('/auth/me');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.AuthResource = AuthResource;
|
|
43
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":";;;AASA;;;GAGG;AACH,MAAa,YAAY;IACvB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAgB;QACzC,MAAM,IAAI,GAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,aAAa,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,MAAM,IAAI,GAA0B,EAAE,KAAK,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,WAAmB;QACpD,MAAM,IAAI,GAAyB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,UAAU,CAAC,CAAC;IACxD,CAAC;CACF;AAnCD,oCAmCC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { HTTPClient } from '../http/client';
|
|
2
|
+
import { Branding, UpdateBrandingRequest } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Branding resource
|
|
5
|
+
* Customize public-facing pages (QR code pages, etc.)
|
|
6
|
+
*/
|
|
7
|
+
export declare class BrandingResource {
|
|
8
|
+
private http;
|
|
9
|
+
constructor(http: HTTPClient);
|
|
10
|
+
/**
|
|
11
|
+
* Get branding configuration for a tenant (public endpoint)
|
|
12
|
+
* @param tenantId Tenant ID
|
|
13
|
+
*/
|
|
14
|
+
get(tenantId: string): Promise<Branding>;
|
|
15
|
+
/**
|
|
16
|
+
* Update branding configuration (admin only)
|
|
17
|
+
* Requires JWT authentication with admin role
|
|
18
|
+
*/
|
|
19
|
+
update(data: UpdateBrandingRequest): Promise<Branding>;
|
|
20
|
+
/**
|
|
21
|
+
* Delete tenant branding (revert to defaults) (admin only)
|
|
22
|
+
* Requires JWT authentication with admin role
|
|
23
|
+
* @param tenantId Tenant ID
|
|
24
|
+
*/
|
|
25
|
+
delete(tenantId: string): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=branding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../../src/resources/branding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAE3D;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;OAGG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI9C;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI5D;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrandingResource = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Branding resource
|
|
6
|
+
* Customize public-facing pages (QR code pages, etc.)
|
|
7
|
+
*/
|
|
8
|
+
class BrandingResource {
|
|
9
|
+
constructor(http) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get branding configuration for a tenant (public endpoint)
|
|
14
|
+
* @param tenantId Tenant ID
|
|
15
|
+
*/
|
|
16
|
+
async get(tenantId) {
|
|
17
|
+
return this.http.get(`/branding?tenantId=${tenantId}`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Update branding configuration (admin only)
|
|
21
|
+
* Requires JWT authentication with admin role
|
|
22
|
+
*/
|
|
23
|
+
async update(data) {
|
|
24
|
+
return this.http.post('/admin/branding', data);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Delete tenant branding (revert to defaults) (admin only)
|
|
28
|
+
* Requires JWT authentication with admin role
|
|
29
|
+
* @param tenantId Tenant ID
|
|
30
|
+
*/
|
|
31
|
+
async delete(tenantId) {
|
|
32
|
+
await this.http.delete(`/admin/branding/${tenantId}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.BrandingResource = BrandingResource;
|
|
36
|
+
//# sourceMappingURL=branding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/resources/branding.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,gBAAgB;IAC3B,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,IAA2B;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AA3BD,4CA2BC"}
|