@serve.zone/interfaces 25.1.0 → 25.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/changelog.md +19 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/secret.js +11 -4
- package/dist_ts/platform/index.d.ts +3 -1
- package/dist_ts/platform/index.js +4 -2
- package/dist_ts/platform/objectstorageretention.d.ts +63 -0
- package/dist_ts/platform/objectstorageretention.js +255 -0
- package/dist_ts/platform/types.d.ts +3 -0
- package/dist_ts/plugins.runtime.d.ts +2 -0
- package/dist_ts/plugins.runtime.js +4 -0
- package/dist_ts/requests/config.d.ts +3 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +394 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +35 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +315 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +1378 -0
- package/dist_ts/runtime.corestore.d.ts +204 -0
- package/dist_ts/runtime.corestore.js +620 -0
- package/dist_ts/runtime.d.ts +2 -0
- package/dist_ts/runtime.js +3 -1
- package/package.json +2 -2
- package/readme.md +37 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/secret.ts +12 -4
- package/ts/platform/index.ts +3 -0
- package/ts/platform/objectstorageretention.ts +372 -0
- package/ts/platform/types.ts +3 -0
- package/ts/plugins.runtime.ts +4 -0
- package/ts/requests/config.ts +3 -0
- package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +421 -0
- package/ts/runtime.cloudlylegacydeploymentsettlement.ts +2884 -0
- package/ts/runtime.corestore.ts +909 -0
- package/ts/runtime.ts +2 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { createCanonicalJsonSha256Hex } from '../private/canonicaljson.js';
|
|
2
|
+
export const objectStorageRetentionLimits = Object.freeze({
|
|
3
|
+
maximumPolicyIdLength: 96,
|
|
4
|
+
maximumRetentionDurationSeconds: 100 * 366 * 24 * 60 * 60,
|
|
5
|
+
});
|
|
6
|
+
const policyIdPattern = /^[A-Za-z0-9._-]{1,96}$/;
|
|
7
|
+
const identifierPattern = /^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/;
|
|
8
|
+
const sha256Pattern = /^[a-f0-9]{64}$/;
|
|
9
|
+
const etagPattern = /^[a-f0-9]{32}$/;
|
|
10
|
+
const sentinelKeyPattern = /^\.smartstorage-retention\/v1\/sentinel-[a-f0-9]{64}\.json$/;
|
|
11
|
+
const isRecord = (valueArg) => (Boolean(valueArg)
|
|
12
|
+
&& typeof valueArg === 'object'
|
|
13
|
+
&& !Array.isArray(valueArg)
|
|
14
|
+
&& (Object.getPrototypeOf(valueArg) === Object.prototype
|
|
15
|
+
|| Object.getPrototypeOf(valueArg) === null));
|
|
16
|
+
const hasExactKeys = (valueArg, keysArg) => {
|
|
17
|
+
const actualKeys = Object.keys(valueArg).sort();
|
|
18
|
+
const expectedKeys = [...keysArg].sort();
|
|
19
|
+
return actualKeys.length === expectedKeys.length
|
|
20
|
+
&& actualKeys.every((keyArg, indexArg) => keyArg === expectedKeys[indexArg]);
|
|
21
|
+
};
|
|
22
|
+
const isPositiveSafeInteger = (valueArg) => (Number.isSafeInteger(valueArg) && valueArg > 0);
|
|
23
|
+
export const validateObjectStorageRetentionIntent = (intentArg, pathArg = 'objectstorage retention intent') => {
|
|
24
|
+
if (!isRecord(intentArg)
|
|
25
|
+
|| !hasExactKeys(intentArg, ['mode', 'policyId', 'retentionDurationSeconds'])) {
|
|
26
|
+
return [`${pathArg} must use its exact schema`];
|
|
27
|
+
}
|
|
28
|
+
const errors = [];
|
|
29
|
+
if (intentArg.mode !== 'compliance'
|
|
30
|
+
|| typeof intentArg.policyId !== 'string'
|
|
31
|
+
|| !policyIdPattern.test(intentArg.policyId)) {
|
|
32
|
+
errors.push(`${pathArg} must identify a canonical compliance policy`);
|
|
33
|
+
}
|
|
34
|
+
if (!isPositiveSafeInteger(intentArg.retentionDurationSeconds)
|
|
35
|
+
|| intentArg.retentionDurationSeconds
|
|
36
|
+
> objectStorageRetentionLimits.maximumRetentionDurationSeconds) {
|
|
37
|
+
errors.push(`${pathArg} duration must be a positive bounded safe integer`);
|
|
38
|
+
}
|
|
39
|
+
return errors;
|
|
40
|
+
};
|
|
41
|
+
export const createObjectStorageRetentionRetainUntil = (createdAtArg, retentionDurationSecondsArg) => {
|
|
42
|
+
if (!isPositiveSafeInteger(createdAtArg)
|
|
43
|
+
|| !isPositiveSafeInteger(retentionDurationSecondsArg)
|
|
44
|
+
|| retentionDurationSecondsArg > objectStorageRetentionLimits.maximumRetentionDurationSeconds) {
|
|
45
|
+
throw new Error('objectstorage retention arithmetic requires positive bounded safe integers');
|
|
46
|
+
}
|
|
47
|
+
const retainUntil = createdAtArg + retentionDurationSecondsArg * 1000;
|
|
48
|
+
if (!Number.isSafeInteger(retainUntil) || retainUntil <= createdAtArg) {
|
|
49
|
+
throw new Error('objectstorage retention retainUntil exceeds safe integer bounds');
|
|
50
|
+
}
|
|
51
|
+
return retainUntil;
|
|
52
|
+
};
|
|
53
|
+
export const createObjectStorageRetentionIntentDigestInput = (intentArg) => {
|
|
54
|
+
const errors = validateObjectStorageRetentionIntent(intentArg);
|
|
55
|
+
if (errors.length > 0)
|
|
56
|
+
throw new Error(errors[0]);
|
|
57
|
+
return JSON.stringify({
|
|
58
|
+
capability: 'objectstorage',
|
|
59
|
+
retention: {
|
|
60
|
+
mode: intentArg.mode,
|
|
61
|
+
policyId: intentArg.policyId,
|
|
62
|
+
retentionDurationSeconds: intentArg.retentionDurationSeconds,
|
|
63
|
+
},
|
|
64
|
+
version: 1,
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
export const computeObjectStorageRetentionIntentSha256 = async (intentArg) => createCanonicalJsonSha256Hex(createObjectStorageRetentionIntentDigestInput(intentArg), (reasonArg) => { throw new Error(reasonArg); });
|
|
68
|
+
export const objectStorageRetentionIntentsEqual = (leftArg, rightArg) => validateObjectStorageRetentionIntent(leftArg).length === 0
|
|
69
|
+
&& validateObjectStorageRetentionIntent(rightArg).length === 0
|
|
70
|
+
&& leftArg.mode
|
|
71
|
+
=== rightArg.mode
|
|
72
|
+
&& leftArg.policyId
|
|
73
|
+
=== rightArg.policyId
|
|
74
|
+
&& leftArg.retentionDurationSeconds
|
|
75
|
+
=== rightArg.retentionDurationSeconds;
|
|
76
|
+
const retentionIntentFieldsEqual = (leftArg, rightArg) => isRecord(leftArg)
|
|
77
|
+
&& isRecord(rightArg)
|
|
78
|
+
&& leftArg.mode === 'compliance'
|
|
79
|
+
&& rightArg.mode === 'compliance'
|
|
80
|
+
&& typeof leftArg.policyId === 'string'
|
|
81
|
+
&& leftArg.policyId === rightArg.policyId
|
|
82
|
+
&& isPositiveSafeInteger(leftArg.retentionDurationSeconds)
|
|
83
|
+
&& leftArg.retentionDurationSeconds === rightArg.retentionDurationSeconds;
|
|
84
|
+
export const validateObjectStorageRetentionEvidence = async (evidenceArg, expectedArg) => {
|
|
85
|
+
if (!isRecord(evidenceArg)
|
|
86
|
+
|| !hasExactKeys(evidenceArg, [
|
|
87
|
+
'intent',
|
|
88
|
+
'intentSha256',
|
|
89
|
+
'authority',
|
|
90
|
+
'capability',
|
|
91
|
+
'receipt',
|
|
92
|
+
'verifiedAt',
|
|
93
|
+
])) {
|
|
94
|
+
return ['objectstorage retention evidence must use its exact schema'];
|
|
95
|
+
}
|
|
96
|
+
const errors = validateObjectStorageRetentionIntent(evidenceArg.intent);
|
|
97
|
+
const intent = evidenceArg.intent;
|
|
98
|
+
if (!retentionIntentFieldsEqual(intent, expectedArg.intent)) {
|
|
99
|
+
errors.push('objectstorage retention evidence intent must equal the expected intent');
|
|
100
|
+
}
|
|
101
|
+
if (typeof evidenceArg.intentSha256 !== 'string'
|
|
102
|
+
|| !sha256Pattern.test(evidenceArg.intentSha256)
|
|
103
|
+
|| errors.length === 0
|
|
104
|
+
&& evidenceArg.intentSha256 !== await computeObjectStorageRetentionIntentSha256(intent)) {
|
|
105
|
+
errors.push('objectstorage retention intent digest must exactly match the intent');
|
|
106
|
+
}
|
|
107
|
+
const authority = evidenceArg.authority;
|
|
108
|
+
if (!isRecord(authority)
|
|
109
|
+
|| !hasExactKeys(authority, [
|
|
110
|
+
'serviceId',
|
|
111
|
+
'bindingId',
|
|
112
|
+
'reconciliationGeneration',
|
|
113
|
+
'bindingRequestDigest',
|
|
114
|
+
])
|
|
115
|
+
|| typeof authority.serviceId !== 'string'
|
|
116
|
+
|| !identifierPattern.test(authority.serviceId)
|
|
117
|
+
|| authority.serviceId !== expectedArg.serviceId
|
|
118
|
+
|| typeof authority.bindingId !== 'string'
|
|
119
|
+
|| !identifierPattern.test(authority.bindingId)
|
|
120
|
+
|| authority.bindingId !== expectedArg.bindingId
|
|
121
|
+
|| !isPositiveSafeInteger(authority.reconciliationGeneration)
|
|
122
|
+
|| authority.reconciliationGeneration !== expectedArg.reconciliationGeneration
|
|
123
|
+
|| typeof authority.bindingRequestDigest !== 'string'
|
|
124
|
+
|| !sha256Pattern.test(authority.bindingRequestDigest)
|
|
125
|
+
|| authority.bindingRequestDigest !== expectedArg.bindingRequestDigest) {
|
|
126
|
+
errors.push('objectstorage retention evidence authority must match the trusted binding fence');
|
|
127
|
+
}
|
|
128
|
+
const capability = evidenceArg.capability;
|
|
129
|
+
if (!isRecord(capability)
|
|
130
|
+
|| !hasExactKeys(capability, [
|
|
131
|
+
'version',
|
|
132
|
+
'supported',
|
|
133
|
+
'backend',
|
|
134
|
+
'modes',
|
|
135
|
+
'atomicCreateOnly',
|
|
136
|
+
'retainedMultipartSupported',
|
|
137
|
+
])
|
|
138
|
+
|| capability.version !== 1
|
|
139
|
+
|| capability.supported !== true
|
|
140
|
+
|| (capability.backend !== 'standalone' && capability.backend !== 'clustered')
|
|
141
|
+
|| !Array.isArray(capability.modes)
|
|
142
|
+
|| capability.modes.length !== 1
|
|
143
|
+
|| capability.modes[0] !== 'compliance'
|
|
144
|
+
|| capability.atomicCreateOnly !== true
|
|
145
|
+
|| capability.retainedMultipartSupported !== false) {
|
|
146
|
+
errors.push('objectstorage retention capability evidence must be exact');
|
|
147
|
+
}
|
|
148
|
+
const receipt = evidenceArg.receipt;
|
|
149
|
+
if (!isRecord(receipt)
|
|
150
|
+
|| !hasExactKeys(receipt, [
|
|
151
|
+
'mode',
|
|
152
|
+
'policyId',
|
|
153
|
+
'retentionDurationSeconds',
|
|
154
|
+
'bucketName',
|
|
155
|
+
'configuredAt',
|
|
156
|
+
'sentinelKey',
|
|
157
|
+
'sentinel',
|
|
158
|
+
])) {
|
|
159
|
+
errors.push('objectstorage retention receipt must use its exact schema');
|
|
160
|
+
return errors;
|
|
161
|
+
}
|
|
162
|
+
if (!retentionIntentFieldsEqual(receipt, intent)) {
|
|
163
|
+
errors.push('objectstorage retention receipt intent must equal its evidence intent');
|
|
164
|
+
}
|
|
165
|
+
if (typeof receipt.bucketName !== 'string'
|
|
166
|
+
|| receipt.bucketName.length === 0
|
|
167
|
+
|| receipt.bucketName.length > 200
|
|
168
|
+
|| receipt.bucketName !== expectedArg.bucketName) {
|
|
169
|
+
errors.push('objectstorage retention receipt bucket must exactly match');
|
|
170
|
+
}
|
|
171
|
+
if (!isPositiveSafeInteger(receipt.configuredAt)
|
|
172
|
+
|| typeof receipt.sentinelKey !== 'string'
|
|
173
|
+
|| !sentinelKeyPattern.test(receipt.sentinelKey)) {
|
|
174
|
+
errors.push('objectstorage retention receipt configuration evidence must be canonical');
|
|
175
|
+
}
|
|
176
|
+
const sentinel = receipt.sentinel;
|
|
177
|
+
if (!isRecord(sentinel)
|
|
178
|
+
|| !hasExactKeys(sentinel, [
|
|
179
|
+
'version',
|
|
180
|
+
'mode',
|
|
181
|
+
'policyId',
|
|
182
|
+
'retentionDurationSeconds',
|
|
183
|
+
'createdAt',
|
|
184
|
+
'retainUntil',
|
|
185
|
+
'payloadSha256',
|
|
186
|
+
'metadataSha256',
|
|
187
|
+
'etag',
|
|
188
|
+
])) {
|
|
189
|
+
errors.push('objectstorage retention sentinel evidence must use its exact schema');
|
|
190
|
+
return errors;
|
|
191
|
+
}
|
|
192
|
+
if (sentinel.version !== 1 || !retentionIntentFieldsEqual(sentinel, intent)) {
|
|
193
|
+
errors.push('objectstorage retention sentinel intent must equal its evidence intent');
|
|
194
|
+
}
|
|
195
|
+
if (!isPositiveSafeInteger(sentinel.createdAt)
|
|
196
|
+
|| !isPositiveSafeInteger(sentinel.retainUntil)
|
|
197
|
+
|| !isPositiveSafeInteger(receipt.configuredAt)
|
|
198
|
+
|| sentinel.createdAt < receipt.configuredAt) {
|
|
199
|
+
errors.push('objectstorage retention timestamps must be positive and ordered');
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
try {
|
|
203
|
+
if (sentinel.retainUntil !== createObjectStorageRetentionRetainUntil(sentinel.createdAt, intent.retentionDurationSeconds)) {
|
|
204
|
+
errors.push('objectstorage retention retainUntil must equal createdAt plus duration');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
errors.push('objectstorage retention retainUntil arithmetic must be safe');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (typeof sentinel.payloadSha256 !== 'string' || !sha256Pattern.test(sentinel.payloadSha256)
|
|
212
|
+
|| typeof sentinel.metadataSha256 !== 'string' || !sha256Pattern.test(sentinel.metadataSha256)
|
|
213
|
+
|| typeof sentinel.etag !== 'string' || !etagPattern.test(sentinel.etag)) {
|
|
214
|
+
errors.push('objectstorage retention sentinel digests and ETag must be canonical');
|
|
215
|
+
}
|
|
216
|
+
if (!isPositiveSafeInteger(evidenceArg.verifiedAt)
|
|
217
|
+
|| !isPositiveSafeInteger(sentinel.createdAt)
|
|
218
|
+
|| evidenceArg.verifiedAt < sentinel.createdAt) {
|
|
219
|
+
errors.push('objectstorage retention verification timestamp must follow sentinel creation');
|
|
220
|
+
}
|
|
221
|
+
return errors;
|
|
222
|
+
};
|
|
223
|
+
export const validateObjectStorageRetentionBinding = async (bindingArg, expectedArg) => {
|
|
224
|
+
if (!isRecord(bindingArg)
|
|
225
|
+
|| !Object.hasOwn(bindingArg, 'schemaVersion')
|
|
226
|
+
|| !Object.hasOwn(bindingArg, 'intent')
|
|
227
|
+
|| Object.keys(bindingArg).some((keyArg) => !['schemaVersion', 'intent', 'evidence'].includes(keyArg))) {
|
|
228
|
+
return ['objectstorage retention binding must use its exact schema'];
|
|
229
|
+
}
|
|
230
|
+
const errors = bindingArg.schemaVersion === 1
|
|
231
|
+
? validateObjectStorageRetentionIntent(bindingArg.intent)
|
|
232
|
+
: ['objectstorage retention binding schemaVersion must be 1'];
|
|
233
|
+
if (!retentionIntentFieldsEqual(bindingArg.intent, expectedArg.intent)) {
|
|
234
|
+
errors.push('objectstorage retention binding intent must equal the trusted expected intent');
|
|
235
|
+
}
|
|
236
|
+
if (bindingArg.evidence !== undefined) {
|
|
237
|
+
errors.push(...await validateObjectStorageRetentionEvidence(bindingArg.evidence, expectedArg));
|
|
238
|
+
}
|
|
239
|
+
return errors;
|
|
240
|
+
};
|
|
241
|
+
export const validatePlatformBindingObjectStorageRetention = async (bindingArg, expectedArg) => {
|
|
242
|
+
if (!isRecord(bindingArg)) {
|
|
243
|
+
return ['platform objectstorage retention binding must be an object'];
|
|
244
|
+
}
|
|
245
|
+
if (bindingArg.capability !== 'objectstorage'
|
|
246
|
+
|| bindingArg.id !== expectedArg.bindingId
|
|
247
|
+
|| bindingArg.serviceId !== expectedArg.serviceId) {
|
|
248
|
+
return ['platform objectstorage retention must match an objectstorage binding authority'];
|
|
249
|
+
}
|
|
250
|
+
if (bindingArg.objectstorageRetention === undefined) {
|
|
251
|
+
return ['platform objectstorage retention binding must contain retention intent'];
|
|
252
|
+
}
|
|
253
|
+
return validateObjectStorageRetentionBinding(bindingArg.objectstorageRetention, expectedArg);
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0c3RvcmFnZXJldGVudGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsYXRmb3JtL29iamVjdHN0b3JhZ2VyZXRlbnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4RCxxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLCtCQUErQixFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQzFELENBQUMsQ0FBQztBQWdFSCxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQztBQUNqRCxNQUFNLGlCQUFpQixHQUFHLHFDQUFxQyxDQUFDO0FBQ2hFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDO0FBQ3ZDLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsNkRBQTZELENBQUM7QUFFekYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFpQixFQUF1QyxFQUFFLENBQUMsQ0FDM0UsT0FBTyxDQUFDLFFBQVEsQ0FBQztPQUNkLE9BQU8sUUFBUSxLQUFLLFFBQVE7T0FDNUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztPQUN4QixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDLFNBQVM7V0FDbkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FDL0MsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQ25CLFFBQWlDLEVBQ2pDLE9BQTBCLEVBQ2pCLEVBQUU7SUFDWCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFD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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { TSecretManagementScope } from '../data/secret.js';
|
|
2
|
+
import type { IObjectStorageRetentionBindingV1 } from './objectstorageretention.js';
|
|
2
3
|
export type TPlatformCapability = 'email' | 'sms' | 'pushnotification' | 'letter' | 'ai' | 'database' | 'objectstorage' | 'logging' | 'backup' | 'sip';
|
|
3
4
|
export type TPlatformAccessMode = 'rpc' | 'binding' | 'sidecar' | 'internal';
|
|
4
5
|
export type TPlatformBindingStatus = 'requested' | 'provisioning' | 'ready' | 'degraded' | 'failed' | 'disabled';
|
|
@@ -39,6 +40,8 @@ export interface IPlatformBinding {
|
|
|
39
40
|
endpoints?: IPlatformServiceEndpoint[];
|
|
40
41
|
/** Value-free reconciliation scope for service-owned credentials. */
|
|
41
42
|
credentialManagementScope?: Extract<TSecretManagementScope, `platform:${string}`>;
|
|
43
|
+
/** Capability-specific value-free immutable-retention intent and evidence. */
|
|
44
|
+
objectstorageRetention?: IObjectStorageRetentionBindingV1;
|
|
42
45
|
createdAt?: number;
|
|
43
46
|
updatedAt?: number;
|
|
44
47
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// node native scope for the Node-only /runtime export
|
|
2
|
+
import * as crypto from 'node:crypto';
|
|
3
|
+
export { crypto };
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5ydW50aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcGx1Z2lucy5ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMifQ==
|
|
@@ -4,6 +4,7 @@ import * as serverInterfaces from '../data/server.js';
|
|
|
4
4
|
import * as userInterfaces from '../data/user.js';
|
|
5
5
|
import type { IService } from '../data/service.js';
|
|
6
6
|
import type { IPlatformBinding, IPlatformProviderConfig } from '../platform/types.js';
|
|
7
|
+
import type { ICorestoreCredentialPublicationGrantV1 } from '../runtime.corestore.js';
|
|
7
8
|
export interface IRequest_Any_Cloudly_GetServerConfig extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Any_Cloudly_GetServerConfig> {
|
|
8
9
|
method: 'getServerConfig';
|
|
9
10
|
request: {
|
|
@@ -24,6 +25,7 @@ export interface IRequest_Any_Cloudly_GetClusterConfig extends plugins.typedrequ
|
|
|
24
25
|
services: IService[];
|
|
25
26
|
platformProviderConfigs?: IPlatformProviderConfig[];
|
|
26
27
|
platformBindings?: IPlatformBinding[];
|
|
28
|
+
corestoreCredentialPublicationGrants?: ICorestoreCredentialPublicationGrantV1[];
|
|
27
29
|
};
|
|
28
30
|
}
|
|
29
31
|
export interface IRequest_Cloudly_Coreflow_PushClusterConfig extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Cloudly_Coreflow_PushClusterConfig> {
|
|
@@ -33,6 +35,7 @@ export interface IRequest_Cloudly_Coreflow_PushClusterConfig extends plugins.typ
|
|
|
33
35
|
services: IService[];
|
|
34
36
|
platformProviderConfigs?: IPlatformProviderConfig[];
|
|
35
37
|
platformBindings?: IPlatformBinding[];
|
|
38
|
+
corestoreCredentialPublicationGrants?: ICorestoreCredentialPublicationGrantV1[];
|
|
36
39
|
};
|
|
37
40
|
response: {};
|
|
38
41
|
}
|