@meowpanel/api 0.3.0 → 0.5.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/esm/mod.d.ts +37 -16
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +25 -7
- package/esm/src/client.d.ts +48 -11
- package/esm/src/client.d.ts.map +1 -1
- package/esm/src/client.js +53 -12
- package/esm/src/http.d.ts +2 -2
- package/esm/src/http.d.ts.map +1 -1
- package/esm/src/http.js +5 -2
- package/esm/src/namespace.d.ts +1 -1
- package/esm/src/namespace.js +1 -1
- package/esm/src/resources/account.d.ts +50 -19
- package/esm/src/resources/account.d.ts.map +1 -1
- package/esm/src/resources/account.js +51 -13
- package/esm/src/resources/api-keys.d.ts +16 -24
- package/esm/src/resources/api-keys.d.ts.map +1 -1
- package/esm/src/resources/api-keys.js +16 -20
- package/esm/src/resources/auth.d.ts +70 -4
- package/esm/src/resources/auth.d.ts.map +1 -1
- package/esm/src/resources/auth.js +47 -4
- package/esm/src/resources/eggs.d.ts +261 -22
- package/esm/src/resources/eggs.d.ts.map +1 -1
- package/esm/src/resources/eggs.js +261 -25
- package/esm/src/resources/features.d.ts +35 -0
- package/esm/src/resources/features.d.ts.map +1 -0
- package/esm/src/resources/features.js +21 -0
- package/esm/src/resources/hosts.d.ts +151 -21
- package/esm/src/resources/hosts.d.ts.map +1 -1
- package/esm/src/resources/hosts.js +143 -10
- package/esm/src/resources/logs.d.ts +39 -0
- package/esm/src/resources/logs.d.ts.map +1 -0
- package/esm/src/resources/logs.js +38 -0
- package/esm/src/resources/nodes.d.ts +108 -33
- package/esm/src/resources/nodes.d.ts.map +1 -1
- package/esm/src/resources/nodes.js +116 -24
- package/esm/src/resources/permissions.d.ts +45 -0
- package/esm/src/resources/permissions.d.ts.map +1 -0
- package/esm/src/resources/permissions.js +26 -0
- package/esm/src/resources/request-logs.d.ts +91 -0
- package/esm/src/resources/request-logs.d.ts.map +1 -0
- package/esm/src/resources/request-logs.js +70 -0
- package/esm/src/resources/roles.d.ts +128 -0
- package/esm/src/resources/roles.d.ts.map +1 -0
- package/esm/src/resources/roles.js +142 -0
- package/esm/src/resources/server-groups.d.ts +141 -7
- package/esm/src/resources/server-groups.d.ts.map +1 -1
- package/esm/src/resources/server-groups.js +157 -8
- package/esm/src/resources/servers/activity.d.ts +50 -8
- package/esm/src/resources/servers/activity.d.ts.map +1 -1
- package/esm/src/resources/servers/activity.js +54 -13
- package/esm/src/resources/servers/allocations.d.ts +3 -3
- package/esm/src/resources/servers/allocations.d.ts.map +1 -1
- package/esm/src/resources/servers/allocations.js +7 -7
- package/esm/src/resources/servers/backups.d.ts +46 -0
- package/esm/src/resources/servers/backups.d.ts.map +1 -0
- package/esm/src/resources/servers/backups.js +43 -0
- package/esm/src/resources/servers/connection.d.ts +33 -13
- package/esm/src/resources/servers/connection.d.ts.map +1 -1
- package/esm/src/resources/servers/connection.js +32 -11
- package/esm/src/resources/servers/features.d.ts +81 -0
- package/esm/src/resources/servers/features.d.ts.map +1 -0
- package/esm/src/resources/servers/features.js +60 -0
- package/esm/src/resources/servers/files.d.ts +41 -53
- package/esm/src/resources/servers/files.d.ts.map +1 -1
- package/esm/src/resources/servers/files.js +74 -116
- package/esm/src/resources/servers/index.d.ts +46 -27
- package/esm/src/resources/servers/index.d.ts.map +1 -1
- package/esm/src/resources/servers/index.js +26 -12
- package/esm/src/resources/servers/jobs.d.ts +88 -0
- package/esm/src/resources/servers/jobs.d.ts.map +1 -0
- package/esm/src/resources/servers/jobs.js +115 -0
- package/esm/src/resources/servers/node-client.d.ts +33 -0
- package/esm/src/resources/servers/node-client.d.ts.map +1 -0
- package/esm/src/resources/servers/node-client.js +61 -0
- package/esm/src/resources/servers/profiles.d.ts +83 -18
- package/esm/src/resources/servers/profiles.d.ts.map +1 -1
- package/esm/src/resources/servers/profiles.js +78 -11
- package/esm/src/resources/servers/server.d.ts +13 -28
- package/esm/src/resources/servers/server.d.ts.map +1 -1
- package/esm/src/resources/servers/server.js +21 -37
- package/esm/src/resources/servers/sftp.d.ts +12 -19
- package/esm/src/resources/servers/sftp.d.ts.map +1 -1
- package/esm/src/resources/servers/sftp.js +10 -14
- package/esm/src/resources/servers/sub-users.d.ts +99 -0
- package/esm/src/resources/servers/sub-users.d.ts.map +1 -0
- package/esm/src/resources/servers/sub-users.js +94 -0
- package/esm/src/resources/servers/types.d.ts +30 -28
- package/esm/src/resources/servers/types.d.ts.map +1 -1
- package/esm/src/resources/systems.d.ts +124 -0
- package/esm/src/resources/systems.d.ts.map +1 -0
- package/esm/src/resources/systems.js +139 -0
- package/esm/src/resources/users.d.ts +330 -0
- package/esm/src/resources/users.d.ts.map +1 -0
- package/esm/src/resources/users.js +280 -0
- package/esm/src/types.d.ts +18 -1
- package/esm/src/types.d.ts.map +1 -1
- package/esm/src/types.js +11 -0
- package/package.json +1 -1
- package/script/mod.d.ts +37 -16
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +50 -5
- package/script/src/client.d.ts +48 -11
- package/script/src/client.d.ts.map +1 -1
- package/script/src/client.js +53 -12
- package/script/src/http.d.ts +2 -2
- package/script/src/http.d.ts.map +1 -1
- package/script/src/http.js +5 -2
- package/script/src/namespace.d.ts +1 -1
- package/script/src/namespace.js +1 -1
- package/script/src/resources/account.d.ts +50 -19
- package/script/src/resources/account.d.ts.map +1 -1
- package/script/src/resources/account.js +50 -12
- package/script/src/resources/api-keys.d.ts +16 -24
- package/script/src/resources/api-keys.d.ts.map +1 -1
- package/script/src/resources/api-keys.js +15 -19
- package/script/src/resources/auth.d.ts +70 -4
- package/script/src/resources/auth.d.ts.map +1 -1
- package/script/src/resources/auth.js +47 -4
- package/script/src/resources/eggs.d.ts +261 -22
- package/script/src/resources/eggs.d.ts.map +1 -1
- package/script/src/resources/eggs.js +267 -26
- package/script/src/resources/features.d.ts +35 -0
- package/script/src/resources/features.d.ts.map +1 -0
- package/script/src/resources/features.js +25 -0
- package/script/src/resources/hosts.d.ts +151 -21
- package/script/src/resources/hosts.d.ts.map +1 -1
- package/script/src/resources/hosts.js +144 -10
- package/script/src/resources/logs.d.ts +39 -0
- package/script/src/resources/logs.d.ts.map +1 -0
- package/script/src/resources/logs.js +42 -0
- package/script/src/resources/nodes.d.ts +108 -33
- package/script/src/resources/nodes.d.ts.map +1 -1
- package/script/src/resources/nodes.js +117 -24
- package/script/src/resources/permissions.d.ts +45 -0
- package/script/src/resources/permissions.d.ts.map +1 -0
- package/script/src/resources/permissions.js +31 -0
- package/script/src/resources/request-logs.d.ts +91 -0
- package/script/src/resources/request-logs.d.ts.map +1 -0
- package/script/src/resources/request-logs.js +75 -0
- package/script/src/resources/roles.d.ts +128 -0
- package/script/src/resources/roles.d.ts.map +1 -0
- package/script/src/resources/roles.js +148 -0
- package/script/src/resources/server-groups.d.ts +141 -7
- package/script/src/resources/server-groups.d.ts.map +1 -1
- package/script/src/resources/server-groups.js +158 -8
- package/script/src/resources/servers/activity.d.ts +50 -8
- package/script/src/resources/servers/activity.d.ts.map +1 -1
- package/script/src/resources/servers/activity.js +54 -12
- package/script/src/resources/servers/allocations.d.ts +3 -3
- package/script/src/resources/servers/allocations.d.ts.map +1 -1
- package/script/src/resources/servers/allocations.js +7 -7
- package/script/src/resources/servers/backups.d.ts +46 -0
- package/script/src/resources/servers/backups.d.ts.map +1 -0
- package/script/src/resources/servers/backups.js +47 -0
- package/script/src/resources/servers/connection.d.ts +33 -13
- package/script/src/resources/servers/connection.d.ts.map +1 -1
- package/script/src/resources/servers/connection.js +32 -11
- package/script/src/resources/servers/features.d.ts +81 -0
- package/script/src/resources/servers/features.d.ts.map +1 -0
- package/script/src/resources/servers/features.js +64 -0
- package/script/src/resources/servers/files.d.ts +41 -53
- package/script/src/resources/servers/files.d.ts.map +1 -1
- package/script/src/resources/servers/files.js +74 -116
- package/script/src/resources/servers/index.d.ts +46 -27
- package/script/src/resources/servers/index.d.ts.map +1 -1
- package/script/src/resources/servers/index.js +26 -12
- package/script/src/resources/servers/jobs.d.ts +88 -0
- package/script/src/resources/servers/jobs.d.ts.map +1 -0
- package/script/src/resources/servers/jobs.js +120 -0
- package/script/src/resources/servers/node-client.d.ts +33 -0
- package/script/src/resources/servers/node-client.d.ts.map +1 -0
- package/script/src/resources/servers/node-client.js +65 -0
- package/script/src/resources/servers/profiles.d.ts +83 -18
- package/script/src/resources/servers/profiles.d.ts.map +1 -1
- package/script/src/resources/servers/profiles.js +77 -10
- package/script/src/resources/servers/server.d.ts +13 -28
- package/script/src/resources/servers/server.d.ts.map +1 -1
- package/script/src/resources/servers/server.js +21 -37
- package/script/src/resources/servers/sftp.d.ts +12 -19
- package/script/src/resources/servers/sftp.d.ts.map +1 -1
- package/script/src/resources/servers/sftp.js +10 -14
- package/script/src/resources/servers/sub-users.d.ts +99 -0
- package/script/src/resources/servers/sub-users.d.ts.map +1 -0
- package/script/src/resources/servers/sub-users.js +99 -0
- package/script/src/resources/servers/types.d.ts +30 -28
- package/script/src/resources/servers/types.d.ts.map +1 -1
- package/script/src/resources/systems.d.ts +124 -0
- package/script/src/resources/systems.d.ts.map +1 -0
- package/script/src/resources/systems.js +145 -0
- package/script/src/resources/users.d.ts +330 -0
- package/script/src/resources/users.d.ts.map +1 -0
- package/script/src/resources/users.js +287 -0
- package/script/src/types.d.ts +18 -1
- package/script/src/types.d.ts.map +1 -1
- package/script/src/types.js +12 -0
- package/esm/src/resources/members.d.ts +0 -138
- package/esm/src/resources/members.d.ts.map +0 -1
- package/esm/src/resources/members.js +0 -122
- package/script/src/resources/members.d.ts +0 -138
- package/script/src/resources/members.d.ts.map +0 -1
- package/script/src/resources/members.js +0 -127
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SystemsNamespace = exports.SystemKeysManager = exports.System = void 0;
|
|
4
|
+
const namespace_js_1 = require("../namespace.js");
|
|
5
|
+
const reactive_js_1 = require("../reactive.js");
|
|
6
|
+
const types_js_1 = require("../types.js");
|
|
7
|
+
const api_keys_js_1 = require("./api-keys.js");
|
|
8
|
+
/**
|
|
9
|
+
* A non-user identity (bootstrap or automation) that owns API keys.
|
|
10
|
+
*
|
|
11
|
+
* API keys owned by a system inherit the system's permissions.
|
|
12
|
+
*
|
|
13
|
+
* Retrieved via {@link SystemsNamespace.get} or {@link SystemsNamespace.list}.
|
|
14
|
+
*/
|
|
15
|
+
class System extends reactive_js_1.ReactiveResource {
|
|
16
|
+
/** The system's unique NanoID. */
|
|
17
|
+
id;
|
|
18
|
+
/** Display name. */
|
|
19
|
+
name;
|
|
20
|
+
/** Optional description. */
|
|
21
|
+
description;
|
|
22
|
+
/** The system's permission scopes. Requires `?include=permissions`. */
|
|
23
|
+
permissions;
|
|
24
|
+
/** When this system was created. */
|
|
25
|
+
createdAt;
|
|
26
|
+
/** When this system was last updated. */
|
|
27
|
+
updatedAt;
|
|
28
|
+
/** @internal */
|
|
29
|
+
constructor(data) {
|
|
30
|
+
super();
|
|
31
|
+
this.id = (0, types_js_1.toNanoID)(data.id);
|
|
32
|
+
this.applyData(data);
|
|
33
|
+
}
|
|
34
|
+
/** Apply raw API data to this system instance, updating all mutable fields. */
|
|
35
|
+
applyData(data) {
|
|
36
|
+
this.name = data.name;
|
|
37
|
+
this.description = data.description;
|
|
38
|
+
this.permissions = data.permissions;
|
|
39
|
+
this.createdAt = new Date(data.created_at);
|
|
40
|
+
this.updatedAt = new Date(data.updated_at);
|
|
41
|
+
this.notify();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.System = System;
|
|
45
|
+
/**
|
|
46
|
+
* Manages the API keys owned by a specific system.
|
|
47
|
+
*
|
|
48
|
+
* Access via `api.systems.keys(systemId)`.
|
|
49
|
+
*/
|
|
50
|
+
class SystemKeysManager {
|
|
51
|
+
systemId;
|
|
52
|
+
http;
|
|
53
|
+
/** @internal */
|
|
54
|
+
constructor(systemId, http) {
|
|
55
|
+
this.systemId = systemId;
|
|
56
|
+
this.http = http;
|
|
57
|
+
}
|
|
58
|
+
/** List the system's active API keys. */
|
|
59
|
+
async list() {
|
|
60
|
+
const data = await this.http.get(`/systems/${this.systemId}/api-keys`);
|
|
61
|
+
return data.map((d) => new api_keys_js_1.ApiKey(d));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create an API key owned by the system.
|
|
65
|
+
*
|
|
66
|
+
* The returned `token` is the only time the bearer token is available. Store it securely.
|
|
67
|
+
*/
|
|
68
|
+
async create(payload) {
|
|
69
|
+
const data = await this.http.post(`/systems/${this.systemId}/api-keys`, payload);
|
|
70
|
+
return { name: data.name, description: data.description, token: data.key };
|
|
71
|
+
}
|
|
72
|
+
/** Revoke a system API key. */
|
|
73
|
+
async revoke(keyId) {
|
|
74
|
+
await this.http.delete(`/systems/${this.systemId}/api-keys/${keyId}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.SystemKeysManager = SystemKeysManager;
|
|
78
|
+
/**
|
|
79
|
+
* Namespace for system (non-user identity) management.
|
|
80
|
+
*
|
|
81
|
+
* Access via `api.systems`.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts ignore
|
|
85
|
+
* const system = await api.systems.create({ name: 'CI deploy' });
|
|
86
|
+
* const { token } = await api.systems.keys(system.id).create({ name: 'pipeline', permissions: ['server.read'] });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
class SystemsNamespace extends namespace_js_1.ResourceNamespace {
|
|
90
|
+
/** @internal */
|
|
91
|
+
constructor(http) {
|
|
92
|
+
super(http);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Fetch a paginated list of systems.
|
|
96
|
+
*
|
|
97
|
+
* @param opts Pagination, search, and include options.
|
|
98
|
+
*/
|
|
99
|
+
async list(opts = {}) {
|
|
100
|
+
const extra = {};
|
|
101
|
+
const include = (0, types_js_1.joinIncludes)(opts);
|
|
102
|
+
if (include)
|
|
103
|
+
extra['include'] = include;
|
|
104
|
+
const result = await this.http.list('/systems', opts, extra);
|
|
105
|
+
const systems = result.data.map((d) => new System(d));
|
|
106
|
+
this.setCache(systems);
|
|
107
|
+
return { ...result, data: systems };
|
|
108
|
+
}
|
|
109
|
+
/** Fetch a single system by ID. */
|
|
110
|
+
async get(id, opts = {}) {
|
|
111
|
+
const params = {};
|
|
112
|
+
const include = (0, types_js_1.joinIncludes)(opts);
|
|
113
|
+
if (include)
|
|
114
|
+
params['include'] = include;
|
|
115
|
+
const data = await this.http.get(`/systems/${id}`, { params });
|
|
116
|
+
return new System(data);
|
|
117
|
+
}
|
|
118
|
+
/** Create a new system. */
|
|
119
|
+
async create(payload) {
|
|
120
|
+
const data = await this.http.post('/systems', payload);
|
|
121
|
+
const system = new System(data);
|
|
122
|
+
this.addToCache(system);
|
|
123
|
+
this.emit('created', system);
|
|
124
|
+
return system;
|
|
125
|
+
}
|
|
126
|
+
/** Update a system's name or description. */
|
|
127
|
+
async update(id, payload) {
|
|
128
|
+
const data = await this.http.patch(`/systems/${id}`, payload);
|
|
129
|
+
const system = new System(data);
|
|
130
|
+
this.upsertCache(system);
|
|
131
|
+
this.emit('updated', system);
|
|
132
|
+
return system;
|
|
133
|
+
}
|
|
134
|
+
/** Delete a system. Fails if it still owns active API keys. */
|
|
135
|
+
async delete(id) {
|
|
136
|
+
await this.http.delete(`/systems/${id}`);
|
|
137
|
+
this.removeFromCache(id);
|
|
138
|
+
this.emit('deleted', id);
|
|
139
|
+
}
|
|
140
|
+
/** Manage the API keys owned by a system. */
|
|
141
|
+
keys(systemId) {
|
|
142
|
+
return new SystemKeysManager(systemId, this.http);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.SystemsNamespace = SystemsNamespace;
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import { ResourceNamespace } from '../namespace.js';
|
|
3
|
+
import { ReactiveResource } from '../reactive.js';
|
|
4
|
+
import type { IncludeOptions, ResourceColor, ResourceWith } from '../types.js';
|
|
5
|
+
import { type ISODate, type NanoID, type Paginated } from '../types.js';
|
|
6
|
+
import { type PermissionGrant, type PermissionGrantInput } from './permissions.js';
|
|
7
|
+
/** A UI theme preference. */
|
|
8
|
+
export type UiTheme = 'system' | 'dark' | 'light';
|
|
9
|
+
/** Raw API shape for a user's preferences. @internal */
|
|
10
|
+
export interface UserPreferencesData {
|
|
11
|
+
theme: UiTheme;
|
|
12
|
+
language: string | null;
|
|
13
|
+
}
|
|
14
|
+
/** Raw API shape for a user's identifiers. @internal */
|
|
15
|
+
export interface UserIdentifiersData {
|
|
16
|
+
password: {
|
|
17
|
+
created_at: ISODate;
|
|
18
|
+
last_used_at: ISODate | null;
|
|
19
|
+
} | null;
|
|
20
|
+
whmcs: {
|
|
21
|
+
whmcs_id: string;
|
|
22
|
+
email: string;
|
|
23
|
+
name: string;
|
|
24
|
+
sync_email: boolean;
|
|
25
|
+
sync_nickname: boolean;
|
|
26
|
+
last_used_at: ISODate | null;
|
|
27
|
+
created_at: ISODate;
|
|
28
|
+
updated_at: ISODate;
|
|
29
|
+
} | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Raw API response shape for a user.
|
|
33
|
+
*
|
|
34
|
+
* A direct `/users` response carries a bare `id`. When the same user is
|
|
35
|
+
* expanded as an issuer reference (e.g. an `owner`), `id` is the namespaced
|
|
36
|
+
* `"user:<id>"` form and `ref_id` holds the bare id.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export interface UserData {
|
|
40
|
+
id: string;
|
|
41
|
+
type?: string;
|
|
42
|
+
ref_id?: string;
|
|
43
|
+
email: string;
|
|
44
|
+
email_verified_at?: ISODate | null;
|
|
45
|
+
nickname: string | null;
|
|
46
|
+
avatar_uri: string | null;
|
|
47
|
+
disabled_at?: ISODate | null;
|
|
48
|
+
preferences?: UserPreferencesData | null;
|
|
49
|
+
permissions?: string[];
|
|
50
|
+
identifiers?: UserIdentifiersData | null;
|
|
51
|
+
created_at: ISODate;
|
|
52
|
+
updated_at: ISODate;
|
|
53
|
+
}
|
|
54
|
+
/** Display and locale preferences for a user. */
|
|
55
|
+
export interface UserPreferences {
|
|
56
|
+
/** The user's preferred UI theme. */
|
|
57
|
+
theme: UiTheme;
|
|
58
|
+
/** The user's preferred UI language code, or `null` to follow the default. */
|
|
59
|
+
language: string | null;
|
|
60
|
+
}
|
|
61
|
+
/** The password identifier on a user. */
|
|
62
|
+
export interface UserPasswordIdentifier {
|
|
63
|
+
/** When the password was first set. */
|
|
64
|
+
createdAt: Date;
|
|
65
|
+
/** When the password was last used to log in, or `null`. */
|
|
66
|
+
lastUsedAt: Date | null;
|
|
67
|
+
}
|
|
68
|
+
/** The WHMCS link on a user. */
|
|
69
|
+
export interface UserWhmcsIdentifier {
|
|
70
|
+
/** The linked WHMCS client UUID. */
|
|
71
|
+
whmcsId: string;
|
|
72
|
+
/** Email cached from WHMCS. */
|
|
73
|
+
email: string;
|
|
74
|
+
/** Name cached from WHMCS. */
|
|
75
|
+
name: string;
|
|
76
|
+
/** Whether WHMCS email changes sync to the account. */
|
|
77
|
+
syncEmail: boolean;
|
|
78
|
+
/** Whether WHMCS name changes sync to the nickname. */
|
|
79
|
+
syncNickname: boolean;
|
|
80
|
+
/** When this link was last used to log in, or `null`. */
|
|
81
|
+
lastUsedAt: Date | null;
|
|
82
|
+
/** When this link was created. */
|
|
83
|
+
createdAt: Date;
|
|
84
|
+
/** When this link was last updated. */
|
|
85
|
+
updatedAt: Date;
|
|
86
|
+
}
|
|
87
|
+
/** A user's external identifiers. Requires `?include=identifiers`. */
|
|
88
|
+
export interface UserIdentifiers {
|
|
89
|
+
/** The password identifier, or `null` if the user has no password. */
|
|
90
|
+
password: UserPasswordIdentifier | null;
|
|
91
|
+
/** The WHMCS link, or `null` if the user is not linked. */
|
|
92
|
+
whmcs: UserWhmcsIdentifier | null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* A MeowPanel user account.
|
|
96
|
+
*
|
|
97
|
+
* Retrieved via {@link UsersNamespace.get} or {@link UsersNamespace.list}.
|
|
98
|
+
*/
|
|
99
|
+
export declare class User extends ReactiveResource {
|
|
100
|
+
/** The user's unique NanoID. */
|
|
101
|
+
readonly id: NanoID;
|
|
102
|
+
/** The issuer type, `'user'` for user accounts. */
|
|
103
|
+
issuerType: string;
|
|
104
|
+
/** The user's login email address. */
|
|
105
|
+
email: string;
|
|
106
|
+
/** When the user verified their email, or `null` if unverified. */
|
|
107
|
+
emailVerifiedAt: Date | null;
|
|
108
|
+
/** The user's display nickname. */
|
|
109
|
+
nickname: string | null;
|
|
110
|
+
/** URL of the user's avatar image, or `null` if no avatar is set. */
|
|
111
|
+
avatarUri: string | null;
|
|
112
|
+
/** When the user account was disabled, or `null` if active. */
|
|
113
|
+
disabledAt: Date | null;
|
|
114
|
+
/** Display and locale preferences. Requires `?include=preferences`. */
|
|
115
|
+
preferences: UserPreferences | null | undefined;
|
|
116
|
+
/** The user's assigned permission scopes. Requires `?include=permissions`. */
|
|
117
|
+
permissions: string[] | undefined;
|
|
118
|
+
/** The user's external identifiers. Requires `?include=identifiers`. */
|
|
119
|
+
identifiers: UserIdentifiers | undefined;
|
|
120
|
+
/** When this user account was created. */
|
|
121
|
+
createdAt: Date;
|
|
122
|
+
/** When this user account was last updated. */
|
|
123
|
+
updatedAt: Date;
|
|
124
|
+
/** @internal */
|
|
125
|
+
constructor(data: UserData);
|
|
126
|
+
/**
|
|
127
|
+
* Apply raw API data to this user instance, updating all mutable fields.
|
|
128
|
+
*
|
|
129
|
+
* Called by the constructor and by {@link UsersNamespace.update} to update the instance in-place.
|
|
130
|
+
*/
|
|
131
|
+
applyData(data: UserData): void;
|
|
132
|
+
}
|
|
133
|
+
/** Fields accepted when creating a user. */
|
|
134
|
+
export interface CreateUserPayload {
|
|
135
|
+
/** Login email address. */
|
|
136
|
+
email: string;
|
|
137
|
+
/** Display nickname. */
|
|
138
|
+
nickname?: string;
|
|
139
|
+
/** Mark the email as already verified. */
|
|
140
|
+
emailVerified?: boolean;
|
|
141
|
+
/** Link a WHMCS client at creation time. */
|
|
142
|
+
whmcs?: {
|
|
143
|
+
id: string;
|
|
144
|
+
name: string;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/** Fields that can be updated on a user. All fields are optional. */
|
|
148
|
+
export interface UpdateUserPayload {
|
|
149
|
+
/** New email address for the user. */
|
|
150
|
+
email?: string;
|
|
151
|
+
/** New display nickname. */
|
|
152
|
+
nickname?: string;
|
|
153
|
+
/** Preference updates (shallow-merged). */
|
|
154
|
+
preferences?: {
|
|
155
|
+
/** UI theme. */
|
|
156
|
+
theme?: UiTheme;
|
|
157
|
+
/** UI language code, or `null` to clear. */
|
|
158
|
+
language?: string | null;
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/** Result of syncing a WHMCS-linked user. */
|
|
162
|
+
export interface WhmcsSyncResult {
|
|
163
|
+
/** The updated user. */
|
|
164
|
+
user: User;
|
|
165
|
+
/** Fields that were not propagated to the account (sync disabled or overridden). */
|
|
166
|
+
skipped: string[];
|
|
167
|
+
}
|
|
168
|
+
/** Valid include keys for user endpoints. */
|
|
169
|
+
export type UserInclude = 'preferences' | 'permissions' | 'identifiers';
|
|
170
|
+
/** Maps each {@link UserInclude} key to the field(s) it guarantees on the {@link User} instance. */
|
|
171
|
+
interface UserIncludeMap {
|
|
172
|
+
preferences: {
|
|
173
|
+
preferences: UserPreferences | null;
|
|
174
|
+
};
|
|
175
|
+
permissions: {
|
|
176
|
+
permissions: string[];
|
|
177
|
+
};
|
|
178
|
+
identifiers: {
|
|
179
|
+
identifiers: UserIdentifiers;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/** A {@link User} with specific include fields guaranteed to be populated. */
|
|
183
|
+
export type UserWith<I extends readonly UserInclude[] = []> = ResourceWith<User, UserIncludeMap, I>;
|
|
184
|
+
/** Typed events emitted by {@link UsersNamespace}. */
|
|
185
|
+
export interface UserEvents {
|
|
186
|
+
/** Fired after a user is created. */
|
|
187
|
+
created: User;
|
|
188
|
+
/** Fired after a user is successfully updated. */
|
|
189
|
+
updated: User;
|
|
190
|
+
}
|
|
191
|
+
/** A role assigned to a user, with its assignment order and scope. */
|
|
192
|
+
export interface UserRoleAssignment {
|
|
193
|
+
/** The role's NanoID. */
|
|
194
|
+
id: NanoID;
|
|
195
|
+
/** The role title. */
|
|
196
|
+
title: string;
|
|
197
|
+
/** The role description. */
|
|
198
|
+
description: string | null;
|
|
199
|
+
/** The role color. */
|
|
200
|
+
color: ResourceColor | null;
|
|
201
|
+
/** The assignment's sort order, or `null`. */
|
|
202
|
+
order: number | null;
|
|
203
|
+
/** The namespaced scope the assignment is narrowed to, or `null` for all. */
|
|
204
|
+
scope: string | null;
|
|
205
|
+
}
|
|
206
|
+
/** A role to assign to a user. */
|
|
207
|
+
export interface AssignRoleInput {
|
|
208
|
+
/** The role's NanoID. */
|
|
209
|
+
roleId: NanoID;
|
|
210
|
+
/** Narrow every permission the role confers to this namespaced scope (`"<type>:<id>"`). */
|
|
211
|
+
scope?: string;
|
|
212
|
+
/** Sort order for the assignment; must be unique per user. */
|
|
213
|
+
order?: number;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Manages a user's role assignments.
|
|
217
|
+
*
|
|
218
|
+
* Access via `api.users.roles(userId)`.
|
|
219
|
+
*/
|
|
220
|
+
export declare class UserRolesManager {
|
|
221
|
+
private readonly userId;
|
|
222
|
+
private readonly http;
|
|
223
|
+
/** @internal */
|
|
224
|
+
constructor(userId: NanoID, http: HttpClient);
|
|
225
|
+
/** List the roles assigned to the user. */
|
|
226
|
+
list(): Promise<UserRoleAssignment[]>;
|
|
227
|
+
/** Assign one or more roles to the user. */
|
|
228
|
+
assign(roles: AssignRoleInput | AssignRoleInput[]): Promise<void>;
|
|
229
|
+
/** Remove a role from the user. */
|
|
230
|
+
remove(roleId: NanoID): Promise<void>;
|
|
231
|
+
/** Change a role assignment's sort order. */
|
|
232
|
+
setOrder(roleId: NanoID, order: number): Promise<void>;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Manages a user's direct permission grants.
|
|
236
|
+
*
|
|
237
|
+
* Access via `api.users.permissions(userId)`.
|
|
238
|
+
*/
|
|
239
|
+
export declare class UserPermissionsManager {
|
|
240
|
+
private readonly userId;
|
|
241
|
+
private readonly http;
|
|
242
|
+
/** @internal */
|
|
243
|
+
constructor(userId: NanoID, http: HttpClient);
|
|
244
|
+
/** List the user's direct permission grants. */
|
|
245
|
+
list(): Promise<PermissionGrant[]>;
|
|
246
|
+
/**
|
|
247
|
+
* Grant one or more permissions to the user.
|
|
248
|
+
*
|
|
249
|
+
* You cannot grant a permission you do not hold yourself at the target scope.
|
|
250
|
+
*/
|
|
251
|
+
grant(grants: PermissionGrantInput | PermissionGrantInput[]): Promise<void>;
|
|
252
|
+
/**
|
|
253
|
+
* Revoke a permission from the user.
|
|
254
|
+
*
|
|
255
|
+
* @param permission The permission name to revoke.
|
|
256
|
+
* @param scope The namespaced scope (`"<type>:<id>"`) to revoke at, or omit for the global grant.
|
|
257
|
+
*/
|
|
258
|
+
revoke(permission: string, scope?: string): Promise<void>;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Namespace for user management.
|
|
262
|
+
*
|
|
263
|
+
* Access via `api.users`.
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```ts ignore
|
|
267
|
+
* const users = await api.users.list();
|
|
268
|
+
* const user = await api.users.get(id);
|
|
269
|
+
* await api.users.update(id, { nickname: 'newname' });
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
export declare class UsersNamespace extends ResourceNamespace<User, UserEvents> {
|
|
273
|
+
/** @internal */
|
|
274
|
+
constructor(http: HttpClient);
|
|
275
|
+
/**
|
|
276
|
+
* Fetch a paginated list of all users.
|
|
277
|
+
*
|
|
278
|
+
* @param opts Pagination, search, and include options.
|
|
279
|
+
*/
|
|
280
|
+
list<const I extends readonly UserInclude[] = []>(opts?: {
|
|
281
|
+
page?: number;
|
|
282
|
+
perPage?: number;
|
|
283
|
+
search?: string;
|
|
284
|
+
} & IncludeOptions<UserInclude, I>): Promise<Paginated<UserWith<I>>>;
|
|
285
|
+
/**
|
|
286
|
+
* Fetch a single user by ID.
|
|
287
|
+
*
|
|
288
|
+
* @param id The user's NanoID.
|
|
289
|
+
* @param opts Include options.
|
|
290
|
+
*/
|
|
291
|
+
get<const I extends readonly UserInclude[] = []>(id: NanoID, opts?: IncludeOptions<UserInclude, I>): Promise<UserWith<I>>;
|
|
292
|
+
/** Create a user. */
|
|
293
|
+
create(payload: CreateUserPayload): Promise<User>;
|
|
294
|
+
/**
|
|
295
|
+
* Update a user's profile fields.
|
|
296
|
+
*
|
|
297
|
+
* @param id The user's NanoID.
|
|
298
|
+
* @param payload The fields to update.
|
|
299
|
+
*/
|
|
300
|
+
update(id: NanoID, payload: UpdateUserPayload): Promise<User>;
|
|
301
|
+
/** Disable a user, blocking them from authenticating. */
|
|
302
|
+
disable(id: NanoID): Promise<void>;
|
|
303
|
+
/** Re-enable a disabled user. */
|
|
304
|
+
enable(id: NanoID): Promise<void>;
|
|
305
|
+
/**
|
|
306
|
+
* Propagate WHMCS-sourced changes to the linked user.
|
|
307
|
+
*
|
|
308
|
+
* @param whmcsId The linked WHMCS client UUID.
|
|
309
|
+
* @param payload The WHMCS-side email and/or name.
|
|
310
|
+
*/
|
|
311
|
+
syncWhmcs(whmcsId: string, payload: {
|
|
312
|
+
email?: string;
|
|
313
|
+
name?: string;
|
|
314
|
+
}): Promise<WhmcsSyncResult>;
|
|
315
|
+
/**
|
|
316
|
+
* Unlink a WHMCS-linked user.
|
|
317
|
+
*
|
|
318
|
+
* @param whmcsId The linked WHMCS client UUID.
|
|
319
|
+
* @param opts `unlink: true` only removes the link; otherwise the user is also disabled.
|
|
320
|
+
*/
|
|
321
|
+
unlinkWhmcs(whmcsId: string, opts?: {
|
|
322
|
+
unlink?: boolean;
|
|
323
|
+
}): Promise<User>;
|
|
324
|
+
/** Manage a user's role assignments. */
|
|
325
|
+
roles(userId: NanoID): UserRolesManager;
|
|
326
|
+
/** Manage a user's direct permission grants. */
|
|
327
|
+
permissions(userId: NanoID): UserPermissionsManager;
|
|
328
|
+
}
|
|
329
|
+
export {};
|
|
330
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/src/resources/users.ts"],"names":[],"mappings":"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"}
|