Skip to main content

Addons

Manage managed add-on services such as databases (MongoDB, PostgreSQL, MySQL), caches (Redis), and message brokers. Provision, connect, back up, and monitor add-ons programmatically.

All endpoints require a valid API key with the appropriate addons:* scope.

Base URL: https://<your-instance>/api/v1


Addon Object

{
"id": "addon_abc123",
"label": "Production PostgreSQL",
"type": "postgresql",
"status": "running",
"description": "Primary relational database for user data",
"version": "15.4",
"environment": "production",
"tier": "standard",
"cpu": "1",
"memory": "2Gi",
"disk": "20Gi",
"organizationId": "org_xyz789",
"owner": {
"id": "user_001",
"email": "dev@example.com"
},
"config": {
"maxConnections": 200,
"sharedBuffers": "512MB"
},
"createdAt": "2025-01-10T08:00:00Z",
"updatedAt": "2025-01-18T16:30:00Z"
}

GET /api/v1/addons

List all add-ons accessible to the authenticated user.

Scope: addons:read

Query Parameters

ParameterTypeRequiredDefaultDescription
searchstringNoSearch by label or description
typestringNoFilter by type: postgresql, mongodb, mysql, redis, rabbitmq
statusstringNoFilter by status: pending, running, stopped, failed
environmentstringNoFilter by environment: development, staging, production
limitintegerNo20Maximum number of results to return (1-100)
offsetintegerNo0Number of results to skip for pagination
sortstringNocreatedAt:descSort field and direction, e.g. label:asc, type:asc

Response 200 OK

{
"data": [
{
"id": "addon_abc123",
"label": "Production PostgreSQL",
"type": "postgresql",
"status": "running",
"description": "Primary relational database for user data",
"version": "15.4",
"environment": "production",
"tier": "standard",
"cpu": "1",
"memory": "2Gi",
"disk": "20Gi",
"organizationId": "org_xyz789",
"owner": {
"id": "user_001",
"email": "dev@example.com"
},
"config": {},
"createdAt": "2025-01-10T08:00:00Z",
"updatedAt": "2025-01-18T16:30:00Z"
}
],
"pagination": {
"total": 8,
"limit": 20,
"offset": 0,
"hasMore": false
}
}

POST /api/v1/addons

Provision a new managed add-on.

Scope: addons:write

Request Body

FieldTypeRequiredDescription
labelstringYesHuman-readable name for the add-on
typestringYesService type: postgresql, mongodb, mysql, redis, rabbitmq
cpustringYesCPU allocation, e.g. "500m", "1", "2"
memorystringYesMemory allocation, e.g. "1Gi", "4Gi"
diskstringYesPersistent disk size, e.g. "10Gi", "100Gi"
descriptionstringNoDescription of the add-on purpose
versionstringNoSpecific service version (defaults to latest stable)
environmentstringNoTarget environment: development, staging, production
tierstringNoService tier: starter, standard, premium (default: starter)
configobjectNoService-specific configuration overrides
{
"label": "Analytics MongoDB",
"type": "mongodb",
"cpu": "1",
"memory": "2Gi",
"disk": "50Gi",
"description": "MongoDB instance for analytics pipeline",
"version": "7.0",
"environment": "production",
"tier": "standard",
"config": {
"replicaSet": true
}
}

Response 201 Created

{
"id": "addon_def456",
"label": "Analytics MongoDB",
"type": "mongodb",
"status": "pending",
"description": "MongoDB instance for analytics pipeline",
"version": "7.0",
"environment": "production",
"tier": "standard",
"cpu": "1",
"memory": "2Gi",
"disk": "50Gi",
"organizationId": "org_xyz789",
"owner": {
"id": "user_001",
"email": "dev@example.com"
},
"config": {
"replicaSet": true
},
"createdAt": "2025-02-01T09:00:00Z",
"updatedAt": "2025-02-01T09:00:00Z"
}

GET /api/v1/addons/:id

Retrieve a single add-on by its ID.

Scope: addons:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

Returns the full Addon object.


PUT /api/v1/addons/:id

Update an existing add-on. Only provided fields are updated. Some fields (e.g., type) cannot be changed after creation.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Request Body

FieldTypeRequiredDescription
labelstringNoUpdated label
descriptionstringNoUpdated description
cpustringNoUpdated CPU allocation
memorystringNoUpdated memory allocation
diskstringNoUpdated disk size (can only increase)
versionstringNoTarget version for upgrade
tierstringNoUpdated service tier
configobjectNoUpdated service configuration
{
"cpu": "2",
"memory": "4Gi",
"tier": "premium",
"config": {
"maxConnections": 500
}
}

Response 200 OK

Returns the updated Addon object.


DELETE /api/v1/addons/:id

Permanently delete an add-on and all associated data. This action is irreversible.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 204 No Content

No response body.


POST /api/v1/addons/:id/start

Start a stopped add-on.

Scope: addons:deploy

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"message": "Addon starting",
"addonId": "addon_abc123",
"status": "starting"
}

POST /api/v1/addons/:id/stop

Stop a running add-on. Connected applications will lose access.

Scope: addons:deploy

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"message": "Addon stopping",
"addonId": "addon_abc123",
"status": "stopping"
}

POST /api/v1/addons/:id/restart

