@serve.zone/interfaces 22.0.0 → 23.0.1
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/changelog.md +19 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/appstore/types.d.ts +31 -16
- package/dist_ts/appstore/types.js +208 -11
- package/dist_ts/data/coremail.runtime.d.ts +3 -2
- package/dist_ts/data/coremail.runtime.js +10 -5
- package/dist_ts/data/deploymentoperation.js +6 -20
- package/dist_ts/data/deploymentpreflight.d.ts +2 -6
- package/dist_ts/data/deploymentpreflight.js +1 -1
- package/dist_ts/data/hostedapp.d.ts +40 -14
- package/dist_ts/data/hostedapp.js +90 -1
- package/dist_ts/data/immutableimage.d.ts +30 -1
- package/dist_ts/data/immutableimage.js +103 -1
- package/dist_ts/data/index.d.ts +0 -2
- package/dist_ts/data/index.js +1 -3
- package/dist_ts/data/secret.d.ts +186 -13
- package/dist_ts/data/secret.js +543 -45
- package/dist_ts/data/service.d.ts +0 -39
- package/dist_ts/data/service.js +1 -77
- package/dist_ts/data/settings.d.ts +62 -43
- package/dist_ts/data/settings.js +34 -2
- package/dist_ts/platform/storage.d.ts +13 -14
- package/dist_ts/platform/storage.js +1 -1
- package/dist_ts/platform/storagemigration.d.ts +8 -8
- package/dist_ts/platform/storagemigration.golden.d.ts +2 -2
- package/dist_ts/platform/storagemigration.golden.js +19 -88
- package/dist_ts/platform/storagemigration.js +46 -58
- package/dist_ts/platform/types.d.ts +5 -19
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/requests/hostedapp.d.ts +12 -9
- package/dist_ts/requests/hostedapp.js +38 -1
- package/dist_ts/requests/index.d.ts +1 -3
- package/dist_ts/requests/index.js +2 -4
- package/dist_ts/requests/platform.d.ts +0 -1
- package/dist_ts/requests/secret.d.ts +23 -17
- package/dist_ts/requests/secret.js +161 -2
- package/dist_ts/requests/service.d.ts +0 -13
- package/dist_ts/requests/settings.d.ts +3 -3
- package/dist_ts/runtime.d.ts +78 -26
- package/dist_ts/runtime.js +219 -19
- package/package.json +2 -1
- package/readme.md +110 -29
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/appstore/types.ts +251 -25
- package/ts/data/coremail.runtime.ts +18 -4
- package/ts/data/deploymentoperation.ts +7 -31
- package/ts/data/deploymentpreflight.ts +2 -5
- package/ts/data/hostedapp.ts +144 -18
- package/ts/data/immutableimage.ts +150 -1
- package/ts/data/index.ts +0 -2
- package/ts/data/secret.ts +775 -53
- package/ts/data/service.ts +0 -118
- package/ts/data/settings.ts +70 -80
- package/ts/platform/storage.ts +15 -16
- package/ts/platform/storagemigration.golden.ts +18 -95
- package/ts/platform/storagemigration.ts +57 -87
- package/ts/platform/types.ts +6 -19
- package/ts/plugins.ts +2 -0
- package/ts/requests/hostedapp.ts +50 -9
- package/ts/requests/index.ts +0 -4
- package/ts/requests/platform.ts +0 -1
- package/ts/requests/secret.ts +204 -9
- package/ts/requests/service.ts +0 -16
- package/ts/requests/settings.ts +3 -3
- package/ts/runtime.ts +314 -41
- package/dist_ts/data/secretbundle.d.ts +0 -57
- package/dist_ts/data/secretbundle.js +0 -2
- package/dist_ts/data/secretgroup.d.ts +0 -52
- package/dist_ts/data/secretgroup.js +0 -2
- package/dist_ts/requests/secretbundle.d.ts +0 -75
- package/dist_ts/requests/secretbundle.js +0 -4
- package/dist_ts/requests/secretgroup.d.ts +0 -52
- package/dist_ts/requests/secretgroup.js +0 -4
- package/ts/data/secretbundle.ts +0 -65
- package/ts/data/secretgroup.ts +0 -58
- package/ts/requests/secretbundle.ts +0 -103
- package/ts/requests/secretgroup.ts +0 -74
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import type { TSecretManagementScope } from '../data/secret.js';
|
|
1
2
|
export type TPlatformCapability = 'email' | 'sms' | 'pushnotification' | 'letter' | 'ai' | 'database' | 'objectstorage' | 'logging' | 'backup' | 'sip';
|
|
2
3
|
export type TPlatformAccessMode = 'rpc' | 'binding' | 'sidecar' | 'internal';
|
|
3
4
|
export type TPlatformBindingStatus = 'requested' | 'provisioning' | 'ready' | 'degraded' | 'failed' | 'disabled';
|
|
4
5
|
export type TPlatformDesiredState = 'enabled' | 'disabled';
|
|
5
6
|
export type TPlatformEndpointProtocol = 'typedrequest' | 'http' | 'tcp' | 'udp' | 'smtp' | 's3' | 'postgres' | 'mongodb' | 'sip';
|
|
6
|
-
export type TPlatformConfigValue = string | number | boolean | null | TPlatformConfigValue[] | {
|
|
7
|
-
[key: string]: TPlatformConfigValue;
|
|
8
|
-
};
|
|
9
7
|
export interface IPlatformCapability {
|
|
10
8
|
id: TPlatformCapability;
|
|
11
9
|
title: string;
|
|
@@ -19,18 +17,8 @@ export interface IPlatformProviderConfig {
|
|
|
19
17
|
providerType: string;
|
|
20
18
|
name: string;
|
|
21
19
|
enabled: boolean;
|
|
22
|
-
config
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
secretBundleId?: string;
|
|
26
|
-
}
|
|
27
|
-
export interface IPlatformCredentialRef {
|
|
28
|
-
secretBundleId?: string;
|
|
29
|
-
secretGroupIds?: string[];
|
|
30
|
-
dockerSecretName?: string;
|
|
31
|
-
env?: {
|
|
32
|
-
[key: string]: string;
|
|
33
|
-
};
|
|
20
|
+
/** Value-free owner scope; provider-specific operational config stays adapter-internal. */
|
|
21
|
+
credentialManagementScope?: Extract<TSecretManagementScope, `platform:${string}`>;
|
|
34
22
|
}
|
|
35
23
|
export interface IPlatformServiceEndpoint {
|
|
36
24
|
name: string;
|
|
@@ -48,11 +36,9 @@ export interface IPlatformBinding {
|
|
|
48
36
|
desiredState: TPlatformDesiredState;
|
|
49
37
|
status: TPlatformBindingStatus;
|
|
50
38
|
providerConfigId?: string;
|
|
51
|
-
config?: {
|
|
52
|
-
[key: string]: TPlatformConfigValue;
|
|
53
|
-
};
|
|
54
39
|
endpoints?: IPlatformServiceEndpoint[];
|
|
55
|
-
credentials
|
|
40
|
+
/** Value-free reconciliation scope for service-owned credentials. */
|
|
41
|
+
credentialManagementScope?: Extract<TSecretManagementScope, `platform:${string}`>;
|
|
56
42
|
createdAt?: number;
|
|
57
43
|
updatedAt?: number;
|
|
58
44
|
}
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
|
|
2
2
|
export { typedrequestInterfaces };
|
|
3
|
+
import * as smartcrypto from '@push.rocks/smartcrypto';
|
|
3
4
|
import * as smartlogInterfaces from '@push.rocks/smartlog-interfaces';
|
|
4
|
-
export { smartlogInterfaces, };
|
|
5
|
+
export { smartcrypto, smartlogInterfaces, };
|
|
5
6
|
import * as tsclass from '@tsclass/tsclass';
|
|
6
7
|
export { tsclass };
|
package/dist_ts/plugins.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
|
|
3
3
|
export { typedrequestInterfaces };
|
|
4
4
|
// @push.rocks scope
|
|
5
|
+
import * as smartcrypto from '@push.rocks/smartcrypto';
|
|
5
6
|
import * as smartlogInterfaces from '@push.rocks/smartlog-interfaces';
|
|
6
|
-
export { smartlogInterfaces, };
|
|
7
|
+
export { smartcrypto, smartlogInterfaces, };
|
|
7
8
|
// tsclass scope
|
|
8
9
|
import * as tsclass from '@tsclass/tsclass';
|
|
9
10
|
export { tsclass };
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxzQkFBc0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssa0JBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsR0FDbkIsQ0FBQTtBQUVELGdCQUFnQjtBQUNoQixPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sRUFDTCxPQUFPLEVBQ1IsQ0FBQSJ9
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
-
import type { IIdentity } from '../data/user.js';
|
|
3
|
-
import type { IHostedAppBootstrapAction, IHostedAppBootstrapActionRequest, IHostedAppLifecycleReport, IHostedAppLifecycleState,
|
|
2
|
+
import type { IIdentity, IIdentityCredential } from '../data/user.js';
|
|
3
|
+
import type { IHostedAppBootstrapAction, IHostedAppBootstrapActionRequest, IHostedAppLifecycleReport, IHostedAppLifecycleState, IHostedAppUpgradeState } from '../data/hostedapp.js';
|
|
4
4
|
export interface IReq_HostedApp_ReportLifecycleState extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_HostedApp_ReportLifecycleState> {
|
|
5
5
|
method: 'hostedAppReportLifecycleState';
|
|
6
6
|
request: {
|
|
7
|
-
identity:
|
|
7
|
+
identity: IIdentityCredential;
|
|
8
8
|
report: IHostedAppLifecycleReport;
|
|
9
9
|
};
|
|
10
10
|
response: {
|
|
@@ -14,7 +14,7 @@ export interface IReq_HostedApp_ReportLifecycleState extends plugins.typedreques
|
|
|
14
14
|
export interface IReq_HostedApp_GetLifecycleState extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_HostedApp_GetLifecycleState> {
|
|
15
15
|
method: 'hostedAppGetLifecycleState';
|
|
16
16
|
request: {
|
|
17
|
-
identity:
|
|
17
|
+
identity: IIdentityCredential;
|
|
18
18
|
};
|
|
19
19
|
response: {
|
|
20
20
|
state: IHostedAppLifecycleState;
|
|
@@ -23,7 +23,7 @@ export interface IReq_HostedApp_GetLifecycleState extends plugins.typedrequestIn
|
|
|
23
23
|
export interface IReq_HostedApp_RequestBootstrapAction extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_HostedApp_RequestBootstrapAction> {
|
|
24
24
|
method: 'hostedAppRequestBootstrapAction';
|
|
25
25
|
request: {
|
|
26
|
-
identity:
|
|
26
|
+
identity: IIdentityCredential;
|
|
27
27
|
action: IHostedAppBootstrapActionRequest;
|
|
28
28
|
};
|
|
29
29
|
response: {
|
|
@@ -34,18 +34,21 @@ export interface IReq_HostedApp_RequestBootstrapAction extends plugins.typedrequ
|
|
|
34
34
|
export interface IReq_HostedApp_CompleteBootstrapAction extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_HostedApp_CompleteBootstrapAction> {
|
|
35
35
|
method: 'hostedAppCompleteBootstrapAction';
|
|
36
36
|
request: {
|
|
37
|
-
identity:
|
|
38
|
-
actionId
|
|
37
|
+
identity: IIdentityCredential;
|
|
38
|
+
actionId: string;
|
|
39
|
+
expectedActionRevision: number;
|
|
40
|
+
expectedActionStatus: 'ready';
|
|
39
41
|
message?: string;
|
|
40
42
|
};
|
|
41
43
|
response: {
|
|
42
44
|
state: IHostedAppLifecycleState;
|
|
43
45
|
};
|
|
44
46
|
}
|
|
47
|
+
export declare const validateHostedAppCompleteBootstrapActionRequest: (requestArg: unknown) => string[];
|
|
45
48
|
export interface IReq_HostedApp_StartManagedUpgrade extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_HostedApp_StartManagedUpgrade> {
|
|
46
49
|
method: 'hostedAppStartManagedUpgrade';
|
|
47
50
|
request: {
|
|
48
|
-
identity:
|
|
51
|
+
identity: IIdentityCredential;
|
|
49
52
|
targetVersion?: string;
|
|
50
53
|
};
|
|
51
54
|
response: {
|
|
@@ -56,7 +59,7 @@ export interface IReq_HostedApp_StartManagedUpgrade extends plugins.typedrequest
|
|
|
56
59
|
export interface IReq_HostedApp_GetManagedUpgradeStatus extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_HostedApp_GetManagedUpgradeStatus> {
|
|
57
60
|
method: 'hostedAppGetManagedUpgradeStatus';
|
|
58
61
|
request: {
|
|
59
|
-
identity:
|
|
62
|
+
identity: IIdentityCredential;
|
|
60
63
|
};
|
|
61
64
|
response: {
|
|
62
65
|
upgradeState: IHostedAppUpgradeState;
|
|
@@ -1,2 +1,39 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
-
|
|
2
|
+
export const validateHostedAppCompleteBootstrapActionRequest = (requestArg) => {
|
|
3
|
+
if (!requestArg || typeof requestArg !== 'object' || Array.isArray(requestArg)) {
|
|
4
|
+
return ['hosted app bootstrap completion must be an object'];
|
|
5
|
+
}
|
|
6
|
+
const request = requestArg;
|
|
7
|
+
const errors = [];
|
|
8
|
+
const allowedKeys = new Set([
|
|
9
|
+
'identity',
|
|
10
|
+
'actionId',
|
|
11
|
+
'expectedActionRevision',
|
|
12
|
+
'expectedActionStatus',
|
|
13
|
+
'message',
|
|
14
|
+
]);
|
|
15
|
+
if (Object.keys(request).some((keyArg) => !allowedKeys.has(keyArg))) {
|
|
16
|
+
errors.push('hosted app bootstrap completion contains fields outside its schema');
|
|
17
|
+
}
|
|
18
|
+
if (!request.identity || typeof request.identity !== 'object'
|
|
19
|
+
|| typeof request.identity.jwt !== 'string') {
|
|
20
|
+
errors.push('hosted app bootstrap completion requires a JWT identity');
|
|
21
|
+
}
|
|
22
|
+
if (typeof request.actionId !== 'string'
|
|
23
|
+
|| !/^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(request.actionId)) {
|
|
24
|
+
errors.push('hosted app bootstrap completion actionId must be canonical');
|
|
25
|
+
}
|
|
26
|
+
if (!Number.isSafeInteger(request.expectedActionRevision)
|
|
27
|
+
|| request.expectedActionRevision < 1) {
|
|
28
|
+
errors.push('hosted app bootstrap completion revision must be positive');
|
|
29
|
+
}
|
|
30
|
+
if (request.expectedActionStatus !== 'ready') {
|
|
31
|
+
errors.push('hosted app bootstrap completion must fence ready status');
|
|
32
|
+
}
|
|
33
|
+
if (request.message !== undefined
|
|
34
|
+
&& (typeof request.message !== 'string' || request.message.length > 4000)) {
|
|
35
|
+
errors.push('hosted app bootstrap completion message must be bounded');
|
|
36
|
+
}
|
|
37
|
+
return errors;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcmVxdWVzdHMvaG9zdGVkYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBcUV6QyxNQUFNLENBQUMsTUFBTSwrQ0FBK0MsR0FBRyxDQUM3RCxVQUFtQixFQUNULEVBQUU7SUFDWixJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQXFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQzFCLFVBQVU7UUFDVixVQUFVO1FBQ1Ysd0JBQXdCO1FBQ3hCLHNCQUFzQjtRQUN0QixTQUFTO0tBQ1YsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRO1dBQ3hELE9BQVEsT0FBTyxDQUFDLFFBQW9DLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUTtXQUNuQyxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLENBQUMsSUFBSSxDQUFDLDREQUE0RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztXQUNuRCxPQUFPLENBQUMsc0JBQWlDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTO1dBQzVCLENBQUMsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIn0=
|
|
@@ -25,8 +25,6 @@ import * as nodeRequests from './node.js';
|
|
|
25
25
|
import * as platformRequests from './platform.js';
|
|
26
26
|
import * as routingRequests from './routing.js';
|
|
27
27
|
import * as secretRequests from './secret.js';
|
|
28
|
-
import * as secretBundleRequests from './secretbundle.js';
|
|
29
|
-
import * as secretGroupRequests from './secretgroup.js';
|
|
30
28
|
import * as serverRequests from './server.js';
|
|
31
29
|
import * as serviceRequests from './service.js';
|
|
32
30
|
import * as settingsRequests from './settings.js';
|
|
@@ -34,7 +32,7 @@ import * as statusRequests from './status.js';
|
|
|
34
32
|
import * as taskRequests from './task.js';
|
|
35
33
|
import * as versionRequests from './version.js';
|
|
36
34
|
import * as webPushRequests from './webpush.js';
|
|
37
|
-
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, platformRequests as platform, routingRequests as routing, secretRequests as secret,
|
|
35
|
+
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, platformRequests as platform, routingRequests as routing, secretRequests as secret, serverRequests as server, serviceRequests as service, settingsRequests as settings, statusRequests as status, taskRequests as task, versionRequests as version, webPushRequests as webpush, };
|
|
38
36
|
export * from './inform.js';
|
|
39
37
|
export * from './hostedapp.js';
|
|
40
38
|
export * from './mail.js';
|
|
@@ -26,8 +26,6 @@ import * as nodeRequests from './node.js';
|
|
|
26
26
|
import * as platformRequests from './platform.js';
|
|
27
27
|
import * as routingRequests from './routing.js';
|
|
28
28
|
import * as secretRequests from './secret.js';
|
|
29
|
-
import * as secretBundleRequests from './secretbundle.js';
|
|
30
|
-
import * as secretGroupRequests from './secretgroup.js';
|
|
31
29
|
import * as serverRequests from './server.js';
|
|
32
30
|
import * as serviceRequests from './service.js';
|
|
33
31
|
import * as settingsRequests from './settings.js';
|
|
@@ -35,9 +33,9 @@ import * as statusRequests from './status.js';
|
|
|
35
33
|
import * as taskRequests from './task.js';
|
|
36
34
|
import * as versionRequests from './version.js';
|
|
37
35
|
import * as webPushRequests from './webpush.js';
|
|
38
|
-
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, platformRequests as platform, routingRequests as routing, secretRequests as secret,
|
|
36
|
+
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, platformRequests as platform, routingRequests as routing, secretRequests as secret, serverRequests as server, serviceRequests as service, settingsRequests as settings, statusRequests as status, taskRequests as task, versionRequests as version, webPushRequests as webpush, };
|
|
39
37
|
export * from './inform.js';
|
|
40
38
|
export * from './hostedapp.js';
|
|
41
39
|
export * from './mail.js';
|
|
42
40
|
export * from './webpush.js';
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9yZXF1ZXN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEtBQUssYUFBYSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sS0FBSyxpQkFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssbUJBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGVBQWUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxLQUFLLGNBQWMsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxLQUFLLGdCQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEtBQUssaUJBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLGtCQUFrQixNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxXQUFXLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxjQUFjLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sS0FBSyx3QkFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssZUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEtBQUssaUJBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEtBQUssYUFBYSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssV0FBVyxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEtBQUssWUFBWSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEtBQUssaUJBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLGVBQWUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxLQUFLLFlBQVksTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxLQUFLLGdCQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEtBQUssZUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssZUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sS0FBSyxjQUFjLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sS0FBSyxZQUFZLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sS0FBSyxlQUFlLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sS0FBSyxlQUFlLE1BQU0sY0FBYyxDQUFDO0FBRWhELE9BQU8sRUFDTCxhQUFhLElBQUksS0FBSyxFQUN0QixnQkFBZ0IsSUFBSSxRQUFRLEVBQzVCLGlCQUFpQixJQUFJLFNBQVMsRUFDOUIsY0FBYyxJQUFJLE1BQU0sRUFDeEIsY0FBYyxJQUFJLE1BQU0sRUFDeEIsbUJBQW1CLElBQUksV0FBVyxFQUNsQyxlQUFlLElBQUksT0FBTyxFQUMxQixjQUFjLElBQUksTUFBTSxFQUN4QixnQkFBZ0IsSUFBSSxRQUFRLEVBQzVCLGlCQUFpQixJQUFJLFNBQVMsRUFDOUIsa0JBQWtCLElBQUksVUFBVSxFQUNoQyxXQUFXLElBQUksR0FBRyxFQUNsQixjQUFjLElBQUksTUFBTSxFQUN4Qix3QkFBd0IsSUFBSSxnQkFBZ0IsRUFDNUMsZUFBZSxJQUFJLE9BQU8sRUFDMUIsaUJBQWlCLElBQUksU0FBUyxFQUM5QixnQkFBZ0IsSUFBSSxRQUFRLEVBQzVCLGFBQWEsSUFBSSxLQUFLLEVBQ3RCLGNBQWMsSUFBSSxNQUFNLEVBQ3hCLFdBQVcsSUFBSSxHQUFHLEVBQ2xCLFlBQVksSUFBSSxJQUFJLEVBQ3BCLGlCQUFpQixJQUFJLFNBQVMsRUFDOUIsZUFBZSxJQUFJLE9BQU8sRUFDMUIsWUFBWSxJQUFJLElBQUksRUFDcEIsZ0JBQWdCLElBQUksUUFBUSxFQUM1QixlQUFlLElBQUksT0FBTyxFQUMxQixjQUFjLElBQUksTUFBTSxFQUN4QixjQUFjLElBQUksTUFBTSxFQUN4QixlQUFlLElBQUksT0FBTyxFQUMxQixnQkFBZ0IsSUFBSSxRQUFRLEVBQzVCLGNBQWMsSUFBSSxNQUFNLEVBQ3hCLFlBQVksSUFBSSxJQUFJLEVBQ3BCLGVBQWUsSUFBSSxPQUFPLEVBQzFCLGVBQWUsSUFBSSxPQUFPLEdBQzNCLENBQUM7QUFFRixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDIn0=
|
|
@@ -79,7 +79,6 @@ export interface IReq_Any_Cloudly_UpdatePlatformBindingStatus extends plugins.ty
|
|
|
79
79
|
bindingId: string;
|
|
80
80
|
status: TPlatformBindingStatus;
|
|
81
81
|
endpoints?: IPlatformBinding['endpoints'];
|
|
82
|
-
credentials?: IPlatformBinding['credentials'];
|
|
83
82
|
errorText?: string;
|
|
84
83
|
};
|
|
85
84
|
response: {
|
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
import type * as plugins from '../plugins.js';
|
|
2
|
-
import type { IResolvedSecretManifestEntry, ISecretMetadata, ISecretSetAttachment, ISecretSetConsumerRolloutStatus, ISecretSetMetadata, ISecretVersionMetadata, ISecretVersionRetentionReference, TSecretDelivery, TSecretEnvironment } from '../data/secret.js';
|
|
2
|
+
import type { IResolvedSecretManifestEntry, ISecretMetadata, ISecretSetAttachment, ISecretSetConsumerRolloutStatus, ISecretSetMetadata, ISecretVersionMetadata, ISecretVersionRetentionReference, TSecretIngressRecipient, TSecretMutationTarget, TSecretValueInput, TSecretDelivery, TSecretEnvironment } from '../data/secret.js';
|
|
3
3
|
import type { IIdentityCredential } from '../data/user.js';
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
mode: 'provided';
|
|
13
|
-
value: string;
|
|
4
|
+
export interface IReq_GetSecretIngressRecipient extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSecretIngressRecipient> {
|
|
5
|
+
method: 'getSecretIngressRecipient';
|
|
6
|
+
request: {
|
|
7
|
+
identity: IIdentityCredential;
|
|
8
|
+
};
|
|
9
|
+
response: {
|
|
10
|
+
recipient: TSecretIngressRecipient;
|
|
11
|
+
};
|
|
14
12
|
}
|
|
15
|
-
/** Server-generated runtime-only value; plaintext is never returned. */
|
|
16
|
-
| {
|
|
17
|
-
mode: 'generated';
|
|
18
|
-
bytes: 32 | 48 | 64;
|
|
19
|
-
};
|
|
20
13
|
export interface IReq_ListSecrets extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListSecrets> {
|
|
21
14
|
method: 'listSecrets';
|
|
22
15
|
request: {
|
|
23
16
|
identity: IIdentityCredential;
|
|
17
|
+
mutationId: string;
|
|
24
18
|
target: TSecretMutationTarget;
|
|
25
19
|
environment?: TSecretEnvironment;
|
|
26
20
|
};
|
|
@@ -34,6 +28,7 @@ export interface IReq_GetSecretMetadata extends plugins.typedrequestInterfaces.i
|
|
|
34
28
|
method: 'getSecretMetadata';
|
|
35
29
|
request: {
|
|
36
30
|
identity: IIdentityCredential;
|
|
31
|
+
mutationId: string;
|
|
37
32
|
secretId: string;
|
|
38
33
|
};
|
|
39
34
|
response: {
|
|
@@ -45,6 +40,7 @@ export interface IReq_CreateSecret extends plugins.typedrequestInterfaces.implem
|
|
|
45
40
|
method: 'createSecret';
|
|
46
41
|
request: {
|
|
47
42
|
identity: IIdentityCredential;
|
|
43
|
+
mutationId: string;
|
|
48
44
|
target: TSecretMutationTarget;
|
|
49
45
|
key: string;
|
|
50
46
|
environment: TSecretEnvironment;
|
|
@@ -69,14 +65,18 @@ export interface IReq_RotateSecret extends plugins.typedrequestInterfaces.implem
|
|
|
69
65
|
method: 'rotateSecret';
|
|
70
66
|
request: {
|
|
71
67
|
identity: IIdentityCredential;
|
|
68
|
+
mutationId: string;
|
|
72
69
|
secretId: string;
|
|
73
70
|
valueInput: TSecretValueInput;
|
|
74
71
|
expectedSecretRevision: number;
|
|
75
|
-
expectedActiveVersionId
|
|
72
|
+
expectedActiveVersionId: string;
|
|
73
|
+
/** Aggregate owner fence incremented by every secret mutation. */
|
|
74
|
+
expectedTargetSecretsRevision: number;
|
|
76
75
|
};
|
|
77
76
|
response: {
|
|
78
77
|
secret: ISecretMetadata;
|
|
79
78
|
version: ISecretVersionMetadata;
|
|
79
|
+
targetSecretsRevision: number;
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
export interface IReq_ChangeSecretLifecycle extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ChangeSecretLifecycle> {
|
|
@@ -86,9 +86,11 @@ export interface IReq_ChangeSecretLifecycle extends plugins.typedrequestInterfac
|
|
|
86
86
|
secretId: string;
|
|
87
87
|
action: 'retire' | 'revoke' | 'delete' | 'request-purge';
|
|
88
88
|
expectedSecretRevision: number;
|
|
89
|
+
expectedTargetSecretsRevision: number;
|
|
89
90
|
};
|
|
90
91
|
response: {
|
|
91
92
|
secret: ISecretMetadata;
|
|
93
|
+
targetSecretsRevision: number;
|
|
92
94
|
};
|
|
93
95
|
}
|
|
94
96
|
export interface IReq_GetSecretVersionPurgePreflight extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSecretVersionPurgePreflight> {
|
|
@@ -145,6 +147,8 @@ export interface IReq_ChangeSecretSetLifecycle extends plugins.typedrequestInter
|
|
|
145
147
|
secretSetId: string;
|
|
146
148
|
action: 'retire' | 'delete';
|
|
147
149
|
expectedRevision: number;
|
|
150
|
+
/** Prevents lifecycle changes racing any secret mutation in this set. */
|
|
151
|
+
expectedSecretsRevision: number;
|
|
148
152
|
};
|
|
149
153
|
response: {
|
|
150
154
|
secretSet: ISecretSetMetadata;
|
|
@@ -196,3 +200,5 @@ export interface IReq_PreviewServiceSecretResolution extends plugins.typedreques
|
|
|
196
200
|
collisions: ISecretResolutionPreviewCollision[];
|
|
197
201
|
};
|
|
198
202
|
}
|
|
203
|
+
export declare const validateCreateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: TSecretIngressRecipient) => Promise<string[]>;
|
|
204
|
+
export declare const validateRotateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: TSecretIngressRecipient) => Promise<string[]>;
|
|
@@ -1,2 +1,161 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as secretData from '../data/secret.js';
|
|
2
|
+
const isRecord = (valueArg) => (Boolean(valueArg) && typeof valueArg === 'object' && !Array.isArray(valueArg));
|
|
3
|
+
export const validateCreateSecretRequest = async (requestArg, activeIngressRecipientArg) => {
|
|
4
|
+
if (!requestArg || typeof requestArg !== 'object' || Array.isArray(requestArg)) {
|
|
5
|
+
return ['create secret request must be an object'];
|
|
6
|
+
}
|
|
7
|
+
const request = requestArg;
|
|
8
|
+
const errors = secretData.validateSecretMutationId(request.mutationId);
|
|
9
|
+
const allowedKeys = new Set([
|
|
10
|
+
'identity',
|
|
11
|
+
'mutationId',
|
|
12
|
+
'target',
|
|
13
|
+
'key',
|
|
14
|
+
'environment',
|
|
15
|
+
'name',
|
|
16
|
+
'description',
|
|
17
|
+
'tags',
|
|
18
|
+
'delivery',
|
|
19
|
+
'valueInput',
|
|
20
|
+
'expectedTargetSecretsRevision',
|
|
21
|
+
]);
|
|
22
|
+
if (Object.keys(request).some((keyArg) => !allowedKeys.has(keyArg))) {
|
|
23
|
+
errors.push('create secret request contains fields outside its schema');
|
|
24
|
+
}
|
|
25
|
+
if (!request.identity || typeof request.identity !== 'object'
|
|
26
|
+
|| typeof request.identity.jwt !== 'string') {
|
|
27
|
+
errors.push('create secret identity must be a JWT credential');
|
|
28
|
+
}
|
|
29
|
+
if (!request.target || typeof request.target !== 'object' || Array.isArray(request.target)) {
|
|
30
|
+
errors.push('create secret target must be an owner object');
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
errors.push(...secretData.validateSecretOwner(request.target));
|
|
34
|
+
}
|
|
35
|
+
if (typeof request.key !== 'string' || !/^[A-Z_][A-Z0-9_]{0,252}$/.test(request.key)) {
|
|
36
|
+
errors.push('create secret key must be canonical');
|
|
37
|
+
}
|
|
38
|
+
if (typeof request.environment !== 'string'
|
|
39
|
+
|| !/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(request.environment)) {
|
|
40
|
+
errors.push('create secret environment must be canonical');
|
|
41
|
+
}
|
|
42
|
+
if (typeof request.name !== 'string'
|
|
43
|
+
|| request.name.trim() !== request.name
|
|
44
|
+
|| request.name.length < 1
|
|
45
|
+
|| request.name.length > 200) {
|
|
46
|
+
errors.push('create secret name must be a bounded non-empty string');
|
|
47
|
+
}
|
|
48
|
+
if (request.description !== undefined
|
|
49
|
+
&& (typeof request.description !== 'string' || request.description.length > 2000)) {
|
|
50
|
+
errors.push('create secret description must be a bounded string');
|
|
51
|
+
}
|
|
52
|
+
if (request.tags !== undefined) {
|
|
53
|
+
if (!Array.isArray(request.tags) || request.tags.length > 64) {
|
|
54
|
+
errors.push('create secret tags must be a bounded array');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const tagKeys = [];
|
|
58
|
+
request.tags.forEach((tagArg, indexArg) => {
|
|
59
|
+
if (!isRecord(tagArg)
|
|
60
|
+
|| JSON.stringify(Object.keys(tagArg).sort()) !== JSON.stringify(['key', 'value'])
|
|
61
|
+
|| typeof tagArg.key !== 'string'
|
|
62
|
+
|| tagArg.key.length < 1
|
|
63
|
+
|| tagArg.key.length > 100
|
|
64
|
+
|| typeof tagArg.value !== 'string'
|
|
65
|
+
|| tagArg.value.length > 500) {
|
|
66
|
+
errors.push(`create secret tags[${indexArg}] must use the bounded key/value schema`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
tagKeys.push(tagArg.key);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (new Set(tagKeys).size !== tagKeys.length) {
|
|
73
|
+
errors.push('create secret tag keys must be unique');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const deliveryErrors = secretData.validateSecretDelivery(request.delivery);
|
|
78
|
+
errors.push(...deliveryErrors);
|
|
79
|
+
if (!Number.isSafeInteger(request.expectedTargetSecretsRevision)
|
|
80
|
+
|| request.expectedTargetSecretsRevision < 0) {
|
|
81
|
+
errors.push('create secret target revision must be a non-negative integer');
|
|
82
|
+
}
|
|
83
|
+
const canBuildContext = secretData.validateSecretMutationId(request.mutationId).length === 0
|
|
84
|
+
&& secretData.validateSecretOwner(request.target).length === 0
|
|
85
|
+
&& typeof request.key === 'string'
|
|
86
|
+
&& /^[A-Z_][A-Z0-9_]{0,252}$/.test(request.key)
|
|
87
|
+
&& typeof request.environment === 'string'
|
|
88
|
+
&& /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(request.environment)
|
|
89
|
+
&& deliveryErrors.length === 0
|
|
90
|
+
&& Number.isSafeInteger(request.expectedTargetSecretsRevision)
|
|
91
|
+
&& request.expectedTargetSecretsRevision >= 0;
|
|
92
|
+
const expectedContext = canBuildContext
|
|
93
|
+
? secretData.createSecretCreateEnvelopeContext({
|
|
94
|
+
mutationId: request.mutationId,
|
|
95
|
+
target: request.target,
|
|
96
|
+
key: request.key,
|
|
97
|
+
environment: request.environment,
|
|
98
|
+
delivery: request.delivery,
|
|
99
|
+
expectedTargetSecretsRevision: request.expectedTargetSecretsRevision,
|
|
100
|
+
})
|
|
101
|
+
: new Uint8Array();
|
|
102
|
+
errors.push(...await secretData.validateSecretValueInputForRecipient(request.valueInput, activeIngressRecipientArg, expectedContext));
|
|
103
|
+
return errors;
|
|
104
|
+
};
|
|
105
|
+
export const validateRotateSecretRequest = async (requestArg, activeIngressRecipientArg) => {
|
|
106
|
+
if (!requestArg || typeof requestArg !== 'object' || Array.isArray(requestArg)) {
|
|
107
|
+
return ['rotate secret request must be an object'];
|
|
108
|
+
}
|
|
109
|
+
const request = requestArg;
|
|
110
|
+
const errors = secretData.validateSecretMutationId(request.mutationId);
|
|
111
|
+
if (JSON.stringify(Object.keys(request).sort()) !== JSON.stringify([
|
|
112
|
+
'expectedActiveVersionId',
|
|
113
|
+
'expectedSecretRevision',
|
|
114
|
+
'expectedTargetSecretsRevision',
|
|
115
|
+
'identity',
|
|
116
|
+
'mutationId',
|
|
117
|
+
'secretId',
|
|
118
|
+
'valueInput',
|
|
119
|
+
])) {
|
|
120
|
+
errors.push('rotate secret request must use its exact schema');
|
|
121
|
+
}
|
|
122
|
+
if (!request.identity || typeof request.identity !== 'object'
|
|
123
|
+
|| typeof request.identity.jwt !== 'string') {
|
|
124
|
+
errors.push('rotate secret identity must be a JWT credential');
|
|
125
|
+
}
|
|
126
|
+
for (const field of ['secretId', 'expectedActiveVersionId']) {
|
|
127
|
+
if (typeof request[field] !== 'string'
|
|
128
|
+
|| !/^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(request[field])) {
|
|
129
|
+
errors.push(`rotate secret ${field} must be canonical`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!Number.isSafeInteger(request.expectedSecretRevision)
|
|
133
|
+
|| request.expectedSecretRevision < 1) {
|
|
134
|
+
errors.push('rotate secret revision must be a positive integer');
|
|
135
|
+
}
|
|
136
|
+
if (!Number.isSafeInteger(request.expectedTargetSecretsRevision)
|
|
137
|
+
|| request.expectedTargetSecretsRevision < 0) {
|
|
138
|
+
errors.push('rotate secret target revision must be a non-negative integer');
|
|
139
|
+
}
|
|
140
|
+
const canBuildContext = secretData.validateSecretMutationId(request.mutationId).length === 0
|
|
141
|
+
&& typeof request.secretId === 'string'
|
|
142
|
+
&& /^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(request.secretId)
|
|
143
|
+
&& typeof request.expectedActiveVersionId === 'string'
|
|
144
|
+
&& /^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(request.expectedActiveVersionId)
|
|
145
|
+
&& Number.isSafeInteger(request.expectedSecretRevision)
|
|
146
|
+
&& request.expectedSecretRevision >= 1
|
|
147
|
+
&& Number.isSafeInteger(request.expectedTargetSecretsRevision)
|
|
148
|
+
&& request.expectedTargetSecretsRevision >= 0;
|
|
149
|
+
const expectedContext = canBuildContext
|
|
150
|
+
? secretData.createSecretRotateEnvelopeContext({
|
|
151
|
+
mutationId: request.mutationId,
|
|
152
|
+
secretId: request.secretId,
|
|
153
|
+
expectedSecretRevision: request.expectedSecretRevision,
|
|
154
|
+
expectedActiveVersionId: request.expectedActiveVersionId,
|
|
155
|
+
expectedTargetSecretsRevision: request.expectedTargetSecretsRevision,
|
|
156
|
+
})
|
|
157
|
+
: new Uint8Array();
|
|
158
|
+
errors.push(...await secretData.validateSecretValueInputForRecipient(request.valueInput, activeIngressRecipientArg, expectedContext));
|
|
159
|
+
return errors;
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcmVxdWVzdHMvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFvUmhELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBaUIsRUFBdUMsRUFBRSxDQUFDLENBQzNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUM5RSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUM5QyxVQUFtQixFQUNuQix5QkFBa0QsRUFDL0IsRUFBRTtJQUNyQixJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQXFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUMxQixVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFDUixLQUFLO1FBQ0wsYUFBYTtRQUNiLE1BQU07UUFDTixhQUFhO1FBQ2IsTUFBTTtRQUNOLFVBQVU7UUFDVixZQUFZO1FBQ1osK0JBQStCO0tBQ2hDLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENB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
|
|
@@ -251,16 +251,3 @@ export interface IRequest_Any_Cloudly_DeleteServiceById extends plugins.typedreq
|
|
|
251
251
|
success: boolean;
|
|
252
252
|
};
|
|
253
253
|
}
|
|
254
|
-
export interface IRequest_Any_Cloudly_GetServiceSecretBundlesAsFlatObject extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Any_Cloudly_GetServiceSecretBundlesAsFlatObject> {
|
|
255
|
-
method: 'getServiceSecretBundlesAsFlatObject';
|
|
256
|
-
request: {
|
|
257
|
-
identity: IIdentity;
|
|
258
|
-
serviceId: string;
|
|
259
|
-
environment: string;
|
|
260
|
-
};
|
|
261
|
-
response: {
|
|
262
|
-
flatKeyValueObject: {
|
|
263
|
-
[key: string]: string;
|
|
264
|
-
};
|
|
265
|
-
};
|
|
266
|
-
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
-
import type { ICloudlySettings
|
|
2
|
+
import type { ICloudlySettings } from '../data/settings.js';
|
|
3
3
|
import type { IIdentity } from '../data/user.js';
|
|
4
4
|
export interface IRequest_GetSettings extends plugins.typedrequestInterfaces.ITypedRequest {
|
|
5
5
|
method: 'getSettings';
|
|
@@ -7,7 +7,7 @@ export interface IRequest_GetSettings extends plugins.typedrequestInterfaces.ITy
|
|
|
7
7
|
identity?: IIdentity;
|
|
8
8
|
};
|
|
9
9
|
response: {
|
|
10
|
-
settings:
|
|
10
|
+
settings: ICloudlySettings;
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
export interface IRequest_UpdateSettings extends plugins.typedrequestInterfaces.ITypedRequest {
|
|
@@ -51,6 +51,6 @@ export interface IRequest_GetSetting extends plugins.typedrequestInterfaces.ITyp
|
|
|
51
51
|
key: keyof ICloudlySettings;
|
|
52
52
|
};
|
|
53
53
|
response: {
|
|
54
|
-
value:
|
|
54
|
+
value: ICloudlySettings[keyof ICloudlySettings] | undefined;
|
|
55
55
|
};
|
|
56
56
|
}
|