> For the complete documentation index, see [llms.txt](https://docs.ionos.com/cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ionos.com/cloud/api-reference/databases/postgresql-v2/models.md).

# Models

## The ClusterReadList object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"ClusterReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of Cluster resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of Cluster resources.","type":"string"},"items":{"description":"The list of Cluster resources.","type":"array","items":{"$ref":"#/components/schemas/ClusterRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"ClusterRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Cluster.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["cluster"]},"href":{"description":"The URL of the Cluster.","type":"string"},"metadata":{"$ref":"#/components/schemas/ClusterMetadata"},"properties":{"$ref":"#/components/schemas/Cluster"}}},"ClusterMetadata":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","properties":{"state":{"$ref":"#/components/schemas/PostgresClusterStates"},"statusMessage":{"type":"string","description":"A human-readable message describing the current state. Populated when `state` is `FAILED`.","readOnly":true}}},{"type":"object","properties":{"dnsName":{"type":"string","description":"The DNS name used to access the cluster.","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"PostgresClusterStates":{"description":"The current lifecycle state of the cluster.","type":"string","enum":["PROVISIONING","AVAILABLE","UPDATING","DESTROYING","FAILED"],"readOnly":true},"Cluster":{"type":"object","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\n","required":["name","instances","connection","maintenanceWindow","replicationMode","version","backup"],"properties":{"name":{"$ref":"#/components/schemas/PostgresClusterName"},"description":{"$ref":"#/components/schemas/PostgresClusterDescription"},"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"instances":{"$ref":"#/components/schemas/InstanceConfiguration"},"connection":{"$ref":"#/components/schemas/PostgresClusterConnection"},"maintenanceWindow":{"$ref":"#/components/schemas/MaintenanceWindow"},"replicationMode":{"$ref":"#/components/schemas/PostgresClusterReplicationMode"},"credentials":{"$ref":"#/components/schemas/PostgresUser"},"connectionPooler":{"type":"string","description":"Defines how database connections are managed and reused. Default value is `DISABLED`.","default":"DISABLED","enum":["DISABLED","TRANSACTION","SESSION"]},"restoreFromBackup":{"description":"Optionally restores data from a backup. The two variants are mutually exclusive:\n- `PostgresRestoreClusterFromBackup` is accepted only on cluster creation.\n- `PostgresInPlaceRestoreClusterFromBackup` is accepted only on cluster modification. The restore uses the cluster's existing backups automatically. No other source backup can be specified. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime.\n","oneOf":[{"$ref":"#/components/schemas/PostgresRestoreClusterFromBackup"},{"$ref":"#/components/schemas/PostgresInPlaceRestoreClusterFromBackup"}]},"logsEnabled":{"$ref":"#/components/schemas/LogsEnabled"},"metricsEnabled":{"$ref":"#/components/schemas/MetricsEnabled"},"backup":{"$ref":"#/components/schemas/ClusterBackup"}}},"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63},"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096},"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."},"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]},"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63},"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}},"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}},"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"},"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"},"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The ClusterRead object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"ClusterRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Cluster.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["cluster"]},"href":{"description":"The URL of the Cluster.","type":"string"},"metadata":{"$ref":"#/components/schemas/ClusterMetadata"},"properties":{"$ref":"#/components/schemas/Cluster"}}},"ClusterMetadata":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","properties":{"state":{"$ref":"#/components/schemas/PostgresClusterStates"},"statusMessage":{"type":"string","description":"A human-readable message describing the current state. Populated when `state` is `FAILED`.","readOnly":true}}},{"type":"object","properties":{"dnsName":{"type":"string","description":"The DNS name used to access the cluster.","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"PostgresClusterStates":{"description":"The current lifecycle state of the cluster.","type":"string","enum":["PROVISIONING","AVAILABLE","UPDATING","DESTROYING","FAILED"],"readOnly":true},"Cluster":{"type":"object","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\n","required":["name","instances","connection","maintenanceWindow","replicationMode","version","backup"],"properties":{"name":{"$ref":"#/components/schemas/PostgresClusterName"},"description":{"$ref":"#/components/schemas/PostgresClusterDescription"},"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"instances":{"$ref":"#/components/schemas/InstanceConfiguration"},"connection":{"$ref":"#/components/schemas/PostgresClusterConnection"},"maintenanceWindow":{"$ref":"#/components/schemas/MaintenanceWindow"},"replicationMode":{"$ref":"#/components/schemas/PostgresClusterReplicationMode"},"credentials":{"$ref":"#/components/schemas/PostgresUser"},"connectionPooler":{"type":"string","description":"Defines how database connections are managed and reused. Default value is `DISABLED`.","default":"DISABLED","enum":["DISABLED","TRANSACTION","SESSION"]},"restoreFromBackup":{"description":"Optionally restores data from a backup. The two variants are mutually exclusive:\n- `PostgresRestoreClusterFromBackup` is accepted only on cluster creation.\n- `PostgresInPlaceRestoreClusterFromBackup` is accepted only on cluster modification. The restore uses the cluster's existing backups automatically. No other source backup can be specified. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime.\n","oneOf":[{"$ref":"#/components/schemas/PostgresRestoreClusterFromBackup"},{"$ref":"#/components/schemas/PostgresInPlaceRestoreClusterFromBackup"}]},"logsEnabled":{"$ref":"#/components/schemas/LogsEnabled"},"metricsEnabled":{"$ref":"#/components/schemas/MetricsEnabled"},"backup":{"$ref":"#/components/schemas/ClusterBackup"}}},"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63},"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096},"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."},"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]},"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63},"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}},"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}},"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"},"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"},"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365}}}}
```

## The BackupReadList object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of Backup resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of Backup resources.","type":"string"},"items":{"description":"The list of Backup resources.","type":"array","items":{"$ref":"#/components/schemas/BackupRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"BackupRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Backup.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["backup"]},"href":{"description":"The URL of the Backup.","type":"string"},"metadata":{"$ref":"#/components/schemas/NoMetadata"},"properties":{"$ref":"#/components/schemas/Backup"}}},"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true},"Backup":{"type":"object","readOnly":true,"description":"Access Point-in-Time Recovery backup metadata for a cluster, including the recovery window, backup location, and active backup status.","properties":{"clusterId":{"type":"string","format":"uuid","description":"The unique identifier of the cluster this backup belongs to."},"clusterName":{"type":"string","readOnly":true,"description":"The name of the PostgreSQL cluster this backup belongs to."},"postgresClusterVersion":{"type":"string","description":"The PostgreSQL version of the cluster at backup time."},"isActive":{"type":"boolean","description":"Whether this is the currently active backup for the cluster."},"earliestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the earliest point in time to which the cluster can be restored from this backup."},"latestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the latest possible point in time to which the cluster can be restored.\nIf the backup can be restored up to the current time, this field is null.\n"},"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The BackupRead object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Backup.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["backup"]},"href":{"description":"The URL of the Backup.","type":"string"},"metadata":{"$ref":"#/components/schemas/NoMetadata"},"properties":{"$ref":"#/components/schemas/Backup"}}},"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true},"Backup":{"type":"object","readOnly":true,"description":"Access Point-in-Time Recovery backup metadata for a cluster, including the recovery window, backup location, and active backup status.","properties":{"clusterId":{"type":"string","format":"uuid","description":"The unique identifier of the cluster this backup belongs to."},"clusterName":{"type":"string","readOnly":true,"description":"The name of the PostgreSQL cluster this backup belongs to."},"postgresClusterVersion":{"type":"string","description":"The PostgreSQL version of the cluster at backup time."},"isActive":{"type":"boolean","description":"Whether this is the currently active backup for the cluster."},"earliestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the earliest point in time to which the cluster can be restored from this backup."},"latestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the latest possible point in time to which the cluster can be restored.\nIf the backup can be restored up to the current time, this field is null.\n"},"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The BackupEnsure object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupEnsure":{"type":"object","required":["id","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Backup.","format":"uuid"},"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Backup"}}},"Backup":{"type":"object","readOnly":true,"description":"Access Point-in-Time Recovery backup metadata for a cluster, including the recovery window, backup location, and active backup status.","properties":{"clusterId":{"type":"string","format":"uuid","description":"The unique identifier of the cluster this backup belongs to."},"clusterName":{"type":"string","readOnly":true,"description":"The name of the PostgreSQL cluster this backup belongs to."},"postgresClusterVersion":{"type":"string","description":"The PostgreSQL version of the cluster at backup time."},"isActive":{"type":"boolean","description":"Whether this is the currently active backup for the cluster."},"earliestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the earliest point in time to which the cluster can be restored from this backup."},"latestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the latest possible point in time to which the cluster can be restored.\nIf the backup can be restored up to the current time, this field is null.\n"},"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The BackupCreate object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupCreate":{"type":"object","required":["properties"],"properties":{"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Backup"}}},"Backup":{"type":"object","readOnly":true,"description":"Access Point-in-Time Recovery backup metadata for a cluster, including the recovery window, backup location, and active backup status.","properties":{"clusterId":{"type":"string","format":"uuid","description":"The unique identifier of the cluster this backup belongs to."},"clusterName":{"type":"string","readOnly":true,"description":"The name of the PostgreSQL cluster this backup belongs to."},"postgresClusterVersion":{"type":"string","description":"The PostgreSQL version of the cluster at backup time."},"isActive":{"type":"boolean","description":"Whether this is the currently active backup for the cluster."},"earliestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the earliest point in time to which the cluster can be restored from this backup."},"latestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the latest possible point in time to which the cluster can be restored.\nIf the backup can be restored up to the current time, this field is null.\n"},"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The BackupLocationRead object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupLocationRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the BackupLocation.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["backuplocation"]},"href":{"description":"The URL of the BackupLocation.","type":"string"},"metadata":{"$ref":"#/components/schemas/NoMetadata"},"properties":{"$ref":"#/components/schemas/BackupLocation"}}},"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true},"BackupLocation":{"type":"object","description":"Select the Object Storage region where cluster backups are stored. Choose a region different from your cluster for geographic data safety.","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The BackupLocationReadList object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupLocationReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of BackupLocation resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of BackupLocation resources.","type":"string"},"items":{"description":"The list of BackupLocation resources.","type":"array","items":{"$ref":"#/components/schemas/BackupLocationRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"BackupLocationRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the BackupLocation.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["backuplocation"]},"href":{"description":"The URL of the BackupLocation.","type":"string"},"metadata":{"$ref":"#/components/schemas/NoMetadata"},"properties":{"$ref":"#/components/schemas/BackupLocation"}}},"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true},"BackupLocation":{"type":"object","description":"Select the Object Storage region where cluster backups are stored. Choose a region different from your cluster for geographic data safety.","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The PostgresVersionRead object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresVersionRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the PostgresVersion.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["postgresversion"]},"href":{"description":"The URL of the PostgresVersion.","type":"string"},"metadata":{"$ref":"#/components/schemas/NoMetadata"},"properties":{"$ref":"#/components/schemas/PostgresVersion"}}},"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true},"PostgresVersion":{"type":"object","description":"Query the support lifecycle and available upgrade paths for a specific PostgreSQL version.","properties":{"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"status":{"type":"string","description":"The support status of the version."},"comment":{"type":"string","description":"Additional information about the version status."},"canUpgradeTo":{"type":"array","description":"List of versions that this version can be upgraded to. Only versions listed here are valid upgrade targets. Downgrades are not supported.","items":{"$ref":"#/components/schemas/PostgresClusterVersion"}}}},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."}}}}
```

## The PostgresVersionReadList object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresVersionReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of PostgresVersion resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of PostgresVersion resources.","type":"string"},"items":{"description":"The list of PostgresVersion resources.","type":"array","items":{"$ref":"#/components/schemas/PostgresVersionRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"PostgresVersionRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the PostgresVersion.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["postgresversion"]},"href":{"description":"The URL of the PostgresVersion.","type":"string"},"metadata":{"$ref":"#/components/schemas/NoMetadata"},"properties":{"$ref":"#/components/schemas/PostgresVersion"}}},"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true},"PostgresVersion":{"type":"object","description":"Query the support lifecycle and available upgrade paths for a specific PostgreSQL version.","properties":{"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"status":{"type":"string","description":"The support status of the version."},"comment":{"type":"string","description":"Additional information about the version status."},"canUpgradeTo":{"type":"array","description":"List of versions that this version can be upgraded to. Only versions listed here are valid upgrade targets. Downgrades are not supported.","items":{"$ref":"#/components/schemas/PostgresClusterVersion"}}}},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The ClusterEnsure object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"ClusterEnsure":{"type":"object","required":["id","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Cluster.","format":"uuid"},"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Cluster"}}},"Cluster":{"type":"object","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\n","required":["name","instances","connection","maintenanceWindow","replicationMode","version","backup"],"properties":{"name":{"$ref":"#/components/schemas/PostgresClusterName"},"description":{"$ref":"#/components/schemas/PostgresClusterDescription"},"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"instances":{"$ref":"#/components/schemas/InstanceConfiguration"},"connection":{"$ref":"#/components/schemas/PostgresClusterConnection"},"maintenanceWindow":{"$ref":"#/components/schemas/MaintenanceWindow"},"replicationMode":{"$ref":"#/components/schemas/PostgresClusterReplicationMode"},"credentials":{"$ref":"#/components/schemas/PostgresUser"},"connectionPooler":{"type":"string","description":"Defines how database connections are managed and reused. Default value is `DISABLED`.","default":"DISABLED","enum":["DISABLED","TRANSACTION","SESSION"]},"restoreFromBackup":{"description":"Optionally restores data from a backup. The two variants are mutually exclusive:\n- `PostgresRestoreClusterFromBackup` is accepted only on cluster creation.\n- `PostgresInPlaceRestoreClusterFromBackup` is accepted only on cluster modification. The restore uses the cluster's existing backups automatically. No other source backup can be specified. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime.\n","oneOf":[{"$ref":"#/components/schemas/PostgresRestoreClusterFromBackup"},{"$ref":"#/components/schemas/PostgresInPlaceRestoreClusterFromBackup"}]},"logsEnabled":{"$ref":"#/components/schemas/LogsEnabled"},"metricsEnabled":{"$ref":"#/components/schemas/MetricsEnabled"},"backup":{"$ref":"#/components/schemas/ClusterBackup"}}},"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63},"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096},"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."},"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]},"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63},"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}},"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}},"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"},"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"},"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365}}}}
```

## The ClusterCreate object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"ClusterCreate":{"type":"object","required":["properties"],"properties":{"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"allOf":[{"$ref":"#/components/schemas/Cluster"},{"required":["credentials"]}]}}},"Cluster":{"type":"object","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\n","required":["name","instances","connection","maintenanceWindow","replicationMode","version","backup"],"properties":{"name":{"$ref":"#/components/schemas/PostgresClusterName"},"description":{"$ref":"#/components/schemas/PostgresClusterDescription"},"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"instances":{"$ref":"#/components/schemas/InstanceConfiguration"},"connection":{"$ref":"#/components/schemas/PostgresClusterConnection"},"maintenanceWindow":{"$ref":"#/components/schemas/MaintenanceWindow"},"replicationMode":{"$ref":"#/components/schemas/PostgresClusterReplicationMode"},"credentials":{"$ref":"#/components/schemas/PostgresUser"},"connectionPooler":{"type":"string","description":"Defines how database connections are managed and reused. Default value is `DISABLED`.","default":"DISABLED","enum":["DISABLED","TRANSACTION","SESSION"]},"restoreFromBackup":{"description":"Optionally restores data from a backup. The two variants are mutually exclusive:\n- `PostgresRestoreClusterFromBackup` is accepted only on cluster creation.\n- `PostgresInPlaceRestoreClusterFromBackup` is accepted only on cluster modification. The restore uses the cluster's existing backups automatically. No other source backup can be specified. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime.\n","oneOf":[{"$ref":"#/components/schemas/PostgresRestoreClusterFromBackup"},{"$ref":"#/components/schemas/PostgresInPlaceRestoreClusterFromBackup"}]},"logsEnabled":{"$ref":"#/components/schemas/LogsEnabled"},"metricsEnabled":{"$ref":"#/components/schemas/MetricsEnabled"},"backup":{"$ref":"#/components/schemas/ClusterBackup"}}},"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63},"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096},"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."},"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]},"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63},"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}},"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}},"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"},"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"},"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365}}}}
```

## The NoMetadata object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"NoMetadata":{"type":"object","additionalProperties":false,"readOnly":true}}}}
```

## The Cluster object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Cluster":{"type":"object","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\n","required":["name","instances","connection","maintenanceWindow","replicationMode","version","backup"],"properties":{"name":{"$ref":"#/components/schemas/PostgresClusterName"},"description":{"$ref":"#/components/schemas/PostgresClusterDescription"},"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"instances":{"$ref":"#/components/schemas/InstanceConfiguration"},"connection":{"$ref":"#/components/schemas/PostgresClusterConnection"},"maintenanceWindow":{"$ref":"#/components/schemas/MaintenanceWindow"},"replicationMode":{"$ref":"#/components/schemas/PostgresClusterReplicationMode"},"credentials":{"$ref":"#/components/schemas/PostgresUser"},"connectionPooler":{"type":"string","description":"Defines how database connections are managed and reused. Default value is `DISABLED`.","default":"DISABLED","enum":["DISABLED","TRANSACTION","SESSION"]},"restoreFromBackup":{"description":"Optionally restores data from a backup. The two variants are mutually exclusive:\n- `PostgresRestoreClusterFromBackup` is accepted only on cluster creation.\n- `PostgresInPlaceRestoreClusterFromBackup` is accepted only on cluster modification. The restore uses the cluster's existing backups automatically. No other source backup can be specified. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime.\n","oneOf":[{"$ref":"#/components/schemas/PostgresRestoreClusterFromBackup"},{"$ref":"#/components/schemas/PostgresInPlaceRestoreClusterFromBackup"}]},"logsEnabled":{"$ref":"#/components/schemas/LogsEnabled"},"metricsEnabled":{"$ref":"#/components/schemas/MetricsEnabled"},"backup":{"$ref":"#/components/schemas/ClusterBackup"}}},"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63},"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096},"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."},"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]},"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63},"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}},"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}},"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"},"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"},"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365}}}}
```

## The ClusterMetadata object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"ClusterMetadata":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","properties":{"state":{"$ref":"#/components/schemas/PostgresClusterStates"},"statusMessage":{"type":"string","description":"A human-readable message describing the current state. Populated when `state` is `FAILED`.","readOnly":true}}},{"type":"object","properties":{"dnsName":{"type":"string","description":"The DNS name used to access the cluster.","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"PostgresClusterStates":{"description":"The current lifecycle state of the cluster.","type":"string","enum":["PROVISIONING","AVAILABLE","UPDATING","DESTROYING","FAILED"],"readOnly":true}}}}
```

## The PostgresClusterStates object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterStates":{"description":"The current lifecycle state of the cluster.","type":"string","enum":["PROVISIONING","AVAILABLE","UPDATING","DESTROYING","FAILED"],"readOnly":true}}}}
```

## The PostgresClusterName object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63}}}}
```

## The PostgresClusterDescription object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."}}}}
```

## The PostgresClusterVersion object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."}}}}
```

## The InstanceConfiguration object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096}}}}
```

## The InstancesCores object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62}}}}
```

## The InstancesMemory object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240}}}}
```

## The InstancesStorageSize object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096}}}}
```

## The LogsEnabled object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"}}}}
```

## The MetricsEnabled object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"}}}}
```

## The PostgresClusterConnection object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."}}}}
```

## The PostgresClusterReplicationMode object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]}}}}
```

## The PostgresRestoreClusterFromBackup object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}}}}}
```

## The PostgresInPlaceRestoreClusterFromBackup object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}}}}}
```

## The PostgresClusterInstanceIp object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."}}}}
```

## The PostgresUsername object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16}}}}
```

## The PostgresUserPassword object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256}}}}
```

## The PostgresDatabaseName object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63}}}}
```

## The PostgresUser object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63}}}}
```

## The Backup object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Backup":{"type":"object","readOnly":true,"description":"Access Point-in-Time Recovery backup metadata for a cluster, including the recovery window, backup location, and active backup status.","properties":{"clusterId":{"type":"string","format":"uuid","description":"The unique identifier of the cluster this backup belongs to."},"clusterName":{"type":"string","readOnly":true,"description":"The name of the PostgreSQL cluster this backup belongs to."},"postgresClusterVersion":{"type":"string","description":"The PostgreSQL version of the cluster at backup time."},"isActive":{"type":"boolean","description":"Whether this is the currently active backup for the cluster."},"earliestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the earliest point in time to which the cluster can be restored from this backup."},"latestRecoveryTargetTime":{"type":"string","format":"date-time","description":"Returned as an ISO 8601 timestamp that identifies the latest possible point in time to which the cluster can be restored.\nIf the backup can be restored up to the current time, this field is null.\n"},"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The PostgresVersion object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"PostgresVersion":{"type":"object","description":"Query the support lifecycle and available upgrade paths for a specific PostgreSQL version.","properties":{"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"status":{"type":"string","description":"The support status of the version."},"comment":{"type":"string","description":"Additional information about the version status."},"canUpgradeTo":{"type":"array","description":"List of versions that this version can be upgraded to. Only versions listed here are valid upgrade targets. Downgrades are not supported.","items":{"$ref":"#/components/schemas/PostgresClusterVersion"}}}},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."}}}}
```

## The BackupLocation object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupLocation":{"type":"object","description":"Select the Object Storage region where cluster backups are stored. Choose a region different from your cluster for geographic data safety.","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"}}},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The BackupLocationName object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"}}}}
```

## The BackupRetentionDays object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365}}}}
```

## The ClusterBackup object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365}}}}
```

## The MaintenanceWindow object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}}}}
```

## The DayOfTheWeek object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}}}}
```

## The Error object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Error":{"description":"The Error object is used to represent an error response from the API.\n","type":"object","properties":{"httpStatus":{"type":"integer","description":"The HTTP status code of the operation."},"messages":{"type":"array","description":"A list of error messages.\n","items":{"type":"object","properties":{"errorCode":{"type":"string","description":"Application internal error code\n"},"message":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem.\n"}}}}}}}}}
```

## The Metadata object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}}}}}
```

## The Pagination object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The Offset object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true}}}}
```

## The Limit object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true}}}}
```

## The Links object

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"components":{"schemas":{"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ionos.com/cloud/api-reference/databases/postgresql-v2/models.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
