PostgreSQL
This method allows to create a postgre SQL instance.
You will have to know at the minimum :
- the area or availability zone of the region where you want to host your cluster (area&azattributes). Areas can be available in List Regions method.
- the product code (productCodeattribute).
- name of postgre SQL cluster (nameattribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
- Size of nodes in the postgre SQL cluster (nodeSizingattribute). Ex: 2cpu2gb
- storage needed on each data node of the postgre SQL cluster (diskSizeattribute). The possible values are at least 40 and maximum 1024 (representing GB).
- how to connect to the instance (admPasswordattribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
- On which service the postgre SQL instance belongs to (serviceIdattribute).
- network ID of the  cluster (networkIdattribute).
- Topology of the postgre SQL cluster (topologyattribute). Either standalone / HA
- trigram of the postgre SQL cluster (trigramattribute).
- Allowed replication Lag of the postgre SQL (allowedReplicationLagattribute). The minimum size is 1 MB and maximum is 10240 MB
HA topology extra fields: These fields are required for HA clusters:
- prefix of the node names for postgre cluster (nodePrefixattribute). The prefix should be from 5 to 12 characters and can contain any uppercase character.
- Availability zone of the postgre cluster (azattribute).
- Trigram of the postgre cluster (trigramattribute).
- TLS enabled boolean for the postgre cluster (tlsattribute).
This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.
POST /postgresql
{
   "productCode": "deb12pg16",
  "serviceId" : 123,
  "nodeSizing" : "2cpu4gb",
  "networkId" : 132,
  "area" : "EB-QA",
  "diskSize" : 40,
  "admPassword" : "Test123@2022",
  "allowedReplicationLag" : 10,
  "az" : "az",
  "topology" : "STANDALONE",
  "trigram" : "tri",
  "tls" : true,
  "name" : "NEWPOSTGRE01"
}
OK
Bad Request
POST /itcare/databases/postgresql HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 2053
{
  "admPassword": "text",
  "allowedReplicationLag": 1,
  "area": "text",
  "az": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "prefix": "text",
  "product": {
    "BACKUP_POLICY_TYPE": "text",
    "CATEGORY_WEIGHT": 1,
    "CODE": "text",
    "COMMENT": "text",
    "DOCUMENTATION": "text",
    "EDITION": "text",
    "END_OF_SALES_AT": "2025-10-31T05:09:20.855Z",
    "END_OF_SUPPORT_AT": "2025-10-31T05:09:20.855Z",
    "ENFORCED_AUTH_DOMAIN": true,
    "EXTENDED_SUPPORT_AT": "2025-10-31T05:09:20.855Z",
    "FAMILY_WEIGHT": 1,
    "ID": "text",
    "IMG": "text",
    "LABEL": "text",
    "NAME": "text",
    "PLATFORM": "text",
    "PRODUCT_CATEGORY": "text",
    "PRODUCT_DISPLAYABLE": true,
    "PRODUCT_IS_DISABLED": true,
    "PRODUCT_IS_IN_BETA_MODE": true,
    "PRODUCT_MAGIC_FORMS": "text",
    "PRODUCT_SKIP_TECHNOLOGY": true,
    "PRODUCT_TECHNOLOGY": "text",
    "PRODUCT_VERSION": "text",
    "RELEASED_AT": "2025-10-31T05:09:20.855Z",
    "STATUS": "text",
    "SUPPORT_FORM_AVAILABLE": true,
    "SUPPORT_FORM_ID": "text",
    "SUPPORT_PHASE": "text",
    "TECH_FORMONLY": true,
    "TECH_WEIGHT": 1,
    "TYPE": "text",
    "VERSION": "text",
    "configuration": {
      "topologies": [
        {
          "alwaysOn": "text",
          "cluster": "text",
          "galera": "text",
          "ha": "text",
          "replica": "text",
          "sentinel": "text",
          "single": "text",
          "standalone": "text"
        }
      ]
    },
    "properties": [
      {
        "defaultValue": "text",
        "description": "text",
        "displayed": true,
        "editable": true,
        "key": "text",
        "mandatory": true,
        "value": "text"
      }
    ],
    "resources": [
      {
        "available": true,
        "id": "text",
        "optionDescrEn": "text",
        "optionDescrFr": "text",
        "optionName": "text",
        "optionOrder": "text",
        "ram": 1,
        "vcpus": 1
      }
    ],
    "storage": {
      "maxVolumes": 1,
      "minVolumeSize": 1,
      "totalSizeAuthorized": 1,
      "totalVolumesSize": 1,
      "volumes": [
        {
          "description": "text",
          "editable": 1,
          "exclFromSnap": 1,
          "id": "data",
          "mandatory": true,
          "max": 1,
          "min": 1,
          "order": 1,
          "sizeGb": 1,
          "system": true
        }
      ]
    }
  },
  "productCode": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "supportLevel": "NO_MONITORING_NO_SUPPORT",
  "tls": true,
  "topology": "STANDALONE",
  "trigram": "text",
  "name": "text",
  "nodePrefix": "text"
}{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-10-31T05:09:20.855Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}This method allows to delete a postgre SQL instance.
This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.
DELETE /postgresql/123
id, example: 123
OK
Bad Request
DELETE /itcare/databases/postgresql/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-10-31T05:09:20.855Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}id, example: 500061854
OK
Bad Request
GET /itcare/databases/postgresql/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "allowedReplicationLag": 1,
  "area": "text",
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-10-31T05:09:20.855Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-10-31T05:09:20.855Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-10-31T05:09:20.855Z",
  "endOfSupportAt": "2025-10-31T05:09:20.855Z",
  "environment": "text",
  "extendedSupportAt": "2025-10-31T05:09:20.855Z",
  "family": "text",
  "id": 1,
  "instanceCount": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "ipAddress": "text",
  "label": "text",
  "labelArea": "text",
  "labelAvailabilityZone": "text",
  "labelDataCenter": "text",
  "labelRegion": "text",
  "metrologyUrl": "text",
  "monitoringRequested": true,
  "name": "text",
  "network": {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  },
  "networkId": 1,
  "nodeCount": 1,
  "nodeSizing": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-10-31T05:09:20.855Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-10-31T05:09:20.855Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-10-31T05:09:20.855Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "sizing": "text",
  "status": "text",
  "storage": 1,
  "supportLevel": "NO_MONITORING_NO_SUPPORT",
  "supportPhase": "text",
  "technology": "text",
  "tlsEnabled": true,
  "topology": "text",
  "trigram": "text",
  "type": "text",
  "url": "text",
  "version": "text"
}This method allows to update a PostgreSQL instance.
Structure of payload is generic and describes :
- operationyou want to be performed
- optionsdata relative to the operation performed - see details - optional.
Below are different operations currently implemented.
Start PostgreSQL instance
Use the start operation to start a PostgreSQL instance.
Starts PostgreSQL instance.
This method is asynchronous (status code 202).
Example :
PATCH /postgresql/1234
{
    "operation": "start"
}
Stop PostgreSQL instance
Use the stop operation to stop the nodes of the PostgreSQL instance and the instance itself.
This operation cannot be undone afterwards.
This method is asynchronous (status code 202).
PATCH /postgresql/1234
{
	"operation":"stop"
}
Resize PostgreSQL instance
Use the resize operation to resize the nodes of the PostgreSQL instance and the instance itself.
This operation cannot be undone afterwards.
This method is asynchronous (status code 202).
PATCH /postgresql/1234
{
	"operation":"resize",
	"options": {
        "sizing": "2cpu4gb"
    }
}
Restore PostgreSQL instance
Use the restore operation to restore a PostgreSQL instance to another PostgreSQL instance with the same farm version.
- the source instance must be backed up.
- the source instance and destination farm must be ACTIVE
- the timestamp must be between now and now - 14 days for production service and now - 7 days for non production service→ raise exception
- timestamp should respect the format described in Json Schema (date-time) The following is correct : 2022-11-02T09:32:02.000+00:00
The available stop options are  BEFORE and AFTER.
This method is asynchronous (status code 202).
PATCH /postgresql/5678
{
	"operation": "restore",
	"options": {
	    "sourceId": 1234,
	    "stop": "BEFORE",
	    "timestamp": "2022-11-02T09:32:02.000+00:00"
	}
}
Convert from Standalone to HA PostgreSQL instance
Use the enable_ha operation to convert a PostgreSQL instance from Standalone to HA mode.
- the replicationLag must be between 1 and 500.
- The standalone instance must have a version greater or egal to 12.
- changeReference is optional
This method is asynchronous (status code 202).
PATCH /postgresql/5678
{
	"operation": "enable_ha",
	"options": {
	    "replicationLag": 50,
	    "changeReference": "000"
	}
}
Update Patch Party
Use the update_patch_party operation to update the patch party scheduled plan of the cluster.
- Use the excludedoption to turn on/off patch party.
- Use the patchGroupoption to select the patching group, thepatchGroupis optional, and is only allowed when the farm has one member.
- Use the exclusionReasonoption to explain the reason of excluding the resource from patch part.
This method is synchronous (status code 202).
- Include from patch party body:
PATCH /postgresql/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
- Exclude from patch party body:
PATCH /postgresql/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Install PostgreSQL extension
Use the install_extension operation to install an extension in the PostgreSQL.
This method is asynchronous (status code 202).
PATCH /postgresql/1234
{
	"operation":"install_extension",
	"options": {
        "dbname": "mydb",
        "extensions_list": [
        		{"name": "ext1"},
        		{"name": "ext2"}
        ]
    }
}
Upgrade PostgreSQL version
Use the upgrade operation to upgrade the PostgreSQL version.
This method is asynchronous (status code 202).
PATCH /postgresql/1234
{
	"operation":"upgrade",
	"options": {
        "targetVersion": "12",
        "changeReference": "RFC 1234"
    }
}
id, example: 123
OK
Bad Request
PATCH /itcare/databases/postgresql/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61
{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-10-31T05:09:20.855Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}id, example: 500061854
OK
Bad Request
GET /itcare/databases/postgresql/{id}/databases HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "extensions": [
      {
        "name": "text",
        "schema": "text",
        "version": "text"
      }
    ],
    "name": "text"
  }
]id, example: 500061854
OK
Bad Request
GET /itcare/databases/postgresql/{id}/extensions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "comment": "text",
    "link": "text",
    "name": "text",
    "requiresRestarting": true,
    "version": "text"
  }
]OK
Bad Request
GET /itcare/databases/postgresql/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]OK
Bad Request
GET /itcare/databases/postgresql/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-10-31T05:09:20.855Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-10-31T05:09:20.855Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-10-31T05:09:20.855Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "enableProfileBaseNtp": true,
    "enableProfileBaseResolve": true,
    "endOfSalesAt": "2025-10-31T05:09:20.855Z",
    "endOfSupportAt": "2025-10-31T05:09:20.855Z",
    "environment": "text",
    "extendedSupportAt": "2025-10-31T05:09:20.855Z",
    "family": "text",
    "firewallBlockIntraSubnetTraffic": true,
    "firewallEnable": true,
    "firewallPurge": true,
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "manageSentinelOne": true,
    "metrologyUrl": "text",
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "ntpServers": [
      "text"
    ],
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-10-31T05:09:20.855Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-10-31T05:09:20.855Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "relayHost": "text",
    "releasedAt": "2025-10-31T05:09:20.855Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-10-31T05:09:20.855Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-10-31T05:09:20.855Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-10-31T05:09:20.855Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportLevel": "NO_MONITORING_NO_SUPPORT",
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]id, example: 500061854
OK
Bad Request
GET /itcare/databases/postgresql/{id}/versions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  1
]Last updated

