@scaleway/sdk-rdb 2.2.0 → 2.3.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.
@@ -1,1061 +1,724 @@
1
- import { API as API$1, toApiLocality, urlParams, validatePathParam, enrichForPagination, waitForResource } from "@scaleway/sdk-client";
2
- import { DATABASE_BACKUP_TRANSIENT_STATUSES, INSTANCE_TRANSIENT_STATUSES, READ_REPLICA_TRANSIENT_STATUSES, INSTANCE_LOG_TRANSIENT_STATUSES, SNAPSHOT_TRANSIENT_STATUSES } from "./content.gen.js";
3
- import { unmarshalListDatabaseEnginesResponse, unmarshalListNodeTypesResponse, unmarshalListDatabaseBackupsResponse, marshalCreateDatabaseBackupRequest, unmarshalDatabaseBackup, marshalUpdateDatabaseBackupRequest, marshalRestoreDatabaseBackupRequest, marshalUpgradeInstanceRequest, unmarshalInstance, unmarshalListInstancesResponse, marshalCreateInstanceRequest, marshalUpdateInstanceRequest, marshalCloneInstanceRequest, unmarshalInstanceMetrics, marshalCreateReadReplicaRequest, unmarshalReadReplica, marshalCreateReadReplicaEndpointRequest, marshalPrepareInstanceLogsRequest, unmarshalPrepareInstanceLogsResponse, unmarshalListInstanceLogsResponse, unmarshalInstanceLog, marshalPurgeInstanceLogsRequest, unmarshalListInstanceLogsDetailsResponse, marshalAddInstanceSettingsRequest, unmarshalAddInstanceSettingsResponse, marshalDeleteInstanceSettingsRequest, unmarshalDeleteInstanceSettingsResponse, marshalSetInstanceSettingsRequest, unmarshalSetInstanceSettingsResponse, unmarshalListInstanceACLRulesResponse, marshalAddInstanceACLRulesRequest, unmarshalAddInstanceACLRulesResponse, marshalSetInstanceACLRulesRequest, unmarshalSetInstanceACLRulesResponse, marshalDeleteInstanceACLRulesRequest, unmarshalDeleteInstanceACLRulesResponse, unmarshalListUsersResponse, marshalCreateUserRequest, unmarshalUser, marshalUpdateUserRequest, unmarshalListDatabasesResponse, marshalCreateDatabaseRequest, unmarshalDatabase, unmarshalListPrivilegesResponse, marshalSetPrivilegeRequest, unmarshalPrivilege, unmarshalListSnapshotsResponse, unmarshalSnapshot, marshalCreateSnapshotRequest, marshalUpdateSnapshotRequest, marshalCreateInstanceFromSnapshotRequest, marshalCreateEndpointRequest, unmarshalEndpoint, marshalMigrateEndpointRequest, unmarshalMaintenance } from "./marshalling.gen.js";
4
- const jsonContentHeaders = {
5
- "Content-Type": "application/json; charset=utf-8"
6
- };
7
- class API extends API$1 {
8
- /**
9
- * Locality of this API.
10
- * type {'zone','region','global','unspecified'}
11
- */
12
- static LOCALITY = toApiLocality({
13
- regions: ["fr-par", "nl-ams", "pl-waw"]
14
- });
15
- pageOfListDatabaseEngines = (request = {}) => this.client.fetch(
16
- {
17
- method: "GET",
18
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/database-engines`,
19
- urlParams: urlParams(
20
- ["name", request.name],
21
- ["page", request.page],
22
- [
23
- "page_size",
24
- request.pageSize ?? this.client.settings.defaultPageSize
25
- ],
26
- ["version", request.version]
27
- )
28
- },
29
- unmarshalListDatabaseEnginesResponse
30
- );
31
- /**
32
- * List available database engines. List the PostgreSQL and MySQL database engines available at Scaleway.
33
- *
34
- * @param request - The request {@link ListDatabaseEnginesRequest}
35
- * @returns A Promise of ListDatabaseEnginesResponse
36
- */
37
- listDatabaseEngines = (request = {}) => enrichForPagination("engines", this.pageOfListDatabaseEngines, request);
38
- pageOfListNodeTypes = (request) => this.client.fetch(
39
- {
40
- method: "GET",
41
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/node-types`,
42
- urlParams: urlParams(
43
- ["include_disabled_types", request.includeDisabledTypes],
44
- ["page", request.page],
45
- [
46
- "page_size",
47
- request.pageSize ?? this.client.settings.defaultPageSize
48
- ]
49
- )
50
- },
51
- unmarshalListNodeTypesResponse
52
- );
53
- /**
54
- * List available node types. List all available node types. By default, the node types returned in the list are ordered by creation date in ascending order, though this can be modified via the `order_by` field.
55
- *
56
- * @param request - The request {@link ListNodeTypesRequest}
57
- * @returns A Promise of ListNodeTypesResponse
58
- */
59
- listNodeTypes = (request) => enrichForPagination("nodeTypes", this.pageOfListNodeTypes, request);
60
- pageOfListDatabaseBackups = (request = {}) => this.client.fetch(
61
- {
62
- method: "GET",
63
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups`,
64
- urlParams: urlParams(
65
- ["instance_id", request.instanceId],
66
- ["name", request.name],
67
- ["order_by", request.orderBy],
68
- ["organization_id", request.organizationId],
69
- ["page", request.page],
70
- [
71
- "page_size",
72
- request.pageSize ?? this.client.settings.defaultPageSize
73
- ],
74
- ["project_id", request.projectId]
75
- )
76
- },
77
- unmarshalListDatabaseBackupsResponse
78
- );
79
- /**
80
- * List database backups. List all backups in a specified region, for a given Scaleway Organization or Scaleway Project. By default, the backups listed are ordered by creation date in ascending order. This can be modified via the `order_by` field.
81
- *
82
- * @param request - The request {@link ListDatabaseBackupsRequest}
83
- * @returns A Promise of ListDatabaseBackupsResponse
84
- */
85
- listDatabaseBackups = (request = {}) => enrichForPagination(
86
- "databaseBackups",
87
- this.pageOfListDatabaseBackups,
88
- request
89
- );
90
- /**
91
- * Create a database backup. Create a new backup. You must set the `instance_id`, `database_name`, `name` and `expires_at` parameters.
92
- *
93
- * @param request - The request {@link CreateDatabaseBackupRequest}
94
- * @returns A Promise of DatabaseBackup
95
- */
96
- createDatabaseBackup = (request) => this.client.fetch(
97
- {
98
- body: JSON.stringify(
99
- marshalCreateDatabaseBackupRequest(request, this.client.settings)
100
- ),
101
- headers: jsonContentHeaders,
102
- method: "POST",
103
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups`
104
- },
105
- unmarshalDatabaseBackup
106
- );
107
- /**
108
- * Get a database backup. Retrieve information about a given backup, specified by its database backup ID and region. Full details about the backup, like size, URL and expiration date, are returned in the response.
109
- *
110
- * @param request - The request {@link GetDatabaseBackupRequest}
111
- * @returns A Promise of DatabaseBackup
112
- */
113
- getDatabaseBackup = (request) => this.client.fetch(
114
- {
115
- method: "GET",
116
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}`
117
- },
118
- unmarshalDatabaseBackup
119
- );
120
- /**
121
- * Waits for {@link DatabaseBackup} to be in a final state.
122
- *
123
- * @param request - The request {@link GetDatabaseBackupRequest}
124
- * @param options - The waiting options
125
- * @returns A Promise of DatabaseBackup
126
- */
127
- waitForDatabaseBackup = (request, options) => waitForResource(
128
- options?.stop ?? ((res) => Promise.resolve(
129
- !DATABASE_BACKUP_TRANSIENT_STATUSES.includes(res.status)
130
- )),
131
- this.getDatabaseBackup,
132
- request,
133
- options
134
- );
135
- /**
136
- * Update a database backup. Update the parameters of a backup, including name and expiration date.
137
- *
138
- * @param request - The request {@link UpdateDatabaseBackupRequest}
139
- * @returns A Promise of DatabaseBackup
140
- */
141
- updateDatabaseBackup = (request) => this.client.fetch(
142
- {
143
- body: JSON.stringify(
144
- marshalUpdateDatabaseBackupRequest(request, this.client.settings)
145
- ),
146
- headers: jsonContentHeaders,
147
- method: "PATCH",
148
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}`
149
- },
150
- unmarshalDatabaseBackup
151
- );
152
- /**
153
- * Delete a database backup. Delete a backup, specified by its database backup ID and region. Deleting a backup is permanent, and cannot be undone.
154
- *
155
- * @param request - The request {@link DeleteDatabaseBackupRequest}
156
- * @returns A Promise of DatabaseBackup
157
- */
158
- deleteDatabaseBackup = (request) => this.client.fetch(
159
- {
160
- method: "DELETE",
161
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}`
162
- },
163
- unmarshalDatabaseBackup
164
- );
165
- /**
166
- * Restore a database backup. Launch the process of restoring database backup. You must specify the `instance_id` of the Database Instance of destination, where the backup will be restored. Note that large database backups can take up to several hours to restore.
167
- *
168
- * @param request - The request {@link RestoreDatabaseBackupRequest}
169
- * @returns A Promise of DatabaseBackup
170
- */
171
- restoreDatabaseBackup = (request) => this.client.fetch(
172
- {
173
- body: JSON.stringify(
174
- marshalRestoreDatabaseBackupRequest(request, this.client.settings)
175
- ),
176
- headers: jsonContentHeaders,
177
- method: "POST",
178
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}/restore`
179
- },
180
- unmarshalDatabaseBackup
181
- );
182
- /**
183
- * Export a database backup. Export a backup, specified by the `database_backup_id` and the `region` parameters. The download URL is returned in the response.
184
- *
185
- * @param request - The request {@link ExportDatabaseBackupRequest}
186
- * @returns A Promise of DatabaseBackup
187
- */
188
- exportDatabaseBackup = (request) => this.client.fetch(
189
- {
190
- body: "{}",
191
- headers: jsonContentHeaders,
192
- method: "POST",
193
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}/export`
194
- },
195
- unmarshalDatabaseBackup
196
- );
197
- /**
198
- * Upgrade a Database Instance. Upgrade your current Database Instance specifications like node type, high availability, volume, or the database engine version. Note that upon upgrade the `enable_ha` parameter can only be set to `true`.
199
- *
200
- * @param request - The request {@link UpgradeInstanceRequest}
201
- * @returns A Promise of Instance
202
- */
203
- upgradeInstance = (request) => this.client.fetch(
204
- {
205
- body: JSON.stringify(
206
- marshalUpgradeInstanceRequest(request, this.client.settings)
207
- ),
208
- headers: jsonContentHeaders,
209
- method: "POST",
210
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/upgrade`
211
- },
212
- unmarshalInstance
213
- );
214
- pageOfListInstances = (request = {}) => this.client.fetch(
215
- {
216
- method: "GET",
217
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances`,
218
- urlParams: urlParams(
219
- ["has_maintenances", request.hasMaintenances],
220
- ["name", request.name],
221
- ["order_by", request.orderBy],
222
- ["organization_id", request.organizationId],
223
- ["page", request.page],
224
- [
225
- "page_size",
226
- request.pageSize ?? this.client.settings.defaultPageSize
227
- ],
228
- ["project_id", request.projectId],
229
- ["tags", request.tags]
230
- )
231
- },
232
- unmarshalListInstancesResponse
233
- );
234
- /**
235
- * List Database Instances. List all Database Instances in the specified region, for a given Scaleway Organization or Scaleway Project. By default, the Database Instances returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field. You can define additional parameters for your query, such as `tags` and `name`. For the `name` parameter, the value you include will be checked against the whole name string to see if it includes the string you put in the parameter.
236
- *
237
- * @param request - The request {@link ListInstancesRequest}
238
- * @returns A Promise of ListInstancesResponse
239
- */
240
- listInstances = (request = {}) => enrichForPagination("instances", this.pageOfListInstances, request);
241
- /**
242
- * Get a Database Instance. Retrieve information about a given Database Instance, specified by the `region` and `instance_id` parameters. Its full details, including name, status, IP address and port, are returned in the response object.
243
- *
244
- * @param request - The request {@link GetInstanceRequest}
245
- * @returns A Promise of Instance
246
- */
247
- getInstance = (request) => this.client.fetch(
248
- {
249
- method: "GET",
250
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}`
251
- },
252
- unmarshalInstance
253
- );
254
- /**
255
- * Waits for {@link Instance} to be in a final state.
256
- *
257
- * @param request - The request {@link GetInstanceRequest}
258
- * @param options - The waiting options
259
- * @returns A Promise of Instance
260
- */
261
- waitForInstance = (request, options) => waitForResource(
262
- options?.stop ?? ((res) => Promise.resolve(
263
- !INSTANCE_TRANSIENT_STATUSES.includes(res.status)
264
- )),
265
- this.getInstance,
266
- request,
267
- options
268
- );
269
- /**
270
- * Create a Database Instance. Create a new Database Instance. You must set the `engine`, `user_name`, `password` and `node_type` parameters. Optionally, you can specify the volume type and size.
271
- *
272
- * @param request - The request {@link CreateInstanceRequest}
273
- * @returns A Promise of Instance
274
- */
275
- createInstance = (request) => this.client.fetch(
276
- {
277
- body: JSON.stringify(
278
- marshalCreateInstanceRequest(request, this.client.settings)
279
- ),
280
- headers: jsonContentHeaders,
281
- method: "POST",
282
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances`
283
- },
284
- unmarshalInstance
285
- );
286
- /**
287
- * Update a Database Instance. Update the parameters of a Database Instance, including name, tags and backup schedule details.
288
- *
289
- * @param request - The request {@link UpdateInstanceRequest}
290
- * @returns A Promise of Instance
291
- */
292
- updateInstance = (request) => this.client.fetch(
293
- {
294
- body: JSON.stringify(
295
- marshalUpdateInstanceRequest(request, this.client.settings)
296
- ),
297
- headers: jsonContentHeaders,
298
- method: "PATCH",
299
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}`
300
- },
301
- unmarshalInstance
302
- );
303
- /**
304
- * Delete a Database Instance. Delete a given Database Instance, specified by the `region` and `instance_id` parameters. Deleting a Database Instance is permanent, and cannot be undone. Note that upon deletion all your data will be lost.
305
- *
306
- * @param request - The request {@link DeleteInstanceRequest}
307
- * @returns A Promise of Instance
308
- */
309
- deleteInstance = (request) => this.client.fetch(
310
- {
311
- method: "DELETE",
312
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}`
313
- },
314
- unmarshalInstance
315
- );
316
- /**
317
- * Clone a Database Instance. Clone a given Database Instance, specified by the `region` and `instance_id` parameters. The clone feature allows you to create a new Database Instance from an existing one. The clone includes all existing databases, users and permissions. You can create a clone on a Database Instance bigger than your current one.
318
- *
319
- * @param request - The request {@link CloneInstanceRequest}
320
- * @returns A Promise of Instance
321
- */
322
- cloneInstance = (request) => this.client.fetch(
323
- {
324
- body: JSON.stringify(
325
- marshalCloneInstanceRequest(request, this.client.settings)
326
- ),
327
- headers: jsonContentHeaders,
328
- method: "POST",
329
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/clone`
330
- },
331
- unmarshalInstance
332
- );
333
- /**
334
- * Restart Database Instance. Restart a given Database Instance, specified by the `region` and `instance_id` parameters. The status of the Database Instance returned in the response.
335
- *
336
- * @param request - The request {@link RestartInstanceRequest}
337
- * @returns A Promise of Instance
338
- */
339
- restartInstance = (request) => this.client.fetch(
340
- {
341
- body: "{}",
342
- headers: jsonContentHeaders,
343
- method: "POST",
344
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/restart`
345
- },
346
- unmarshalInstance
347
- );
348
- /**
349
- * Get the TLS certificate of a Database Instance. Retrieve information about the TLS certificate of a given Database Instance. Details like name and content are returned in the response.
350
- *
351
- * @param request - The request {@link GetInstanceCertificateRequest}
352
- * @returns A Promise of Blob
353
- */
354
- getInstanceCertificate = (request) => this.client.fetch({
355
- method: "GET",
356
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/certificate`,
357
- urlParams: urlParams(["dl", 1]),
358
- responseType: "blob"
359
- });
360
- /**
361
- * Renew the TLS certificate of a Database Instance. Renew a TLS for a Database Instance. Renewing a certificate means that you will not be able to connect to your Database Instance using the previous certificate. You will also need to download and update the new certificate for all database clients.
362
- *
363
- * @param request - The request {@link RenewInstanceCertificateRequest}
364
- */
365
- renewInstanceCertificate = (request) => this.client.fetch({
366
- body: "{}",
367
- headers: jsonContentHeaders,
368
- method: "POST",
369
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/renew-certificate`
370
- });
371
- /**
372
- * [deprecated] Get Database Instance metrics. Retrieve the time series metrics of a given Database Instance. You can define the period from which to retrieve metrics by specifying the `start_date` and `end_date`. This method is deprecated and will be removed in a future version.
373
- *
374
- * @deprecated
375
- * @param request - The request {@link GetInstanceMetricsRequest}
376
- * @returns A Promise of InstanceMetrics
377
- */
378
- getInstanceMetrics = (request) => this.client.fetch(
379
- {
380
- method: "GET",
381
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/metrics`,
382
- urlParams: urlParams(
383
- ["end_date", request.endDate],
384
- ["metric_name", request.metricName],
385
- ["start_date", request.startDate]
386
- )
387
- },
388
- unmarshalInstanceMetrics
389
- );
390
- /**
391
- * Create a Read Replica. Create a new Read Replica of a Database Instance. You must specify the `region` and the `instance_id`. You can only create a maximum of 3 Read Replicas per Database Instance.
392
- *
393
- * @param request - The request {@link CreateReadReplicaRequest}
394
- * @returns A Promise of ReadReplica
395
- */
396
- createReadReplica = (request) => this.client.fetch(
397
- {
398
- body: JSON.stringify(
399
- marshalCreateReadReplicaRequest(request, this.client.settings)
400
- ),
401
- headers: jsonContentHeaders,
402
- method: "POST",
403
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas`
404
- },
405
- unmarshalReadReplica
406
- );
407
- /**
408
- * Get a Read Replica. Retrieve information about a Database Instance Read Replica. Full details about the Read Replica, like `endpoints`, `status` and `region` are returned in the response.
409
- *
410
- * @param request - The request {@link GetReadReplicaRequest}
411
- * @returns A Promise of ReadReplica
412
- */
413
- getReadReplica = (request) => this.client.fetch(
414
- {
415
- method: "GET",
416
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}`
417
- },
418
- unmarshalReadReplica
419
- );
420
- /**
421
- * Waits for {@link ReadReplica} to be in a final state.
422
- *
423
- * @param request - The request {@link GetReadReplicaRequest}
424
- * @param options - The waiting options
425
- * @returns A Promise of ReadReplica
426
- */
427
- waitForReadReplica = (request, options) => waitForResource(
428
- options?.stop ?? ((res) => Promise.resolve(
429
- !READ_REPLICA_TRANSIENT_STATUSES.includes(res.status)
430
- )),
431
- this.getReadReplica,
432
- request,
433
- options
434
- );
435
- /**
436
- * Delete a Read Replica. Delete a Read Replica of a Database Instance. You must specify the `region` and `read_replica_id` parameters of the Read Replica you want to delete.
437
- *
438
- * @param request - The request {@link DeleteReadReplicaRequest}
439
- * @returns A Promise of ReadReplica
440
- */
441
- deleteReadReplica = (request) => this.client.fetch(
442
- {
443
- method: "DELETE",
444
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}`
445
- },
446
- unmarshalReadReplica
447
- );
448
- /**
449
- * Resync a Read Replica. When you resync a Read Replica, first it is reset, then its data is resynchronized from the primary node. Your Read Replica remains unavailable during the resync process. The duration of this process is proportional to the size of your Database Instance.
450
- The configured endpoints do not change.
451
- *
452
- * @param request - The request {@link ResetReadReplicaRequest}
453
- * @returns A Promise of ReadReplica
454
- */
455
- resetReadReplica = (request) => this.client.fetch(
456
- {
457
- body: "{}",
458
- headers: jsonContentHeaders,
459
- method: "POST",
460
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}/reset`
461
- },
462
- unmarshalReadReplica
463
- );
464
- /**
465
- * Promote a Read Replica. Promote a Read Replica to Database Instance automatically.
466
- *
467
- * @param request - The request {@link PromoteReadReplicaRequest}
468
- * @returns A Promise of Instance
469
- */
470
- promoteReadReplica = (request) => this.client.fetch(
471
- {
472
- body: "{}",
473
- headers: jsonContentHeaders,
474
- method: "POST",
475
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}/promote`
476
- },
477
- unmarshalInstance
478
- );
479
- /**
480
- * Create an endpoint for a Read Replica. Create a new endpoint for a Read Replica. Read Replicas can have at most one direct access and one Private Network endpoint.
481
- *
482
- * @param request - The request {@link CreateReadReplicaEndpointRequest}
483
- * @returns A Promise of ReadReplica
484
- */
485
- createReadReplicaEndpoint = (request) => this.client.fetch(
486
- {
487
- body: JSON.stringify(
488
- marshalCreateReadReplicaEndpointRequest(
489
- request,
490
- this.client.settings
491
- )
492
- ),
493
- headers: jsonContentHeaders,
494
- method: "POST",
495
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}/endpoints`
496
- },
497
- unmarshalReadReplica
498
- );
499
- /**
500
- * Prepare logs of a Database Instance. Prepare your Database Instance logs. You can define the `start_date` and `end_date` parameters for your query. The download URL is returned in the response. Logs are recorded from 00h00 to 23h59 and then aggregated in a `.log` file once a day. Therefore, even if you specify a timeframe from which you want to get the logs, you will receive logs from the full 24 hours.
501
- *
502
- * @param request - The request {@link PrepareInstanceLogsRequest}
503
- * @returns A Promise of PrepareInstanceLogsResponse
504
- */
505
- prepareInstanceLogs = (request) => this.client.fetch(
506
- {
507
- body: JSON.stringify(
508
- marshalPrepareInstanceLogsRequest(request, this.client.settings)
509
- ),
510
- headers: jsonContentHeaders,
511
- method: "POST",
512
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/prepare-logs`
513
- },
514
- unmarshalPrepareInstanceLogsResponse
515
- );
516
- /**
517
- * List available logs of a Database Instance. List the available logs of a Database Instance. By default, the logs returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field.
518
- *
519
- * @param request - The request {@link ListInstanceLogsRequest}
520
- * @returns A Promise of ListInstanceLogsResponse
521
- */
522
- listInstanceLogs = (request) => this.client.fetch(
523
- {
524
- method: "GET",
525
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/logs`,
526
- urlParams: urlParams(["order_by", request.orderBy])
527
- },
528
- unmarshalListInstanceLogsResponse
529
- );
530
- /**
531
- * Get given logs of a Database Instance. Retrieve information about the logs of a Database Instance. Specify the `instance_log_id` and `region` in your request to get information such as `download_url`, `status`, `expires_at` and `created_at` about your logs in the response.
532
- *
533
- * @param request - The request {@link GetInstanceLogRequest}
534
- * @returns A Promise of InstanceLog
535
- */
536
- getInstanceLog = (request) => this.client.fetch(
537
- {
538
- method: "GET",
539
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/logs/${validatePathParam("instanceLogId", request.instanceLogId)}`
540
- },
541
- unmarshalInstanceLog
542
- );
543
- /**
544
- * Waits for {@link InstanceLog} to be in a final state.
545
- *
546
- * @param request - The request {@link GetInstanceLogRequest}
547
- * @param options - The waiting options
548
- * @returns A Promise of InstanceLog
549
- */
550
- waitForInstanceLog = (request, options) => waitForResource(
551
- options?.stop ?? ((res) => Promise.resolve(
552
- !INSTANCE_LOG_TRANSIENT_STATUSES.includes(res.status)
553
- )),
554
- this.getInstanceLog,
555
- request,
556
- options
557
- );
558
- /**
559
- * Purge remote Database Instance logs. Purge a given remote log from a Database Instance. You can specify the `log_name` of the log you wish to clean from your Database Instance.
560
- *
561
- * @param request - The request {@link PurgeInstanceLogsRequest}
562
- */
563
- purgeInstanceLogs = (request) => this.client.fetch({
564
- body: JSON.stringify(
565
- marshalPurgeInstanceLogsRequest(request, this.client.settings)
566
- ),
567
- headers: jsonContentHeaders,
568
- method: "POST",
569
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/purge-logs`
570
- });
571
- /**
572
- * List remote Database Instance logs details. List remote log details. By default, the details returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field.
573
- *
574
- * @param request - The request {@link ListInstanceLogsDetailsRequest}
575
- * @returns A Promise of ListInstanceLogsDetailsResponse
576
- */
577
- listInstanceLogsDetails = (request) => this.client.fetch(
578
- {
579
- method: "GET",
580
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/logs-details`
581
- },
582
- unmarshalListInstanceLogsDetailsResponse
583
- );
584
- /**
585
- * Add Database Instance advanced settings. Add an advanced setting to a Database Instance. You must set the `name` and the `value` of each setting.
586
- *
587
- * @param request - The request {@link AddInstanceSettingsRequest}
588
- * @returns A Promise of AddInstanceSettingsResponse
589
- */
590
- addInstanceSettings = (request) => this.client.fetch(
591
- {
592
- body: JSON.stringify(
593
- marshalAddInstanceSettingsRequest(request, this.client.settings)
594
- ),
595
- headers: jsonContentHeaders,
596
- method: "POST",
597
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/settings`
598
- },
599
- unmarshalAddInstanceSettingsResponse
600
- );
601
- /**
602
- * Delete Database Instance advanced settings. Delete an advanced setting in a Database Instance. You must specify the names of the settings you want to delete in the request.
603
- *
604
- * @param request - The request {@link DeleteInstanceSettingsRequest}
605
- * @returns A Promise of DeleteInstanceSettingsResponse
606
- */
607
- deleteInstanceSettings = (request) => this.client.fetch(
608
- {
609
- body: JSON.stringify(
610
- marshalDeleteInstanceSettingsRequest(request, this.client.settings)
611
- ),
612
- headers: jsonContentHeaders,
613
- method: "DELETE",
614
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/settings`
615
- },
616
- unmarshalDeleteInstanceSettingsResponse
617
- );
618
- /**
619
- * Set Database Instance advanced settings. Update an advanced setting for a Database Instance. Settings added upon database engine initialization can only be defined once, and cannot, therefore, be updated.
620
- *
621
- * @param request - The request {@link SetInstanceSettingsRequest}
622
- * @returns A Promise of SetInstanceSettingsResponse
623
- */
624
- setInstanceSettings = (request) => this.client.fetch(
625
- {
626
- body: JSON.stringify(
627
- marshalSetInstanceSettingsRequest(request, this.client.settings)
628
- ),
629
- headers: jsonContentHeaders,
630
- method: "PUT",
631
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/settings`
632
- },
633
- unmarshalSetInstanceSettingsResponse
634
- );
635
- pageOfListInstanceACLRules = (request) => this.client.fetch(
636
- {
637
- method: "GET",
638
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`,
639
- urlParams: urlParams(
640
- ["page", request.page],
641
- [
642
- "page_size",
643
- request.pageSize ?? this.client.settings.defaultPageSize
644
- ]
645
- )
646
- },
647
- unmarshalListInstanceACLRulesResponse
648
- );
649
- /**
650
- * List ACL rules of a Database Instance. List the ACL rules for a given Database Instance. The response is an array of ACL objects, each one representing an ACL that denies, allows or redirects traffic based on certain conditions.
651
- *
652
- * @param request - The request {@link ListInstanceACLRulesRequest}
653
- * @returns A Promise of ListInstanceACLRulesResponse
654
- */
655
- listInstanceACLRules = (request) => enrichForPagination("rules", this.pageOfListInstanceACLRules, request);
656
- /**
657
- * Add an ACL rule to a Database Instance. Add an additional ACL rule to a Database Instance.
658
- *
659
- * @param request - The request {@link AddInstanceACLRulesRequest}
660
- * @returns A Promise of AddInstanceACLRulesResponse
661
- */
662
- addInstanceACLRules = (request) => this.client.fetch(
663
- {
664
- body: JSON.stringify(
665
- marshalAddInstanceACLRulesRequest(request, this.client.settings)
666
- ),
667
- headers: jsonContentHeaders,
668
- method: "POST",
669
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`
670
- },
671
- unmarshalAddInstanceACLRulesResponse
672
- );
673
- /**
674
- * Set ACL rules for a Database Instance. Replace all the ACL rules of a Database Instance.
675
- *
676
- * @param request - The request {@link SetInstanceACLRulesRequest}
677
- * @returns A Promise of SetInstanceACLRulesResponse
678
- */
679
- setInstanceACLRules = (request) => this.client.fetch(
680
- {
681
- body: JSON.stringify(
682
- marshalSetInstanceACLRulesRequest(request, this.client.settings)
683
- ),
684
- headers: jsonContentHeaders,
685
- method: "PUT",
686
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`
687
- },
688
- unmarshalSetInstanceACLRulesResponse
689
- );
690
- /**
691
- * Delete ACL rules of a Database Instance. Delete one or more ACL rules of a Database Instance.
692
- *
693
- * @param request - The request {@link DeleteInstanceACLRulesRequest}
694
- * @returns A Promise of DeleteInstanceACLRulesResponse
695
- */
696
- deleteInstanceACLRules = (request) => this.client.fetch(
697
- {
698
- body: JSON.stringify(
699
- marshalDeleteInstanceACLRulesRequest(request, this.client.settings)
700
- ),
701
- headers: jsonContentHeaders,
702
- method: "DELETE",
703
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`
704
- },
705
- unmarshalDeleteInstanceACLRulesResponse
706
- );
707
- pageOfListUsers = (request) => this.client.fetch(
708
- {
709
- method: "GET",
710
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users`,
711
- urlParams: urlParams(
712
- ["name", request.name],
713
- ["order_by", request.orderBy],
714
- ["page", request.page],
715
- [
716
- "page_size",
717
- request.pageSize ?? this.client.settings.defaultPageSize
718
- ]
719
- )
720
- },
721
- unmarshalListUsersResponse
722
- );
723
- /**
724
- * List users of a Database Instance. List all users of a given Database Instance. By default, the users returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field.
725
- *
726
- * @param request - The request {@link ListUsersRequest}
727
- * @returns A Promise of ListUsersResponse
728
- */
729
- listUsers = (request) => enrichForPagination("users", this.pageOfListUsers, request);
730
- /**
731
- * Create a user for a Database Instance. Create a new user for a Database Instance. You must define the `name`, `password` and `is_admin` parameters.
732
- *
733
- * @param request - The request {@link CreateUserRequest}
734
- * @returns A Promise of User
735
- */
736
- createUser = (request) => this.client.fetch(
737
- {
738
- body: JSON.stringify(
739
- marshalCreateUserRequest(request, this.client.settings)
740
- ),
741
- headers: jsonContentHeaders,
742
- method: "POST",
743
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users`
744
- },
745
- unmarshalUser
746
- );
747
- /**
748
- * Update a user on a Database Instance. Update the parameters of a user on a Database Instance. You can update the `password` and `is_admin` parameters, but you cannot change the name of the user.
749
- *
750
- * @param request - The request {@link UpdateUserRequest}
751
- * @returns A Promise of User
752
- */
753
- updateUser = (request) => this.client.fetch(
754
- {
755
- body: JSON.stringify(
756
- marshalUpdateUserRequest(request, this.client.settings)
757
- ),
758
- headers: jsonContentHeaders,
759
- method: "PATCH",
760
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users/${validatePathParam("name", request.name)}`
761
- },
762
- unmarshalUser
763
- );
764
- /**
765
- * Delete a user on a Database Instance. Delete a given user on a Database Instance. You must specify, in the endpoint, the `region`, `instance_id` and `name` parameters of the user you want to delete.
766
- *
767
- * @param request - The request {@link DeleteUserRequest}
768
- */
769
- deleteUser = (request) => this.client.fetch({
770
- method: "DELETE",
771
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users/${validatePathParam("name", request.name)}`
772
- });
773
- pageOfListDatabases = (request) => this.client.fetch(
774
- {
775
- method: "GET",
776
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/databases`,
777
- urlParams: urlParams(
778
- ["managed", request.managed],
779
- ["name", request.name],
780
- ["order_by", request.orderBy],
781
- ["owner", request.owner],
782
- ["page", request.page],
783
- [
784
- "page_size",
785
- request.pageSize ?? this.client.settings.defaultPageSize
786
- ],
787
- ["skip_size_retrieval", request.skipSizeRetrieval]
788
- )
789
- },
790
- unmarshalListDatabasesResponse
791
- );
792
- /**
793
- * List databases in a Database Instance. List all databases of a given Database Instance. By default, the databases returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field. You can define additional parameters for your query, such as `name`, `managed` and `owner`.
794
- *
795
- * @param request - The request {@link ListDatabasesRequest}
796
- * @returns A Promise of ListDatabasesResponse
797
- */
798
- listDatabases = (request) => enrichForPagination("databases", this.pageOfListDatabases, request);
799
- /**
800
- * Create a database in a Database Instance. Create a new database. You must define the `name` parameter in the request.
801
- *
802
- * @param request - The request {@link CreateDatabaseRequest}
803
- * @returns A Promise of Database
804
- */
805
- createDatabase = (request) => this.client.fetch(
806
- {
807
- body: JSON.stringify(
808
- marshalCreateDatabaseRequest(request, this.client.settings)
809
- ),
810
- headers: jsonContentHeaders,
811
- method: "POST",
812
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/databases`
813
- },
814
- unmarshalDatabase
815
- );
816
- /**
817
- * Delete a database in a Database Instance. Delete a given database on a Database Instance. You must specify, in the endpoint, the `region`, `instance_id` and `name` parameters of the database you want to delete.
818
- *
819
- * @param request - The request {@link DeleteDatabaseRequest}
820
- */
821
- deleteDatabase = (request) => this.client.fetch({
822
- method: "DELETE",
823
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/databases/${validatePathParam("name", request.name)}`
824
- });
825
- pageOfListPrivileges = (request) => this.client.fetch(
826
- {
827
- method: "GET",
828
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/privileges`,
829
- urlParams: urlParams(
830
- ["database_name", request.databaseName],
831
- ["order_by", request.orderBy],
832
- ["page", request.page],
833
- [
834
- "page_size",
835
- request.pageSize ?? this.client.settings.defaultPageSize
836
- ],
837
- ["user_name", request.userName]
838
- )
839
- },
840
- unmarshalListPrivilegesResponse
841
- );
842
- /**
843
- * List user privileges for a database. List privileges of a user on a database. By default, the details returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field. You can define additional parameters for your query, such as `database_name` and `user_name`.
844
- *
845
- * @param request - The request {@link ListPrivilegesRequest}
846
- * @returns A Promise of ListPrivilegesResponse
847
- */
848
- listPrivileges = (request) => enrichForPagination("privileges", this.pageOfListPrivileges, request);
849
- /**
850
- * Set user privileges for a database. Set the privileges of a user on a database. You must define `database_name`, `user_name` and `permission` in the request body.
851
- *
852
- * @param request - The request {@link SetPrivilegeRequest}
853
- * @returns A Promise of Privilege
854
- */
855
- setPrivilege = (request) => this.client.fetch(
856
- {
857
- body: JSON.stringify(
858
- marshalSetPrivilegeRequest(request, this.client.settings)
859
- ),
860
- headers: jsonContentHeaders,
861
- method: "PUT",
862
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/privileges`
863
- },
864
- unmarshalPrivilege
865
- );
866
- pageOfListSnapshots = (request = {}) => this.client.fetch(
867
- {
868
- method: "GET",
869
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots`,
870
- urlParams: urlParams(
871
- ["instance_id", request.instanceId],
872
- ["name", request.name],
873
- ["order_by", request.orderBy],
874
- ["organization_id", request.organizationId],
875
- ["page", request.page],
876
- [
877
- "page_size",
878
- request.pageSize ?? this.client.settings.defaultPageSize
879
- ],
880
- ["project_id", request.projectId]
881
- )
882
- },
883
- unmarshalListSnapshotsResponse
884
- );
885
- /**
886
- * List snapshots. List snapshots. You can include the `instance_id` or `project_id` in your query to get the list of snapshots for specific Database Instances and/or Projects. By default, the details returned in the list are ordered by creation date in ascending order, though this can be modified via the `order_by` field.
887
- *
888
- * @param request - The request {@link ListSnapshotsRequest}
889
- * @returns A Promise of ListSnapshotsResponse
890
- */
891
- listSnapshots = (request = {}) => enrichForPagination("snapshots", this.pageOfListSnapshots, request);
892
- /**
893
- * Get a Database Instance snapshot. Retrieve information about a given snapshot, specified by its `snapshot_id` and `region`. Full details about the snapshot, like size and expiration date, are returned in the response.
894
- *
895
- * @param request - The request {@link GetSnapshotRequest}
896
- * @returns A Promise of Snapshot
897
- */
898
- getSnapshot = (request) => this.client.fetch(
899
- {
900
- method: "GET",
901
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}`
902
- },
903
- unmarshalSnapshot
904
- );
905
- /**
906
- * Waits for {@link Snapshot} to be in a final state.
907
- *
908
- * @param request - The request {@link GetSnapshotRequest}
909
- * @param options - The waiting options
910
- * @returns A Promise of Snapshot
911
- */
912
- waitForSnapshot = (request, options) => waitForResource(
913
- options?.stop ?? ((res) => Promise.resolve(
914
- !SNAPSHOT_TRANSIENT_STATUSES.includes(res.status)
915
- )),
916
- this.getSnapshot,
917
- request,
918
- options
919
- );
920
- /**
921
- * Create a Database Instance snapshot. Create a new snapshot of a Database Instance. You must define the `name` parameter in the request.
922
- *
923
- * @param request - The request {@link CreateSnapshotRequest}
924
- * @returns A Promise of Snapshot
925
- */
926
- createSnapshot = (request) => this.client.fetch(
927
- {
928
- body: JSON.stringify(
929
- marshalCreateSnapshotRequest(request, this.client.settings)
930
- ),
931
- headers: jsonContentHeaders,
932
- method: "POST",
933
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/snapshots`
934
- },
935
- unmarshalSnapshot
936
- );
937
- /**
938
- * Update a Database Instance snapshot. Update the parameters of a snapshot of a Database Instance. You can update the `name` and `expires_at` parameters.
939
- *
940
- * @param request - The request {@link UpdateSnapshotRequest}
941
- * @returns A Promise of Snapshot
942
- */
943
- updateSnapshot = (request) => this.client.fetch(
944
- {
945
- body: JSON.stringify(
946
- marshalUpdateSnapshotRequest(request, this.client.settings)
947
- ),
948
- headers: jsonContentHeaders,
949
- method: "PATCH",
950
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}`
951
- },
952
- unmarshalSnapshot
953
- );
954
- /**
955
- * Delete a Database Instance snapshot. Delete a given snapshot of a Database Instance. You must specify, in the endpoint, the `region` and `snapshot_id` parameters of the snapshot you want to delete.
956
- *
957
- * @param request - The request {@link DeleteSnapshotRequest}
958
- * @returns A Promise of Snapshot
959
- */
960
- deleteSnapshot = (request) => this.client.fetch(
961
- {
962
- method: "DELETE",
963
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}`
964
- },
965
- unmarshalSnapshot
966
- );
967
- /**
968
- * Create a new Database Instance from a snapshot. Restore a snapshot. When you restore a snapshot, a new Instance is created and billed to your account. Note that is possible to select a larger node type for your new Database Instance. However, the Block volume size will be the same as the size of the restored snapshot. All Instance settings will be restored if you chose a node type with the same or more memory size than the initial Instance. Settings will be reset to the default if your node type has less memory.
969
- *
970
- * @param request - The request {@link CreateInstanceFromSnapshotRequest}
971
- * @returns A Promise of Instance
972
- */
973
- createInstanceFromSnapshot = (request) => this.client.fetch(
974
- {
975
- body: JSON.stringify(
976
- marshalCreateInstanceFromSnapshotRequest(
977
- request,
978
- this.client.settings
979
- )
980
- ),
981
- headers: jsonContentHeaders,
982
- method: "POST",
983
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}/create-instance`
984
- },
985
- unmarshalInstance
986
- );
987
- /**
988
- * Create a new Database Instance endpoint. Create a new endpoint for a Database Instance. You can add `load_balancer` and `private_network` specifications to the body of the request.
989
- *
990
- * @param request - The request {@link CreateEndpointRequest}
991
- * @returns A Promise of Endpoint
992
- */
993
- createEndpoint = (request) => this.client.fetch(
994
- {
995
- body: JSON.stringify(
996
- marshalCreateEndpointRequest(request, this.client.settings)
997
- ),
998
- headers: jsonContentHeaders,
999
- method: "POST",
1000
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/endpoints`
1001
- },
1002
- unmarshalEndpoint
1003
- );
1004
- /**
1005
- * Delete a Database Instance endpoint. Delete the endpoint of a Database Instance. You must specify the `region` and `endpoint_id` parameters of the endpoint you want to delete. Note that might need to update any environment configurations that point to the deleted endpoint.
1006
- *
1007
- * @param request - The request {@link DeleteEndpointRequest}
1008
- */
1009
- deleteEndpoint = (request) => this.client.fetch({
1010
- method: "DELETE",
1011
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam("endpointId", request.endpointId)}`
1012
- });
1013
- /**
1014
- * Get a Database Instance endpoint. Retrieve information about a Database Instance endpoint. Full details about the endpoint, like `ip`, `port`, `private_network` and `load_balancer` specifications are returned in the response.
1015
- *
1016
- * @param request - The request {@link GetEndpointRequest}
1017
- * @returns A Promise of Endpoint
1018
- */
1019
- getEndpoint = (request) => this.client.fetch(
1020
- {
1021
- method: "GET",
1022
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam("endpointId", request.endpointId)}`
1023
- },
1024
- unmarshalEndpoint
1025
- );
1026
- /**
1027
- * Migrate an existing instance endpoint to another instance.
1028
- *
1029
- * @param request - The request {@link MigrateEndpointRequest}
1030
- * @returns A Promise of Endpoint
1031
- */
1032
- migrateEndpoint = (request) => this.client.fetch(
1033
- {
1034
- body: JSON.stringify(
1035
- marshalMigrateEndpointRequest(request, this.client.settings)
1036
- ),
1037
- headers: jsonContentHeaders,
1038
- method: "POST",
1039
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam("endpointId", request.endpointId)}/migrate`
1040
- },
1041
- unmarshalEndpoint
1042
- );
1043
- /**
1044
- * Apply Database Instance maintenance. Apply maintenance tasks to your Database Instance. This will trigger pending maintenance tasks to start in your Database Instance and can generate service interruption. Maintenance tasks can be applied between `starts_at` and `stops_at` times, and are run directly by Scaleway at `forced_at` timestamp.
1045
- *
1046
- * @param request - The request {@link ApplyInstanceMaintenanceRequest}
1047
- * @returns A Promise of Maintenance
1048
- */
1049
- applyInstanceMaintenance = (request) => this.client.fetch(
1050
- {
1051
- body: "{}",
1052
- headers: jsonContentHeaders,
1053
- method: "POST",
1054
- path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/apply-maintenance`
1055
- },
1056
- unmarshalMaintenance
1057
- );
1058
- }
1059
- export {
1060
- API
1
+ import { DATABASE_BACKUP_TRANSIENT_STATUSES, INSTANCE_LOG_TRANSIENT_STATUSES, INSTANCE_TRANSIENT_STATUSES, READ_REPLICA_TRANSIENT_STATUSES, SNAPSHOT_TRANSIENT_STATUSES } from "./content.gen.js";
2
+ import { marshalAddInstanceACLRulesRequest, marshalAddInstanceSettingsRequest, marshalCloneInstanceRequest, marshalCreateDatabaseBackupRequest, marshalCreateDatabaseRequest, marshalCreateEndpointRequest, marshalCreateInstanceFromSnapshotRequest, marshalCreateInstanceRequest, marshalCreateReadReplicaEndpointRequest, marshalCreateReadReplicaRequest, marshalCreateSnapshotRequest, marshalCreateUserRequest, marshalDeleteInstanceACLRulesRequest, marshalDeleteInstanceSettingsRequest, marshalMigrateEndpointRequest, marshalPrepareInstanceLogsRequest, marshalPurgeInstanceLogsRequest, marshalRestoreDatabaseBackupRequest, marshalSetInstanceACLRulesRequest, marshalSetInstanceSettingsRequest, marshalSetPrivilegeRequest, marshalUpdateDatabaseBackupRequest, marshalUpdateInstanceRequest, marshalUpdateSnapshotRequest, marshalUpdateUserRequest, marshalUpgradeInstanceRequest, unmarshalAddInstanceACLRulesResponse, unmarshalAddInstanceSettingsResponse, unmarshalDatabase, unmarshalDatabaseBackup, unmarshalDeleteInstanceACLRulesResponse, unmarshalDeleteInstanceSettingsResponse, unmarshalEndpoint, unmarshalInstance, unmarshalInstanceLog, unmarshalInstanceMetrics, unmarshalListDatabaseBackupsResponse, unmarshalListDatabaseEnginesResponse, unmarshalListDatabasesResponse, unmarshalListInstanceACLRulesResponse, unmarshalListInstanceLogsDetailsResponse, unmarshalListInstanceLogsResponse, unmarshalListInstancesResponse, unmarshalListNodeTypesResponse, unmarshalListPrivilegesResponse, unmarshalListSnapshotsResponse, unmarshalListUsersResponse, unmarshalMaintenance, unmarshalPrepareInstanceLogsResponse, unmarshalPrivilege, unmarshalReadReplica, unmarshalSetInstanceACLRulesResponse, unmarshalSetInstanceSettingsResponse, unmarshalSnapshot, unmarshalUser } from "./marshalling.gen.js";
3
+ import { API, enrichForPagination, toApiLocality, urlParams, validatePathParam, waitForResource } from "@scaleway/sdk-client";
4
+ var jsonContentHeaders = { "Content-Type": "application/json; charset=utf-8" };
5
+ /**
6
+ * Managed Database for PostgreSQL and MySQL API.
7
+
8
+ This API allows you to manage your Managed Databases for PostgreSQL and MySQL.
9
+ */
10
+ var API$1 = class extends API {
11
+ /**
12
+ * Locality of this API.
13
+ * type ∈ {'zone','region','global','unspecified'}
14
+ */
15
+ static LOCALITY = toApiLocality({ regions: [
16
+ "fr-par",
17
+ "nl-ams",
18
+ "pl-waw"
19
+ ] });
20
+ pageOfListDatabaseEngines = (request = {}) => this.client.fetch({
21
+ method: "GET",
22
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/database-engines`,
23
+ urlParams: urlParams(["name", request.name], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["version", request.version])
24
+ }, unmarshalListDatabaseEnginesResponse);
25
+ /**
26
+ * List available database engines. List the PostgreSQL and MySQL database engines available at Scaleway.
27
+ *
28
+ * @param request - The request {@link ListDatabaseEnginesRequest}
29
+ * @returns A Promise of ListDatabaseEnginesResponse
30
+ */
31
+ listDatabaseEngines = (request = {}) => enrichForPagination("engines", this.pageOfListDatabaseEngines, request);
32
+ pageOfListNodeTypes = (request) => this.client.fetch({
33
+ method: "GET",
34
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/node-types`,
35
+ urlParams: urlParams(["include_disabled_types", request.includeDisabledTypes], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize])
36
+ }, unmarshalListNodeTypesResponse);
37
+ /**
38
+ * List available node types. List all available node types. By default, the node types returned in the list are ordered by creation date in ascending order, though this can be modified via the `order_by` field.
39
+ *
40
+ * @param request - The request {@link ListNodeTypesRequest}
41
+ * @returns A Promise of ListNodeTypesResponse
42
+ */
43
+ listNodeTypes = (request) => enrichForPagination("nodeTypes", this.pageOfListNodeTypes, request);
44
+ pageOfListDatabaseBackups = (request = {}) => this.client.fetch({
45
+ method: "GET",
46
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups`,
47
+ urlParams: urlParams(["instance_id", request.instanceId], ["name", request.name], ["order_by", request.orderBy], ["organization_id", request.organizationId], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["project_id", request.projectId])
48
+ }, unmarshalListDatabaseBackupsResponse);
49
+ /**
50
+ * List database backups. List all backups in a specified region, for a given Scaleway Organization or Scaleway Project. By default, the backups listed are ordered by creation date in ascending order. This can be modified via the `order_by` field.
51
+ *
52
+ * @param request - The request {@link ListDatabaseBackupsRequest}
53
+ * @returns A Promise of ListDatabaseBackupsResponse
54
+ */
55
+ listDatabaseBackups = (request = {}) => enrichForPagination("databaseBackups", this.pageOfListDatabaseBackups, request);
56
+ /**
57
+ * Create a database backup. Create a new backup. You must set the `instance_id`, `database_name`, `name` and `expires_at` parameters.
58
+ *
59
+ * @param request - The request {@link CreateDatabaseBackupRequest}
60
+ * @returns A Promise of DatabaseBackup
61
+ */
62
+ createDatabaseBackup = (request) => this.client.fetch({
63
+ body: JSON.stringify(marshalCreateDatabaseBackupRequest(request, this.client.settings)),
64
+ headers: jsonContentHeaders,
65
+ method: "POST",
66
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups`
67
+ }, unmarshalDatabaseBackup);
68
+ /**
69
+ * Get a database backup. Retrieve information about a given backup, specified by its database backup ID and region. Full details about the backup, like size, URL and expiration date, are returned in the response.
70
+ *
71
+ * @param request - The request {@link GetDatabaseBackupRequest}
72
+ * @returns A Promise of DatabaseBackup
73
+ */
74
+ getDatabaseBackup = (request) => this.client.fetch({
75
+ method: "GET",
76
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}`
77
+ }, unmarshalDatabaseBackup);
78
+ /**
79
+ * Waits for {@link DatabaseBackup} to be in a final state.
80
+ *
81
+ * @param request - The request {@link GetDatabaseBackupRequest}
82
+ * @param options - The waiting options
83
+ * @returns A Promise of DatabaseBackup
84
+ */
85
+ waitForDatabaseBackup = (request, options) => waitForResource(options?.stop ?? ((res) => Promise.resolve(!DATABASE_BACKUP_TRANSIENT_STATUSES.includes(res.status))), this.getDatabaseBackup, request, options);
86
+ /**
87
+ * Update a database backup. Update the parameters of a backup, including name and expiration date.
88
+ *
89
+ * @param request - The request {@link UpdateDatabaseBackupRequest}
90
+ * @returns A Promise of DatabaseBackup
91
+ */
92
+ updateDatabaseBackup = (request) => this.client.fetch({
93
+ body: JSON.stringify(marshalUpdateDatabaseBackupRequest(request, this.client.settings)),
94
+ headers: jsonContentHeaders,
95
+ method: "PATCH",
96
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}`
97
+ }, unmarshalDatabaseBackup);
98
+ /**
99
+ * Delete a database backup. Delete a backup, specified by its database backup ID and region. Deleting a backup is permanent, and cannot be undone.
100
+ *
101
+ * @param request - The request {@link DeleteDatabaseBackupRequest}
102
+ * @returns A Promise of DatabaseBackup
103
+ */
104
+ deleteDatabaseBackup = (request) => this.client.fetch({
105
+ method: "DELETE",
106
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}`
107
+ }, unmarshalDatabaseBackup);
108
+ /**
109
+ * Restore a database backup. Launch the process of restoring database backup. You must specify the `instance_id` of the Database Instance of destination, where the backup will be restored. Note that large database backups can take up to several hours to restore.
110
+ *
111
+ * @param request - The request {@link RestoreDatabaseBackupRequest}
112
+ * @returns A Promise of DatabaseBackup
113
+ */
114
+ restoreDatabaseBackup = (request) => this.client.fetch({
115
+ body: JSON.stringify(marshalRestoreDatabaseBackupRequest(request, this.client.settings)),
116
+ headers: jsonContentHeaders,
117
+ method: "POST",
118
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}/restore`
119
+ }, unmarshalDatabaseBackup);
120
+ /**
121
+ * Export a database backup. Export a backup, specified by the `database_backup_id` and the `region` parameters. The download URL is returned in the response.
122
+ *
123
+ * @param request - The request {@link ExportDatabaseBackupRequest}
124
+ * @returns A Promise of DatabaseBackup
125
+ */
126
+ exportDatabaseBackup = (request) => this.client.fetch({
127
+ body: "{}",
128
+ headers: jsonContentHeaders,
129
+ method: "POST",
130
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/backups/${validatePathParam("databaseBackupId", request.databaseBackupId)}/export`
131
+ }, unmarshalDatabaseBackup);
132
+ /**
133
+ * Upgrade a Database Instance. Upgrade your current Database Instance specifications like node type, high availability, volume, or the database engine version. Note that upon upgrade the `enable_ha` parameter can only be set to `true`.
134
+ *
135
+ * @param request - The request {@link UpgradeInstanceRequest}
136
+ * @returns A Promise of Instance
137
+ */
138
+ upgradeInstance = (request) => this.client.fetch({
139
+ body: JSON.stringify(marshalUpgradeInstanceRequest(request, this.client.settings)),
140
+ headers: jsonContentHeaders,
141
+ method: "POST",
142
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/upgrade`
143
+ }, unmarshalInstance);
144
+ pageOfListInstances = (request = {}) => this.client.fetch({
145
+ method: "GET",
146
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances`,
147
+ urlParams: urlParams(["has_maintenances", request.hasMaintenances], ["name", request.name], ["order_by", request.orderBy], ["organization_id", request.organizationId], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["project_id", request.projectId], ["tags", request.tags])
148
+ }, unmarshalListInstancesResponse);
149
+ /**
150
+ * List Database Instances. List all Database Instances in the specified region, for a given Scaleway Organization or Scaleway Project. By default, the Database Instances returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field. You can define additional parameters for your query, such as `tags` and `name`. For the `name` parameter, the value you include will be checked against the whole name string to see if it includes the string you put in the parameter.
151
+ *
152
+ * @param request - The request {@link ListInstancesRequest}
153
+ * @returns A Promise of ListInstancesResponse
154
+ */
155
+ listInstances = (request = {}) => enrichForPagination("instances", this.pageOfListInstances, request);
156
+ /**
157
+ * Get a Database Instance. Retrieve information about a given Database Instance, specified by the `region` and `instance_id` parameters. Its full details, including name, status, IP address and port, are returned in the response object.
158
+ *
159
+ * @param request - The request {@link GetInstanceRequest}
160
+ * @returns A Promise of Instance
161
+ */
162
+ getInstance = (request) => this.client.fetch({
163
+ method: "GET",
164
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}`
165
+ }, unmarshalInstance);
166
+ /**
167
+ * Waits for {@link Instance} to be in a final state.
168
+ *
169
+ * @param request - The request {@link GetInstanceRequest}
170
+ * @param options - The waiting options
171
+ * @returns A Promise of Instance
172
+ */
173
+ waitForInstance = (request, options) => waitForResource(options?.stop ?? ((res) => Promise.resolve(!INSTANCE_TRANSIENT_STATUSES.includes(res.status))), this.getInstance, request, options);
174
+ /**
175
+ * Create a Database Instance. Create a new Database Instance. You must set the `engine`, `user_name`, `password` and `node_type` parameters. Optionally, you can specify the volume type and size.
176
+ *
177
+ * @param request - The request {@link CreateInstanceRequest}
178
+ * @returns A Promise of Instance
179
+ */
180
+ createInstance = (request) => this.client.fetch({
181
+ body: JSON.stringify(marshalCreateInstanceRequest(request, this.client.settings)),
182
+ headers: jsonContentHeaders,
183
+ method: "POST",
184
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances`
185
+ }, unmarshalInstance);
186
+ /**
187
+ * Update a Database Instance. Update the parameters of a Database Instance, including name, tags and backup schedule details.
188
+ *
189
+ * @param request - The request {@link UpdateInstanceRequest}
190
+ * @returns A Promise of Instance
191
+ */
192
+ updateInstance = (request) => this.client.fetch({
193
+ body: JSON.stringify(marshalUpdateInstanceRequest(request, this.client.settings)),
194
+ headers: jsonContentHeaders,
195
+ method: "PATCH",
196
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}`
197
+ }, unmarshalInstance);
198
+ /**
199
+ * Delete a Database Instance. Delete a given Database Instance, specified by the `region` and `instance_id` parameters. Deleting a Database Instance is permanent, and cannot be undone. Note that upon deletion all your data will be lost.
200
+ *
201
+ * @param request - The request {@link DeleteInstanceRequest}
202
+ * @returns A Promise of Instance
203
+ */
204
+ deleteInstance = (request) => this.client.fetch({
205
+ method: "DELETE",
206
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}`
207
+ }, unmarshalInstance);
208
+ /**
209
+ * Clone a Database Instance. Clone a given Database Instance, specified by the `region` and `instance_id` parameters. The clone feature allows you to create a new Database Instance from an existing one. The clone includes all existing databases, users and permissions. You can create a clone on a Database Instance bigger than your current one.
210
+ *
211
+ * @param request - The request {@link CloneInstanceRequest}
212
+ * @returns A Promise of Instance
213
+ */
214
+ cloneInstance = (request) => this.client.fetch({
215
+ body: JSON.stringify(marshalCloneInstanceRequest(request, this.client.settings)),
216
+ headers: jsonContentHeaders,
217
+ method: "POST",
218
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/clone`
219
+ }, unmarshalInstance);
220
+ /**
221
+ * Restart Database Instance. Restart a given Database Instance, specified by the `region` and `instance_id` parameters. The status of the Database Instance returned in the response.
222
+ *
223
+ * @param request - The request {@link RestartInstanceRequest}
224
+ * @returns A Promise of Instance
225
+ */
226
+ restartInstance = (request) => this.client.fetch({
227
+ body: "{}",
228
+ headers: jsonContentHeaders,
229
+ method: "POST",
230
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/restart`
231
+ }, unmarshalInstance);
232
+ /**
233
+ * Get the TLS certificate of a Database Instance. Retrieve information about the TLS certificate of a given Database Instance. Details like name and content are returned in the response.
234
+ *
235
+ * @param request - The request {@link GetInstanceCertificateRequest}
236
+ * @returns A Promise of Blob
237
+ */
238
+ getInstanceCertificate = (request) => this.client.fetch({
239
+ method: "GET",
240
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/certificate`,
241
+ urlParams: urlParams(["dl", 1]),
242
+ responseType: "blob"
243
+ });
244
+ /**
245
+ * Renew the TLS certificate of a Database Instance. Renew a TLS for a Database Instance. Renewing a certificate means that you will not be able to connect to your Database Instance using the previous certificate. You will also need to download and update the new certificate for all database clients.
246
+ *
247
+ * @param request - The request {@link RenewInstanceCertificateRequest}
248
+ */
249
+ renewInstanceCertificate = (request) => this.client.fetch({
250
+ body: "{}",
251
+ headers: jsonContentHeaders,
252
+ method: "POST",
253
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/renew-certificate`
254
+ });
255
+ /**
256
+ * [deprecated] Get Database Instance metrics. Retrieve the time series metrics of a given Database Instance. You can define the period from which to retrieve metrics by specifying the `start_date` and `end_date`. This method is deprecated and will be removed in a future version.
257
+ *
258
+ * @deprecated
259
+ * @param request - The request {@link GetInstanceMetricsRequest}
260
+ * @returns A Promise of InstanceMetrics
261
+ */
262
+ getInstanceMetrics = (request) => this.client.fetch({
263
+ method: "GET",
264
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/metrics`,
265
+ urlParams: urlParams(["end_date", request.endDate], ["metric_name", request.metricName], ["start_date", request.startDate])
266
+ }, unmarshalInstanceMetrics);
267
+ /**
268
+ * Create a Read Replica. Create a new Read Replica of a Database Instance. You must specify the `region` and the `instance_id`. You can only create a maximum of 3 Read Replicas per Database Instance.
269
+ *
270
+ * @param request - The request {@link CreateReadReplicaRequest}
271
+ * @returns A Promise of ReadReplica
272
+ */
273
+ createReadReplica = (request) => this.client.fetch({
274
+ body: JSON.stringify(marshalCreateReadReplicaRequest(request, this.client.settings)),
275
+ headers: jsonContentHeaders,
276
+ method: "POST",
277
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas`
278
+ }, unmarshalReadReplica);
279
+ /**
280
+ * Get a Read Replica. Retrieve information about a Database Instance Read Replica. Full details about the Read Replica, like `endpoints`, `status` and `region` are returned in the response.
281
+ *
282
+ * @param request - The request {@link GetReadReplicaRequest}
283
+ * @returns A Promise of ReadReplica
284
+ */
285
+ getReadReplica = (request) => this.client.fetch({
286
+ method: "GET",
287
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}`
288
+ }, unmarshalReadReplica);
289
+ /**
290
+ * Waits for {@link ReadReplica} to be in a final state.
291
+ *
292
+ * @param request - The request {@link GetReadReplicaRequest}
293
+ * @param options - The waiting options
294
+ * @returns A Promise of ReadReplica
295
+ */
296
+ waitForReadReplica = (request, options) => waitForResource(options?.stop ?? ((res) => Promise.resolve(!READ_REPLICA_TRANSIENT_STATUSES.includes(res.status))), this.getReadReplica, request, options);
297
+ /**
298
+ * Delete a Read Replica. Delete a Read Replica of a Database Instance. You must specify the `region` and `read_replica_id` parameters of the Read Replica you want to delete.
299
+ *
300
+ * @param request - The request {@link DeleteReadReplicaRequest}
301
+ * @returns A Promise of ReadReplica
302
+ */
303
+ deleteReadReplica = (request) => this.client.fetch({
304
+ method: "DELETE",
305
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}`
306
+ }, unmarshalReadReplica);
307
+ /**
308
+ * Resync a Read Replica. When you resync a Read Replica, first it is reset, then its data is resynchronized from the primary node. Your Read Replica remains unavailable during the resync process. The duration of this process is proportional to the size of your Database Instance.
309
+ The configured endpoints do not change.
310
+ *
311
+ * @param request - The request {@link ResetReadReplicaRequest}
312
+ * @returns A Promise of ReadReplica
313
+ */
314
+ resetReadReplica = (request) => this.client.fetch({
315
+ body: "{}",
316
+ headers: jsonContentHeaders,
317
+ method: "POST",
318
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}/reset`
319
+ }, unmarshalReadReplica);
320
+ /**
321
+ * Promote a Read Replica. Promote a Read Replica to Database Instance automatically.
322
+ *
323
+ * @param request - The request {@link PromoteReadReplicaRequest}
324
+ * @returns A Promise of Instance
325
+ */
326
+ promoteReadReplica = (request) => this.client.fetch({
327
+ body: "{}",
328
+ headers: jsonContentHeaders,
329
+ method: "POST",
330
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}/promote`
331
+ }, unmarshalInstance);
332
+ /**
333
+ * Create an endpoint for a Read Replica. Create a new endpoint for a Read Replica. Read Replicas can have at most one direct access and one Private Network endpoint.
334
+ *
335
+ * @param request - The request {@link CreateReadReplicaEndpointRequest}
336
+ * @returns A Promise of ReadReplica
337
+ */
338
+ createReadReplicaEndpoint = (request) => this.client.fetch({
339
+ body: JSON.stringify(marshalCreateReadReplicaEndpointRequest(request, this.client.settings)),
340
+ headers: jsonContentHeaders,
341
+ method: "POST",
342
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/read-replicas/${validatePathParam("readReplicaId", request.readReplicaId)}/endpoints`
343
+ }, unmarshalReadReplica);
344
+ /**
345
+ * Prepare logs of a Database Instance. Prepare your Database Instance logs. You can define the `start_date` and `end_date` parameters for your query. The download URL is returned in the response. Logs are recorded from 00h00 to 23h59 and then aggregated in a `.log` file once a day. Therefore, even if you specify a timeframe from which you want to get the logs, you will receive logs from the full 24 hours.
346
+ *
347
+ * @param request - The request {@link PrepareInstanceLogsRequest}
348
+ * @returns A Promise of PrepareInstanceLogsResponse
349
+ */
350
+ prepareInstanceLogs = (request) => this.client.fetch({
351
+ body: JSON.stringify(marshalPrepareInstanceLogsRequest(request, this.client.settings)),
352
+ headers: jsonContentHeaders,
353
+ method: "POST",
354
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/prepare-logs`
355
+ }, unmarshalPrepareInstanceLogsResponse);
356
+ /**
357
+ * List available logs of a Database Instance. List the available logs of a Database Instance. By default, the logs returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field.
358
+ *
359
+ * @param request - The request {@link ListInstanceLogsRequest}
360
+ * @returns A Promise of ListInstanceLogsResponse
361
+ */
362
+ listInstanceLogs = (request) => this.client.fetch({
363
+ method: "GET",
364
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/logs`,
365
+ urlParams: urlParams(["order_by", request.orderBy])
366
+ }, unmarshalListInstanceLogsResponse);
367
+ /**
368
+ * Get given logs of a Database Instance. Retrieve information about the logs of a Database Instance. Specify the `instance_log_id` and `region` in your request to get information such as `download_url`, `status`, `expires_at` and `created_at` about your logs in the response.
369
+ *
370
+ * @param request - The request {@link GetInstanceLogRequest}
371
+ * @returns A Promise of InstanceLog
372
+ */
373
+ getInstanceLog = (request) => this.client.fetch({
374
+ method: "GET",
375
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/logs/${validatePathParam("instanceLogId", request.instanceLogId)}`
376
+ }, unmarshalInstanceLog);
377
+ /**
378
+ * Waits for {@link InstanceLog} to be in a final state.
379
+ *
380
+ * @param request - The request {@link GetInstanceLogRequest}
381
+ * @param options - The waiting options
382
+ * @returns A Promise of InstanceLog
383
+ */
384
+ waitForInstanceLog = (request, options) => waitForResource(options?.stop ?? ((res) => Promise.resolve(!INSTANCE_LOG_TRANSIENT_STATUSES.includes(res.status))), this.getInstanceLog, request, options);
385
+ /**
386
+ * Purge remote Database Instance logs. Purge a given remote log from a Database Instance. You can specify the `log_name` of the log you wish to clean from your Database Instance.
387
+ *
388
+ * @param request - The request {@link PurgeInstanceLogsRequest}
389
+ */
390
+ purgeInstanceLogs = (request) => this.client.fetch({
391
+ body: JSON.stringify(marshalPurgeInstanceLogsRequest(request, this.client.settings)),
392
+ headers: jsonContentHeaders,
393
+ method: "POST",
394
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/purge-logs`
395
+ });
396
+ /**
397
+ * List remote Database Instance logs details. List remote log details. By default, the details returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field.
398
+ *
399
+ * @param request - The request {@link ListInstanceLogsDetailsRequest}
400
+ * @returns A Promise of ListInstanceLogsDetailsResponse
401
+ */
402
+ listInstanceLogsDetails = (request) => this.client.fetch({
403
+ method: "GET",
404
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/logs-details`
405
+ }, unmarshalListInstanceLogsDetailsResponse);
406
+ /**
407
+ * Add Database Instance advanced settings. Add an advanced setting to a Database Instance. You must set the `name` and the `value` of each setting.
408
+ *
409
+ * @param request - The request {@link AddInstanceSettingsRequest}
410
+ * @returns A Promise of AddInstanceSettingsResponse
411
+ */
412
+ addInstanceSettings = (request) => this.client.fetch({
413
+ body: JSON.stringify(marshalAddInstanceSettingsRequest(request, this.client.settings)),
414
+ headers: jsonContentHeaders,
415
+ method: "POST",
416
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/settings`
417
+ }, unmarshalAddInstanceSettingsResponse);
418
+ /**
419
+ * Delete Database Instance advanced settings. Delete an advanced setting in a Database Instance. You must specify the names of the settings you want to delete in the request.
420
+ *
421
+ * @param request - The request {@link DeleteInstanceSettingsRequest}
422
+ * @returns A Promise of DeleteInstanceSettingsResponse
423
+ */
424
+ deleteInstanceSettings = (request) => this.client.fetch({
425
+ body: JSON.stringify(marshalDeleteInstanceSettingsRequest(request, this.client.settings)),
426
+ headers: jsonContentHeaders,
427
+ method: "DELETE",
428
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/settings`
429
+ }, unmarshalDeleteInstanceSettingsResponse);
430
+ /**
431
+ * Set Database Instance advanced settings. Update an advanced setting for a Database Instance. Settings added upon database engine initialization can only be defined once, and cannot, therefore, be updated.
432
+ *
433
+ * @param request - The request {@link SetInstanceSettingsRequest}
434
+ * @returns A Promise of SetInstanceSettingsResponse
435
+ */
436
+ setInstanceSettings = (request) => this.client.fetch({
437
+ body: JSON.stringify(marshalSetInstanceSettingsRequest(request, this.client.settings)),
438
+ headers: jsonContentHeaders,
439
+ method: "PUT",
440
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/settings`
441
+ }, unmarshalSetInstanceSettingsResponse);
442
+ pageOfListInstanceACLRules = (request) => this.client.fetch({
443
+ method: "GET",
444
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`,
445
+ urlParams: urlParams(["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize])
446
+ }, unmarshalListInstanceACLRulesResponse);
447
+ /**
448
+ * List ACL rules of a Database Instance. List the ACL rules for a given Database Instance. The response is an array of ACL objects, each one representing an ACL that denies, allows or redirects traffic based on certain conditions.
449
+ *
450
+ * @param request - The request {@link ListInstanceACLRulesRequest}
451
+ * @returns A Promise of ListInstanceACLRulesResponse
452
+ */
453
+ listInstanceACLRules = (request) => enrichForPagination("rules", this.pageOfListInstanceACLRules, request);
454
+ /**
455
+ * Add an ACL rule to a Database Instance. Add an additional ACL rule to a Database Instance.
456
+ *
457
+ * @param request - The request {@link AddInstanceACLRulesRequest}
458
+ * @returns A Promise of AddInstanceACLRulesResponse
459
+ */
460
+ addInstanceACLRules = (request) => this.client.fetch({
461
+ body: JSON.stringify(marshalAddInstanceACLRulesRequest(request, this.client.settings)),
462
+ headers: jsonContentHeaders,
463
+ method: "POST",
464
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`
465
+ }, unmarshalAddInstanceACLRulesResponse);
466
+ /**
467
+ * Set ACL rules for a Database Instance. Replace all the ACL rules of a Database Instance.
468
+ *
469
+ * @param request - The request {@link SetInstanceACLRulesRequest}
470
+ * @returns A Promise of SetInstanceACLRulesResponse
471
+ */
472
+ setInstanceACLRules = (request) => this.client.fetch({
473
+ body: JSON.stringify(marshalSetInstanceACLRulesRequest(request, this.client.settings)),
474
+ headers: jsonContentHeaders,
475
+ method: "PUT",
476
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`
477
+ }, unmarshalSetInstanceACLRulesResponse);
478
+ /**
479
+ * Delete ACL rules of a Database Instance. Delete one or more ACL rules of a Database Instance.
480
+ *
481
+ * @param request - The request {@link DeleteInstanceACLRulesRequest}
482
+ * @returns A Promise of DeleteInstanceACLRulesResponse
483
+ */
484
+ deleteInstanceACLRules = (request) => this.client.fetch({
485
+ body: JSON.stringify(marshalDeleteInstanceACLRulesRequest(request, this.client.settings)),
486
+ headers: jsonContentHeaders,
487
+ method: "DELETE",
488
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/acls`
489
+ }, unmarshalDeleteInstanceACLRulesResponse);
490
+ pageOfListUsers = (request) => this.client.fetch({
491
+ method: "GET",
492
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users`,
493
+ urlParams: urlParams(["name", request.name], ["order_by", request.orderBy], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize])
494
+ }, unmarshalListUsersResponse);
495
+ /**
496
+ * List users of a Database Instance. List all users of a given Database Instance. By default, the users returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field.
497
+ *
498
+ * @param request - The request {@link ListUsersRequest}
499
+ * @returns A Promise of ListUsersResponse
500
+ */
501
+ listUsers = (request) => enrichForPagination("users", this.pageOfListUsers, request);
502
+ /**
503
+ * Create a user for a Database Instance. Create a new user for a Database Instance. You must define the `name`, `password` and `is_admin` parameters.
504
+ *
505
+ * @param request - The request {@link CreateUserRequest}
506
+ * @returns A Promise of User
507
+ */
508
+ createUser = (request) => this.client.fetch({
509
+ body: JSON.stringify(marshalCreateUserRequest(request, this.client.settings)),
510
+ headers: jsonContentHeaders,
511
+ method: "POST",
512
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users`
513
+ }, unmarshalUser);
514
+ /**
515
+ * Update a user on a Database Instance. Update the parameters of a user on a Database Instance. You can update the `password` and `is_admin` parameters, but you cannot change the name of the user.
516
+ *
517
+ * @param request - The request {@link UpdateUserRequest}
518
+ * @returns A Promise of User
519
+ */
520
+ updateUser = (request) => this.client.fetch({
521
+ body: JSON.stringify(marshalUpdateUserRequest(request, this.client.settings)),
522
+ headers: jsonContentHeaders,
523
+ method: "PATCH",
524
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users/${validatePathParam("name", request.name)}`
525
+ }, unmarshalUser);
526
+ /**
527
+ * Delete a user on a Database Instance. Delete a given user on a Database Instance. You must specify, in the endpoint, the `region`, `instance_id` and `name` parameters of the user you want to delete.
528
+ *
529
+ * @param request - The request {@link DeleteUserRequest}
530
+ */
531
+ deleteUser = (request) => this.client.fetch({
532
+ method: "DELETE",
533
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/users/${validatePathParam("name", request.name)}`
534
+ });
535
+ pageOfListDatabases = (request) => this.client.fetch({
536
+ method: "GET",
537
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/databases`,
538
+ urlParams: urlParams(["managed", request.managed], ["name", request.name], ["order_by", request.orderBy], ["owner", request.owner], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["skip_size_retrieval", request.skipSizeRetrieval])
539
+ }, unmarshalListDatabasesResponse);
540
+ /**
541
+ * List databases in a Database Instance. List all databases of a given Database Instance. By default, the databases returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field. You can define additional parameters for your query, such as `name`, `managed` and `owner`.
542
+ *
543
+ * @param request - The request {@link ListDatabasesRequest}
544
+ * @returns A Promise of ListDatabasesResponse
545
+ */
546
+ listDatabases = (request) => enrichForPagination("databases", this.pageOfListDatabases, request);
547
+ /**
548
+ * Create a database in a Database Instance. Create a new database. You must define the `name` parameter in the request.
549
+ *
550
+ * @param request - The request {@link CreateDatabaseRequest}
551
+ * @returns A Promise of Database
552
+ */
553
+ createDatabase = (request) => this.client.fetch({
554
+ body: JSON.stringify(marshalCreateDatabaseRequest(request, this.client.settings)),
555
+ headers: jsonContentHeaders,
556
+ method: "POST",
557
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/databases`
558
+ }, unmarshalDatabase);
559
+ /**
560
+ * Delete a database in a Database Instance. Delete a given database on a Database Instance. You must specify, in the endpoint, the `region`, `instance_id` and `name` parameters of the database you want to delete.
561
+ *
562
+ * @param request - The request {@link DeleteDatabaseRequest}
563
+ */
564
+ deleteDatabase = (request) => this.client.fetch({
565
+ method: "DELETE",
566
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/databases/${validatePathParam("name", request.name)}`
567
+ });
568
+ pageOfListPrivileges = (request) => this.client.fetch({
569
+ method: "GET",
570
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/privileges`,
571
+ urlParams: urlParams(["database_name", request.databaseName], ["order_by", request.orderBy], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["user_name", request.userName])
572
+ }, unmarshalListPrivilegesResponse);
573
+ /**
574
+ * List user privileges for a database. List privileges of a user on a database. By default, the details returned in the list are ordered by creation date in ascending order, though this can be modified via the order_by field. You can define additional parameters for your query, such as `database_name` and `user_name`.
575
+ *
576
+ * @param request - The request {@link ListPrivilegesRequest}
577
+ * @returns A Promise of ListPrivilegesResponse
578
+ */
579
+ listPrivileges = (request) => enrichForPagination("privileges", this.pageOfListPrivileges, request);
580
+ /**
581
+ * Set user privileges for a database. Set the privileges of a user on a database. You must define `database_name`, `user_name` and `permission` in the request body.
582
+ *
583
+ * @param request - The request {@link SetPrivilegeRequest}
584
+ * @returns A Promise of Privilege
585
+ */
586
+ setPrivilege = (request) => this.client.fetch({
587
+ body: JSON.stringify(marshalSetPrivilegeRequest(request, this.client.settings)),
588
+ headers: jsonContentHeaders,
589
+ method: "PUT",
590
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/privileges`
591
+ }, unmarshalPrivilege);
592
+ pageOfListSnapshots = (request = {}) => this.client.fetch({
593
+ method: "GET",
594
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots`,
595
+ urlParams: urlParams(["instance_id", request.instanceId], ["name", request.name], ["order_by", request.orderBy], ["organization_id", request.organizationId], ["page", request.page], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["project_id", request.projectId])
596
+ }, unmarshalListSnapshotsResponse);
597
+ /**
598
+ * List snapshots. List snapshots. You can include the `instance_id` or `project_id` in your query to get the list of snapshots for specific Database Instances and/or Projects. By default, the details returned in the list are ordered by creation date in ascending order, though this can be modified via the `order_by` field.
599
+ *
600
+ * @param request - The request {@link ListSnapshotsRequest}
601
+ * @returns A Promise of ListSnapshotsResponse
602
+ */
603
+ listSnapshots = (request = {}) => enrichForPagination("snapshots", this.pageOfListSnapshots, request);
604
+ /**
605
+ * Get a Database Instance snapshot. Retrieve information about a given snapshot, specified by its `snapshot_id` and `region`. Full details about the snapshot, like size and expiration date, are returned in the response.
606
+ *
607
+ * @param request - The request {@link GetSnapshotRequest}
608
+ * @returns A Promise of Snapshot
609
+ */
610
+ getSnapshot = (request) => this.client.fetch({
611
+ method: "GET",
612
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}`
613
+ }, unmarshalSnapshot);
614
+ /**
615
+ * Waits for {@link Snapshot} to be in a final state.
616
+ *
617
+ * @param request - The request {@link GetSnapshotRequest}
618
+ * @param options - The waiting options
619
+ * @returns A Promise of Snapshot
620
+ */
621
+ waitForSnapshot = (request, options) => waitForResource(options?.stop ?? ((res) => Promise.resolve(!SNAPSHOT_TRANSIENT_STATUSES.includes(res.status))), this.getSnapshot, request, options);
622
+ /**
623
+ * Create a Database Instance snapshot. Create a new snapshot of a Database Instance. You must define the `name` parameter in the request.
624
+ *
625
+ * @param request - The request {@link CreateSnapshotRequest}
626
+ * @returns A Promise of Snapshot
627
+ */
628
+ createSnapshot = (request) => this.client.fetch({
629
+ body: JSON.stringify(marshalCreateSnapshotRequest(request, this.client.settings)),
630
+ headers: jsonContentHeaders,
631
+ method: "POST",
632
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/snapshots`
633
+ }, unmarshalSnapshot);
634
+ /**
635
+ * Update a Database Instance snapshot. Update the parameters of a snapshot of a Database Instance. You can update the `name` and `expires_at` parameters.
636
+ *
637
+ * @param request - The request {@link UpdateSnapshotRequest}
638
+ * @returns A Promise of Snapshot
639
+ */
640
+ updateSnapshot = (request) => this.client.fetch({
641
+ body: JSON.stringify(marshalUpdateSnapshotRequest(request, this.client.settings)),
642
+ headers: jsonContentHeaders,
643
+ method: "PATCH",
644
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}`
645
+ }, unmarshalSnapshot);
646
+ /**
647
+ * Delete a Database Instance snapshot. Delete a given snapshot of a Database Instance. You must specify, in the endpoint, the `region` and `snapshot_id` parameters of the snapshot you want to delete.
648
+ *
649
+ * @param request - The request {@link DeleteSnapshotRequest}
650
+ * @returns A Promise of Snapshot
651
+ */
652
+ deleteSnapshot = (request) => this.client.fetch({
653
+ method: "DELETE",
654
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}`
655
+ }, unmarshalSnapshot);
656
+ /**
657
+ * Create a new Database Instance from a snapshot. Restore a snapshot. When you restore a snapshot, a new Instance is created and billed to your account. Note that is possible to select a larger node type for your new Database Instance. However, the Block volume size will be the same as the size of the restored snapshot. All Instance settings will be restored if you chose a node type with the same or more memory size than the initial Instance. Settings will be reset to the default if your node type has less memory.
658
+ *
659
+ * @param request - The request {@link CreateInstanceFromSnapshotRequest}
660
+ * @returns A Promise of Instance
661
+ */
662
+ createInstanceFromSnapshot = (request) => this.client.fetch({
663
+ body: JSON.stringify(marshalCreateInstanceFromSnapshotRequest(request, this.client.settings)),
664
+ headers: jsonContentHeaders,
665
+ method: "POST",
666
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/snapshots/${validatePathParam("snapshotId", request.snapshotId)}/create-instance`
667
+ }, unmarshalInstance);
668
+ /**
669
+ * Create a new Database Instance endpoint. Create a new endpoint for a Database Instance. You can add `load_balancer` and `private_network` specifications to the body of the request.
670
+ *
671
+ * @param request - The request {@link CreateEndpointRequest}
672
+ * @returns A Promise of Endpoint
673
+ */
674
+ createEndpoint = (request) => this.client.fetch({
675
+ body: JSON.stringify(marshalCreateEndpointRequest(request, this.client.settings)),
676
+ headers: jsonContentHeaders,
677
+ method: "POST",
678
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/endpoints`
679
+ }, unmarshalEndpoint);
680
+ /**
681
+ * Delete a Database Instance endpoint. Delete the endpoint of a Database Instance. You must specify the `region` and `endpoint_id` parameters of the endpoint you want to delete. Note that might need to update any environment configurations that point to the deleted endpoint.
682
+ *
683
+ * @param request - The request {@link DeleteEndpointRequest}
684
+ */
685
+ deleteEndpoint = (request) => this.client.fetch({
686
+ method: "DELETE",
687
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam("endpointId", request.endpointId)}`
688
+ });
689
+ /**
690
+ * Get a Database Instance endpoint. Retrieve information about a Database Instance endpoint. Full details about the endpoint, like `ip`, `port`, `private_network` and `load_balancer` specifications are returned in the response.
691
+ *
692
+ * @param request - The request {@link GetEndpointRequest}
693
+ * @returns A Promise of Endpoint
694
+ */
695
+ getEndpoint = (request) => this.client.fetch({
696
+ method: "GET",
697
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam("endpointId", request.endpointId)}`
698
+ }, unmarshalEndpoint);
699
+ /**
700
+ * Migrate an existing instance endpoint to another instance.
701
+ *
702
+ * @param request - The request {@link MigrateEndpointRequest}
703
+ * @returns A Promise of Endpoint
704
+ */
705
+ migrateEndpoint = (request) => this.client.fetch({
706
+ body: JSON.stringify(marshalMigrateEndpointRequest(request, this.client.settings)),
707
+ headers: jsonContentHeaders,
708
+ method: "POST",
709
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam("endpointId", request.endpointId)}/migrate`
710
+ }, unmarshalEndpoint);
711
+ /**
712
+ * Apply Database Instance maintenance. Apply maintenance tasks to your Database Instance. This will trigger pending maintenance tasks to start in your Database Instance and can generate service interruption. Maintenance tasks can be applied between `starts_at` and `stops_at` times, and are run directly by Scaleway at `forced_at` timestamp.
713
+ *
714
+ * @param request - The request {@link ApplyInstanceMaintenanceRequest}
715
+ * @returns A Promise of Maintenance
716
+ */
717
+ applyInstanceMaintenance = (request) => this.client.fetch({
718
+ body: "{}",
719
+ headers: jsonContentHeaders,
720
+ method: "POST",
721
+ path: `/rdb/v1/regions/${validatePathParam("region", request.region ?? this.client.settings.defaultRegion)}/instances/${validatePathParam("instanceId", request.instanceId)}/apply-maintenance`
722
+ }, unmarshalMaintenance);
1061
723
  };
724
+ export { API$1 as API };