@bosunski/laravel-cloud-sdk 0.1.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/README.md +56 -0
- package/dist/http/client.d.ts +28 -0
- package/dist/http/client.js +79 -0
- package/dist/http/errors.d.ts +21 -0
- package/dist/http/errors.js +17 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +28 -0
- package/dist/resources/applications.d.ts +66 -0
- package/dist/resources/applications.js +163 -0
- package/dist/resources/databases.d.ts +74 -0
- package/dist/resources/databases.js +198 -0
- package/dist/resources/deployments.d.ts +223 -0
- package/dist/resources/deployments.js +112 -0
- package/dist/resources/domains.d.ts +66 -0
- package/dist/resources/domains.js +164 -0
- package/dist/resources/environments.d.ts +159 -0
- package/dist/resources/environments.js +417 -0
- package/dist/resources/instances.d.ts +83 -0
- package/dist/resources/instances.js +257 -0
- package/dist/types/jsonApi.d.ts +211 -0
- package/dist/types/jsonApi.js +57 -0
- package/dist/utils/query.d.ts +4 -0
- package/dist/utils/query.js +29 -0
- package/package.json +49 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createJsonApiCollectionSchema, createJsonApiResponseSchema, JsonApiResourceSchema, } from '../types/jsonApi.js';
|
|
3
|
+
import { deploymentResponseSchema, serializeDeploymentResponse, } from './deployments.js';
|
|
4
|
+
const colorSchema = z.enum([
|
|
5
|
+
'blue',
|
|
6
|
+
'green',
|
|
7
|
+
'orange',
|
|
8
|
+
'purple',
|
|
9
|
+
'red',
|
|
10
|
+
'yellow',
|
|
11
|
+
'cyan',
|
|
12
|
+
'gray',
|
|
13
|
+
]);
|
|
14
|
+
const phpVersionSchema = z.enum(['8.2:1', '8.3:1', '8.4:1', '8.5:1']);
|
|
15
|
+
const nodeVersionSchema = z.enum(['20', '22', '24']);
|
|
16
|
+
const environmentVariableSchema = z.object({
|
|
17
|
+
key: z.string(),
|
|
18
|
+
value: z.string().nullable().optional(),
|
|
19
|
+
});
|
|
20
|
+
const filesystemKeySchema = z.object({
|
|
21
|
+
id: z.string(),
|
|
22
|
+
disk: z.string(),
|
|
23
|
+
is_default_disk: z.boolean().optional(),
|
|
24
|
+
});
|
|
25
|
+
const environmentLogDataSchema = z
|
|
26
|
+
.object({
|
|
27
|
+
status: z.number().optional(),
|
|
28
|
+
method: z.string().optional(),
|
|
29
|
+
path: z.string().optional(),
|
|
30
|
+
duration_ms: z.number().optional(),
|
|
31
|
+
bytes_sent: z.number().optional(),
|
|
32
|
+
ip: z.string().optional(),
|
|
33
|
+
user_agent: z.string().optional(),
|
|
34
|
+
country: z.string().optional(),
|
|
35
|
+
})
|
|
36
|
+
.passthrough();
|
|
37
|
+
const environmentLogEntrySchema = z
|
|
38
|
+
.object({
|
|
39
|
+
message: z.string(),
|
|
40
|
+
level: z.string(),
|
|
41
|
+
type: z.string(),
|
|
42
|
+
logged_at: z.string(),
|
|
43
|
+
data: environmentLogDataSchema.optional(),
|
|
44
|
+
})
|
|
45
|
+
.passthrough();
|
|
46
|
+
const environmentLogMetaSchema = z
|
|
47
|
+
.object({
|
|
48
|
+
cursor: z.string().nullable().optional(),
|
|
49
|
+
type: z.string().nullable().optional(),
|
|
50
|
+
from: z.string(),
|
|
51
|
+
to: z.string(),
|
|
52
|
+
})
|
|
53
|
+
.passthrough();
|
|
54
|
+
const environmentLogsResponseSchema = z.object({
|
|
55
|
+
data: z.array(environmentLogEntrySchema),
|
|
56
|
+
meta: environmentLogMetaSchema,
|
|
57
|
+
});
|
|
58
|
+
const environmentAttributesSchema = z
|
|
59
|
+
.object({
|
|
60
|
+
name: z.string(),
|
|
61
|
+
slug: z.string(),
|
|
62
|
+
status: z.string(),
|
|
63
|
+
created_at: z.string(),
|
|
64
|
+
created_from_automation: z.boolean().optional(),
|
|
65
|
+
vanity_domain: z.string().nullable().optional(),
|
|
66
|
+
php_major_version: z.string().optional(),
|
|
67
|
+
build_command: z.string().nullable().optional(),
|
|
68
|
+
node_version: z.string().nullable().optional(),
|
|
69
|
+
deploy_command: z.string().nullable().optional(),
|
|
70
|
+
uses_octane: z.boolean().optional(),
|
|
71
|
+
uses_hibernation: z.boolean().optional(),
|
|
72
|
+
uses_push_to_deploy: z.boolean().optional(),
|
|
73
|
+
uses_deploy_hook: z.boolean().optional(),
|
|
74
|
+
environment_variables: z.array(environmentVariableSchema).optional(),
|
|
75
|
+
network_settings: z.record(z.string(), z.any()).optional(),
|
|
76
|
+
})
|
|
77
|
+
.passthrough();
|
|
78
|
+
const environmentResourceSchema = JsonApiResourceSchema.extend({
|
|
79
|
+
type: z.literal('environments'),
|
|
80
|
+
attributes: environmentAttributesSchema,
|
|
81
|
+
});
|
|
82
|
+
const environmentResponseSchema = createJsonApiResponseSchema(environmentResourceSchema);
|
|
83
|
+
const environmentCollectionSchema = createJsonApiCollectionSchema(environmentResourceSchema);
|
|
84
|
+
const mapEnvironment = (resource) => {
|
|
85
|
+
const parsed = environmentResourceSchema.parse(resource);
|
|
86
|
+
const { attributes } = parsed;
|
|
87
|
+
return {
|
|
88
|
+
id: parsed.id,
|
|
89
|
+
name: attributes.name,
|
|
90
|
+
slug: attributes.slug,
|
|
91
|
+
status: attributes.status,
|
|
92
|
+
createdAt: attributes.created_at,
|
|
93
|
+
createdFromAutomation: attributes.created_from_automation,
|
|
94
|
+
vanityDomain: attributes.vanity_domain ?? null,
|
|
95
|
+
phpMajorVersion: attributes.php_major_version,
|
|
96
|
+
buildCommand: attributes.build_command ?? null,
|
|
97
|
+
nodeVersion: attributes.node_version ?? null,
|
|
98
|
+
deployCommand: attributes.deploy_command ?? null,
|
|
99
|
+
usesOctane: attributes.uses_octane,
|
|
100
|
+
usesHibernation: attributes.uses_hibernation,
|
|
101
|
+
usesPushToDeploy: attributes.uses_push_to_deploy,
|
|
102
|
+
usesDeployHook: attributes.uses_deploy_hook,
|
|
103
|
+
environmentVariables: attributes.environment_variables?.map((variable) => ({
|
|
104
|
+
key: variable.key,
|
|
105
|
+
value: variable.value ?? null,
|
|
106
|
+
})),
|
|
107
|
+
raw: parsed,
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
const serializeEnvironmentList = (response) => ({
|
|
111
|
+
data: response.data.map(mapEnvironment),
|
|
112
|
+
included: response.included,
|
|
113
|
+
meta: response.meta,
|
|
114
|
+
links: response.links,
|
|
115
|
+
});
|
|
116
|
+
const serializeEnvironmentResponse = (response) => ({
|
|
117
|
+
data: mapEnvironment(response.data),
|
|
118
|
+
included: response.included,
|
|
119
|
+
meta: response.meta,
|
|
120
|
+
links: response.links,
|
|
121
|
+
});
|
|
122
|
+
const updateEnvironmentSchema = z
|
|
123
|
+
.object({
|
|
124
|
+
name: z.string().min(1).max(40).optional(),
|
|
125
|
+
slug: z.string().min(1).optional(),
|
|
126
|
+
color: colorSchema.optional(),
|
|
127
|
+
branch: z.string().optional(),
|
|
128
|
+
usesPushToDeploy: z.boolean().optional(),
|
|
129
|
+
usesDeployHook: z.boolean().optional(),
|
|
130
|
+
timeout: z.number().min(5).max(60).optional(),
|
|
131
|
+
phpVersion: phpVersionSchema.optional(),
|
|
132
|
+
buildCommand: z.string().max(2000).nullable().optional(),
|
|
133
|
+
nodeVersion: nodeVersionSchema.optional(),
|
|
134
|
+
deployCommand: z.string().max(2000).nullable().optional(),
|
|
135
|
+
usesVanityDomain: z.boolean().optional(),
|
|
136
|
+
databaseSchemaId: z.string().nullable().optional(),
|
|
137
|
+
cacheId: z.string().nullable().optional(),
|
|
138
|
+
websocketApplicationId: z.string().nullable().optional(),
|
|
139
|
+
environmentVariables: z
|
|
140
|
+
.array(z.object({
|
|
141
|
+
key: z.string(),
|
|
142
|
+
value: z.string().nullable().optional(),
|
|
143
|
+
}))
|
|
144
|
+
.optional(),
|
|
145
|
+
usesOctane: z.boolean().optional(),
|
|
146
|
+
sleepTimeout: z.number().optional(),
|
|
147
|
+
shutdownTimeout: z.number().optional(),
|
|
148
|
+
usesPurgeEdgeCacheOnDeploy: z.boolean().optional(),
|
|
149
|
+
nightwatchToken: z.string().nullable().optional(),
|
|
150
|
+
cacheStrategy: z.string().optional(),
|
|
151
|
+
responseHeadersFrame: z.string().optional(),
|
|
152
|
+
responseHeadersContentType: z.string().optional(),
|
|
153
|
+
responseHeadersRobotsTag: z.string().optional(),
|
|
154
|
+
responseHeadersHsts: z
|
|
155
|
+
.object({
|
|
156
|
+
max_age: z.number(),
|
|
157
|
+
include_subdomains: z.boolean().optional(),
|
|
158
|
+
preload: z.boolean().optional(),
|
|
159
|
+
})
|
|
160
|
+
.nullable()
|
|
161
|
+
.optional(),
|
|
162
|
+
filesystemKeys: z
|
|
163
|
+
.array(z.object({
|
|
164
|
+
id: z.string(),
|
|
165
|
+
disk: z.string(),
|
|
166
|
+
isDefaultDisk: z.boolean().optional(),
|
|
167
|
+
}))
|
|
168
|
+
.optional(),
|
|
169
|
+
firewallRateLimitLevel: z.enum(['challenge', 'throttle', 'ban']).optional(),
|
|
170
|
+
firewallUnderAttackMode: z.boolean().optional(),
|
|
171
|
+
})
|
|
172
|
+
.strict();
|
|
173
|
+
const mapEnvironmentUpdatePayload = (payload) => {
|
|
174
|
+
const body = {};
|
|
175
|
+
const assign = (key, value) => {
|
|
176
|
+
if (value !== undefined) {
|
|
177
|
+
body[key] = value;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
assign('name', payload.name);
|
|
181
|
+
assign('slug', payload.slug);
|
|
182
|
+
assign('color', payload.color);
|
|
183
|
+
assign('branch', payload.branch);
|
|
184
|
+
assign('uses_push_to_deploy', payload.usesPushToDeploy);
|
|
185
|
+
assign('uses_deploy_hook', payload.usesDeployHook);
|
|
186
|
+
assign('timeout', payload.timeout);
|
|
187
|
+
assign('php_version', payload.phpVersion);
|
|
188
|
+
assign('build_command', payload.buildCommand);
|
|
189
|
+
assign('node_version', payload.nodeVersion);
|
|
190
|
+
assign('deploy_command', payload.deployCommand);
|
|
191
|
+
assign('uses_vanity_domain', payload.usesVanityDomain);
|
|
192
|
+
assign('database_schema_id', payload.databaseSchemaId);
|
|
193
|
+
assign('cache_id', payload.cacheId);
|
|
194
|
+
assign('websocket_application_id', payload.websocketApplicationId);
|
|
195
|
+
assign('environment_variables', payload.environmentVariables);
|
|
196
|
+
assign('uses_octane', payload.usesOctane);
|
|
197
|
+
assign('sleep_timeout', payload.sleepTimeout);
|
|
198
|
+
assign('shutdown_timeout', payload.shutdownTimeout);
|
|
199
|
+
assign('uses_purge_edge_cache_on_deploy', payload.usesPurgeEdgeCacheOnDeploy);
|
|
200
|
+
assign('nightwatch_token', payload.nightwatchToken);
|
|
201
|
+
assign('cache_strategy', payload.cacheStrategy);
|
|
202
|
+
assign('response_headers_frame', payload.responseHeadersFrame);
|
|
203
|
+
assign('response_headers_content_type', payload.responseHeadersContentType);
|
|
204
|
+
assign('response_headers_robots_tag', payload.responseHeadersRobotsTag);
|
|
205
|
+
assign('response_headers_hsts', payload.responseHeadersHsts);
|
|
206
|
+
if (payload.filesystemKeys) {
|
|
207
|
+
body['filesystem_keys'] = payload.filesystemKeys.map((item) => ({
|
|
208
|
+
id: item.id,
|
|
209
|
+
disk: item.disk,
|
|
210
|
+
is_default_disk: item.isDefaultDisk,
|
|
211
|
+
}));
|
|
212
|
+
}
|
|
213
|
+
assign('firewall_rate_limit_level', payload.firewallRateLimitLevel);
|
|
214
|
+
assign('firewall_under_attack_mode', payload.firewallUnderAttackMode);
|
|
215
|
+
return body;
|
|
216
|
+
};
|
|
217
|
+
const addEnvironmentVariablesSchema = z.object({
|
|
218
|
+
method: z.enum(['append', 'set']),
|
|
219
|
+
variables: z
|
|
220
|
+
.array(z.object({
|
|
221
|
+
key: z.string(),
|
|
222
|
+
value: z.string().nullable().optional(),
|
|
223
|
+
}))
|
|
224
|
+
.min(1),
|
|
225
|
+
});
|
|
226
|
+
const replaceEnvironmentVariablesSchema = z
|
|
227
|
+
.object({
|
|
228
|
+
content: z.string().nullable().optional(),
|
|
229
|
+
variables: z
|
|
230
|
+
.array(z.object({
|
|
231
|
+
key: z.string(),
|
|
232
|
+
value: z.string().nullable().optional(),
|
|
233
|
+
}))
|
|
234
|
+
.optional(),
|
|
235
|
+
})
|
|
236
|
+
.superRefine((value, ctx) => {
|
|
237
|
+
const hasContent = value.content !== undefined && value.content !== null;
|
|
238
|
+
const hasVariables = value.variables !== undefined;
|
|
239
|
+
if (hasContent === hasVariables) {
|
|
240
|
+
ctx.addIssue({
|
|
241
|
+
code: z.ZodIssueCode.custom,
|
|
242
|
+
message: 'Provide either content or variables, but not both.',
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
const mapVariablesToApi = (variables) => variables.map((variable) => ({
|
|
247
|
+
key: variable.key,
|
|
248
|
+
value: variable.value ?? null,
|
|
249
|
+
}));
|
|
250
|
+
const mapEnvironmentLogEntry = (entry) => ({
|
|
251
|
+
message: entry.message,
|
|
252
|
+
level: entry.level,
|
|
253
|
+
type: entry.type,
|
|
254
|
+
loggedAt: entry.logged_at,
|
|
255
|
+
data: entry.data ? { ...entry.data } : undefined,
|
|
256
|
+
});
|
|
257
|
+
export class EnvironmentsResource {
|
|
258
|
+
client;
|
|
259
|
+
constructor(client) {
|
|
260
|
+
this.client = client;
|
|
261
|
+
}
|
|
262
|
+
async list(applicationId, options) {
|
|
263
|
+
const query = {};
|
|
264
|
+
if (options?.include?.length) {
|
|
265
|
+
query.include = options.include.join(',');
|
|
266
|
+
}
|
|
267
|
+
if (options?.filter?.name) {
|
|
268
|
+
query['filter[name]'] = options.filter.name;
|
|
269
|
+
}
|
|
270
|
+
if (options?.filter?.status) {
|
|
271
|
+
query['filter[status]'] = options.filter.status;
|
|
272
|
+
}
|
|
273
|
+
if (options?.filter?.slug) {
|
|
274
|
+
query['filter[slug]'] = options.filter.slug;
|
|
275
|
+
}
|
|
276
|
+
if (options?.page?.number !== undefined) {
|
|
277
|
+
query['page[number]'] = options.page.number;
|
|
278
|
+
}
|
|
279
|
+
if (options?.page?.size !== undefined) {
|
|
280
|
+
query['page[size]'] = options.page.size;
|
|
281
|
+
}
|
|
282
|
+
const response = await this.client.request({
|
|
283
|
+
path: `/applications/${applicationId}/environments`,
|
|
284
|
+
method: 'GET',
|
|
285
|
+
query,
|
|
286
|
+
schema: environmentCollectionSchema,
|
|
287
|
+
});
|
|
288
|
+
return serializeEnvironmentList(response);
|
|
289
|
+
}
|
|
290
|
+
async retrieve(environmentId, options) {
|
|
291
|
+
const query = options?.include?.length
|
|
292
|
+
? { include: options.include.join(',') }
|
|
293
|
+
: undefined;
|
|
294
|
+
const response = await this.client.request({
|
|
295
|
+
path: `/environments/${environmentId}`,
|
|
296
|
+
method: 'GET',
|
|
297
|
+
query,
|
|
298
|
+
schema: environmentResponseSchema,
|
|
299
|
+
});
|
|
300
|
+
return serializeEnvironmentResponse(response);
|
|
301
|
+
}
|
|
302
|
+
async create(applicationId, payload) {
|
|
303
|
+
const parsedPayload = z
|
|
304
|
+
.object({
|
|
305
|
+
branch: z.string().min(1),
|
|
306
|
+
name: z.string().min(1).max(40),
|
|
307
|
+
})
|
|
308
|
+
.parse(payload);
|
|
309
|
+
const response = await this.client.request({
|
|
310
|
+
path: `/applications/${applicationId}/environments`,
|
|
311
|
+
method: 'POST',
|
|
312
|
+
json: parsedPayload,
|
|
313
|
+
schema: environmentResponseSchema,
|
|
314
|
+
});
|
|
315
|
+
return serializeEnvironmentResponse(response);
|
|
316
|
+
}
|
|
317
|
+
async update(environmentId, payload) {
|
|
318
|
+
const parsedPayload = updateEnvironmentSchema.parse(payload);
|
|
319
|
+
const body = mapEnvironmentUpdatePayload(parsedPayload);
|
|
320
|
+
const response = await this.client.request({
|
|
321
|
+
path: `/environments/${environmentId}`,
|
|
322
|
+
method: 'PATCH',
|
|
323
|
+
json: body,
|
|
324
|
+
schema: environmentResponseSchema,
|
|
325
|
+
});
|
|
326
|
+
return serializeEnvironmentResponse(response);
|
|
327
|
+
}
|
|
328
|
+
async delete(environmentId) {
|
|
329
|
+
await this.client.request({
|
|
330
|
+
path: `/environments/${environmentId}`,
|
|
331
|
+
method: 'DELETE',
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
async start(environmentId, options) {
|
|
335
|
+
const body = options?.redeploy !== undefined ? { redeploy: options.redeploy } : undefined;
|
|
336
|
+
const response = await this.client.request({
|
|
337
|
+
path: `/environments/${environmentId}/start`,
|
|
338
|
+
method: 'POST',
|
|
339
|
+
json: body,
|
|
340
|
+
schema: deploymentResponseSchema,
|
|
341
|
+
});
|
|
342
|
+
return serializeDeploymentResponse(response);
|
|
343
|
+
}
|
|
344
|
+
async stop(environmentId) {
|
|
345
|
+
const response = await this.client.request({
|
|
346
|
+
path: `/environments/${environmentId}/stop`,
|
|
347
|
+
method: 'POST',
|
|
348
|
+
schema: environmentResponseSchema,
|
|
349
|
+
});
|
|
350
|
+
return serializeEnvironmentResponse(response);
|
|
351
|
+
}
|
|
352
|
+
async addVariables(environmentId, payload) {
|
|
353
|
+
const parsedPayload = addEnvironmentVariablesSchema.parse(payload);
|
|
354
|
+
const response = await this.client.request({
|
|
355
|
+
path: `/environments/${environmentId}/variables`,
|
|
356
|
+
method: 'POST',
|
|
357
|
+
json: {
|
|
358
|
+
method: parsedPayload.method,
|
|
359
|
+
variables: mapVariablesToApi(parsedPayload.variables),
|
|
360
|
+
},
|
|
361
|
+
schema: environmentResponseSchema,
|
|
362
|
+
});
|
|
363
|
+
return serializeEnvironmentResponse(response);
|
|
364
|
+
}
|
|
365
|
+
async replaceVariables(environmentId, payload) {
|
|
366
|
+
const parsedPayload = replaceEnvironmentVariablesSchema.parse(payload);
|
|
367
|
+
const body = {};
|
|
368
|
+
if (parsedPayload.content !== undefined && parsedPayload.content !== null) {
|
|
369
|
+
body.content = parsedPayload.content;
|
|
370
|
+
}
|
|
371
|
+
if (parsedPayload.variables) {
|
|
372
|
+
body.variables = mapVariablesToApi(parsedPayload.variables);
|
|
373
|
+
}
|
|
374
|
+
const response = await this.client.request({
|
|
375
|
+
path: `/environments/${environmentId}/variables`,
|
|
376
|
+
method: 'PUT',
|
|
377
|
+
json: body,
|
|
378
|
+
schema: environmentResponseSchema,
|
|
379
|
+
});
|
|
380
|
+
return serializeEnvironmentResponse(response);
|
|
381
|
+
}
|
|
382
|
+
async listLogs(environmentId, options) {
|
|
383
|
+
const parsedOptions = z
|
|
384
|
+
.object({
|
|
385
|
+
from: z.string().min(1),
|
|
386
|
+
to: z.string().min(1),
|
|
387
|
+
query: z.string().optional(),
|
|
388
|
+
type: z.enum(['all', 'application', 'access']).optional(),
|
|
389
|
+
cursor: z.string().optional(),
|
|
390
|
+
})
|
|
391
|
+
.parse(options);
|
|
392
|
+
const query = {
|
|
393
|
+
from: parsedOptions.from,
|
|
394
|
+
to: parsedOptions.to,
|
|
395
|
+
};
|
|
396
|
+
if (parsedOptions.query) {
|
|
397
|
+
query.query = parsedOptions.query;
|
|
398
|
+
}
|
|
399
|
+
if (parsedOptions.type) {
|
|
400
|
+
query.type = parsedOptions.type;
|
|
401
|
+
}
|
|
402
|
+
if (parsedOptions.cursor) {
|
|
403
|
+
query.cursor = parsedOptions.cursor;
|
|
404
|
+
}
|
|
405
|
+
const response = await this.client.request({
|
|
406
|
+
path: `/environments/${environmentId}/logs`,
|
|
407
|
+
method: 'GET',
|
|
408
|
+
query,
|
|
409
|
+
schema: environmentLogsResponseSchema,
|
|
410
|
+
accept: 'application/json',
|
|
411
|
+
});
|
|
412
|
+
return {
|
|
413
|
+
data: response.data.map(mapEnvironmentLogEntry),
|
|
414
|
+
meta: response.meta,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { HttpClient } from '../http/client.js';
|
|
2
|
+
import { JsonApiResponse, JsonApiResource } from '../types/jsonApi.js';
|
|
3
|
+
export interface InstanceBackgroundProcess {
|
|
4
|
+
type: string;
|
|
5
|
+
processes: number;
|
|
6
|
+
command?: string;
|
|
7
|
+
config?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface Instance {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
size: string;
|
|
14
|
+
scalingType: string;
|
|
15
|
+
minReplicas: number;
|
|
16
|
+
maxReplicas: number;
|
|
17
|
+
usesScheduler: boolean;
|
|
18
|
+
usesSleepMode?: boolean;
|
|
19
|
+
sleepTimeout?: number | null;
|
|
20
|
+
usesOctane?: boolean;
|
|
21
|
+
usesInertiaSsr?: boolean;
|
|
22
|
+
scalingCpuThresholdPercentage?: number | null;
|
|
23
|
+
scalingMemoryThresholdPercentage?: number | null;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
raw: JsonApiResource;
|
|
26
|
+
}
|
|
27
|
+
export interface ListInstancesOptions {
|
|
28
|
+
include?: Array<'environment' | 'backgroundProcesses'>;
|
|
29
|
+
filter?: {
|
|
30
|
+
name?: string;
|
|
31
|
+
type?: string;
|
|
32
|
+
size?: string;
|
|
33
|
+
scalingType?: string;
|
|
34
|
+
};
|
|
35
|
+
page?: {
|
|
36
|
+
number?: number;
|
|
37
|
+
size?: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface CreateInstancePayload {
|
|
41
|
+
name: string;
|
|
42
|
+
type: string;
|
|
43
|
+
size: string;
|
|
44
|
+
scalingType: string;
|
|
45
|
+
maxReplicas: number;
|
|
46
|
+
minReplicas: number;
|
|
47
|
+
usesScheduler: boolean;
|
|
48
|
+
usesSleepMode?: boolean;
|
|
49
|
+
sleepTimeout?: number;
|
|
50
|
+
usesOctane?: boolean;
|
|
51
|
+
usesInertiaSsr?: boolean;
|
|
52
|
+
scalingCpuThresholdPercentage?: number | null;
|
|
53
|
+
scalingMemoryThresholdPercentage?: number | null;
|
|
54
|
+
backgroundProcesses?: InstanceBackgroundProcess[];
|
|
55
|
+
}
|
|
56
|
+
export interface UpdateInstancePayload {
|
|
57
|
+
name?: string;
|
|
58
|
+
size?: string;
|
|
59
|
+
scalingType?: string;
|
|
60
|
+
maxReplicas?: number;
|
|
61
|
+
minReplicas?: number;
|
|
62
|
+
usesScheduler?: boolean;
|
|
63
|
+
usesSleepMode?: boolean;
|
|
64
|
+
sleepTimeout?: number;
|
|
65
|
+
usesOctane?: boolean;
|
|
66
|
+
usesInertiaSsr?: boolean;
|
|
67
|
+
scalingCpuThresholdPercentage?: number | null;
|
|
68
|
+
scalingMemoryThresholdPercentage?: number | null;
|
|
69
|
+
backgroundProcesses?: InstanceBackgroundProcess[];
|
|
70
|
+
}
|
|
71
|
+
export interface InstanceListResponse extends JsonApiResponse<Instance[]> {
|
|
72
|
+
}
|
|
73
|
+
export interface InstanceResponse extends JsonApiResponse<Instance> {
|
|
74
|
+
}
|
|
75
|
+
export declare class InstancesResource {
|
|
76
|
+
private readonly client;
|
|
77
|
+
constructor(client: HttpClient);
|
|
78
|
+
list(environmentId: string, options?: ListInstancesOptions): Promise<InstanceListResponse>;
|
|
79
|
+
create(environmentId: string, payload: CreateInstancePayload): Promise<InstanceResponse>;
|
|
80
|
+
retrieve(instanceId: string, options?: Pick<ListInstancesOptions, 'include'>): Promise<InstanceResponse>;
|
|
81
|
+
update(instanceId: string, payload: UpdateInstancePayload): Promise<InstanceResponse>;
|
|
82
|
+
delete(instanceId: string): Promise<void>;
|
|
83
|
+
}
|