API Reference
Base URL: http://localhost:24005/api
Provisioning
List all instances
GET /provision
Returns an array of all provisioned database instances.
Provision a new database
POST /provision
{
"projectName": "my-db",
"orgId": "myorg",
"databaseType": "POSTGRESQL",
"tier": "STANDARD",
"backup": { "enabled": true, "schedule": "0 2 * * *", "retention": 30 },
"parameters": { "shared_preload_libraries": "pg_stat_statements" },
"tags": { "env": "production", "team": "backend" },
"postgresVersion": "16",
"databaseName": "myapp",
"masterUsername": "admin"
}
| Field | Required | Description |
|---|---|---|
projectName | Yes | Unique project identifier |
orgId | Yes | Organization ID (used in namespace: {orgId}-{projectName}) |
databaseType | Yes | POSTGRESQL, MYSQL, or MONGODB |
tier | Yes | FREE, STANDARD, or ENTERPRISE |
backup | No | Backup configuration |
parameters | No | PostgreSQL parameters |
tags | No | K8s labels applied to the cluster |
postgresVersion | No | e.g. "16", "17" (defaults to operator default) |
Get instance status
GET /provision/{projectId}
Get credentials
GET /provision/{projectId}/credentials
Returns decrypted connection details including connectionUrl.
Delete instance
DELETE /provision/{projectId}
Removes the K8s namespace, CRDs, and all stored data. Blocked if deletion protection is enabled.
Cost estimation
POST /provision/estimate
{ "tier": "STANDARD" }
Lifecycle Operations
Scale tier
PATCH /provision/{projectId}/scale
{ "tier": "ENTERPRISE" }
Patches the CNPG Cluster CRD with new instance count and resource limits. Triggers rolling addition of replicas.
Resize storage
POST /provision/{projectId}/resize
{ "newSize": "100Gi" }
Upgrade PostgreSQL version
POST /provision/{projectId}/upgrade
{ "version": "17" }
Patches spec.imageName on the Cluster CRD, triggering a rolling restart.
Update parameters
PATCH /provision/{projectId}/parameters
{ "max_connections": "200", "work_mem": "64MB" }
Patches spec.postgresql.parameters and triggers a rolling restart.
Deletion protection
PATCH /provision/{projectId}/deletion-protection
{ "enabled": true }
Get logs
GET /provision/{projectId}/logs?lines=100
Rotate credentials
POST /provision/{projectId}/credentials/rotate
Generates a new password, updates the database, and returns new credentials.
Clone database
POST /provision/{projectId}/clone
{ "newProjectName": "my-db-clone" }
Creates a new cluster using pg_basebackup from the source.
Maintenance window
PUT /provision/{projectId}/maintenance-window
{ "window": "0 3 * * 0", "durationMinutes": 60, "autoMinorVersionUpgrade": true }
GET /provision/{projectId}/maintenance-window
Backup & Restore
Trigger manual backup
POST /provision/{projectId}/backup/trigger
List backups
GET /provision/{projectId}/backup/list
Restore from backup
POST /provision/{projectId}/backup/restore
{
"newProjectId": "my-db-restored"
}
Point-in-time recovery (PITR)
POST /provision/{projectId}/backup/restore
{
"newProjectId": "my-db-pitr",
"targetTime": "2026-03-19T12:00:00Z"
}
Metrics
Current metrics
GET /provision/{projectId}/metrics/current
Returns real-time metrics from CNPG port 9187 + metrics-server CPU/memory.
Metrics history
GET /provision/{projectId}/metrics/history?limit=30
Metrics SSE stream
GET /provision/{projectId}/metrics/stream
Server-Sent Events stream, emits every 5 seconds.
Performance
Summary
GET /provision/{projectId}/performance/summary
Top queries
GET /provision/{projectId}/performance/top-queries?limit=10
Wait events
GET /provision/{projectId}/performance/wait-events
Enable pg_stat_statements
POST /provision/{projectId}/performance/enable
Audit
Enable pgaudit
POST /provision/{projectId}/audit/enable
Get audit logs
GET /provision/{projectId}/audit/logs?lines=100
Get audit config
GET /provision/{projectId}/audit/config
Snapshots
Export snapshot
POST /provision/{projectId}/snapshot/export
{ "format": "custom", "schemaOnly": false }
List snapshots
GET /provision/{projectId}/snapshot
Download snapshot
GET /provision/{projectId}/snapshot/{snapshotId}/download
Delete snapshot
DELETE /provision/{projectId}/snapshot/{snapshotId}
Migrations
Apply migration
POST /provision/{projectId}/migrations
{ "version": "001", "name": "create_users", "sql": "CREATE TABLE users (id serial PRIMARY KEY, name text)" }
List migrations
GET /provision/{projectId}/migrations
Alerts
Active alerts
GET /alerts
Alert history
GET /alerts/history?limit=100
Alerts for project
GET /alerts/project/{projectId}
Setup
Operator status
GET /setup/status
Install operator
POST /setup/install/{databaseType}
Parameter Groups
CRUD
GET /parameter-groups
POST /parameter-groups
GET /parameter-groups/{name}
PUT /parameter-groups/{name}
DELETE /parameter-groups/{name}