Restart the add-on service.

Scope: addons:deploy

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"message": "Addon restarting",
"addonId": "addon_abc123",
"status": "restarting"
}

POST /api/v1/addons/:id/recover

Attempt to recover a failed add-on. Performs health checks and restarts the underlying service.

Scope: addons:deploy

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"message": "Recovery initiated",
"addonId": "addon_abc123",
"status": "recovering"
}

GET /api/v1/addons/:id/status

Get the real-time runtime status of an add-on.

Scope: addons:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"state": "running",
"message": "All checks passing",
"uptime": "5d 12h 34m",
"connections": 42,
"health": {
"status": "healthy",
"lastCheck": "2025-01-20T14:22:00Z"
}
}

GET /api/v1/addons/:id/credentials

Retrieve connection credentials for the add-on. Credentials are only available when the add-on is in a running state.

Scope: addons:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"host": "addon-abc123.internal.strongly.ai",
"port": 5432,
"username": "app_user",
"password": "generated-secure-password",
"database": "app_db",
"connectionString": "postgresql://app_user:generated-secure-password@addon-abc123.internal.strongly.ai:5432/app_db"
}

GET /api/v1/addons/:id/metrics

Retrieve current resource utilization metrics for the add-on.

Scope: addons:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"cpu": {
"usage": "350m",
"limit": "1",
"percentage": 35.0
},
"memory": {
"usage": "1.2Gi",
"limit": "2Gi",
"percentage": 60.0
},
"disk": {
"usage": "8.5Gi",
"limit": "20Gi",
"percentage": 42.5
},
"connections": {
"active": 42,
"max": 200
},
"timestamp": "2025-01-20T14:22:00Z"
}

GET /api/v1/addons/:id/logs

Retrieve recent logs from the add-on service.

Scope: addons:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Query Parameters

ParameterTypeRequiredDefaultDescription
linesintegerNo100Number of log lines to return
sincestringNoReturn logs after this ISO 8601 timestamp
containerstringNoTarget a specific container by name

Response 200 OK

2025-01-20T14:22:01Z [INFO] PostgreSQL 15.4 started on port 5432
2025-01-20T14:22:02Z [INFO] Accepting connections
2025-01-20T14:22:10Z [INFO] Checkpoint complete: wrote 128 buffers
2025-01-20T14:23:00Z [INFO] Connection from 10.0.1.45:52340

POST /api/v1/addons/:id/backup

Create an on-demand backup of the add-on data.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Response 200 OK

{
"message": "Backup initiated",
"backupId": "backup_001",
"addonId": "addon_abc123",
"status": "in_progress",
"startedAt": "2025-01-20T15:00:00Z"
}

PUT /api/v1/addons/:id/backup-config

Configure automated backup schedule and retention policy.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Request Body

FieldTypeRequiredDescription
enabledbooleanNoEnable or disable automated backups
schedulestringNoCron expression for backup schedule, e.g. "0 2 * * *" (daily at 2 AM)
retentionintegerNoNumber of backups to retain
{
"enabled": true,
"schedule": "0 2 * * *",
"retention": 14
}

Response 200 OK

{
"addonId": "addon_abc123",
"backupConfig": {
"enabled": true,
"schedule": "0 2 * * *",
"retention": 14,
"lastBackup": "2025-01-20T02:00:00Z",
"nextBackup": "2025-01-21T02:00:00Z"
}
}

POST /api/v1/addons/:id/connect/:appId

Connect an add-on to an application. The add-on credentials are injected into the app's STRONGLY_SERVICES environment variable.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID
appIdstringYesThe application ID to connect to

Response 200 OK

{
"message": "Addon connected to app",
"addonId": "addon_abc123",
"appId": "app_def456",
"connectionStatus": "active"
}

DELETE /api/v1/addons/:id/connect/:appId

Disconnect an add-on from an application. The credentials are removed from the app's environment.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID
appIdstringYesThe application ID to disconnect from

Response 200 OK

{
"message": "Addon disconnected from app",
"addonId": "addon_abc123",
"appId": "app_def456",
"connectionStatus": "disconnected"
}

PUT /api/v1/addons/:id/permissions

Update access permissions for the add-on.

Scope: addons:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe add-on ID

Request Body

FieldTypeRequiredDescription
isPublicbooleanNoIf true, all organization members can access this add-on
allowedUsersarrayNoList of user IDs granted access (ignored if isPublic is true)
{
"isPublic": false,
"allowedUsers": ["user_002", "user_003", "user_004"]
}

Response 200 OK

{
"addonId": "addon_abc123",
"permissions": {
"isPublic": false,
"allowedUsers": ["user_002", "user_003", "user_004"]
}
}

Error Responses

All endpoints may return the following error responses:

StatusDescription
400 Bad RequestInvalid request body or parameters
401 UnauthorizedMissing or invalid API key
403 ForbiddenInsufficient scope for the requested operation
404 Not FoundAdd-on not found or not accessible
409 ConflictAdd-on label already exists or conflicting state transition
422 Unprocessable EntityValidation error on request body
429 Too Many RequestsRate limit exceeded
500 Internal Server ErrorUnexpected server error
{
"error": {
"code": "invalid_state",
"message": "Cannot start addon: current status is 'running'",
"status": 409
}
}