Skip to main content

Add-ons

Add-ons are managed services (databases, caches, etc.) you provision and attach to apps. Use this resource for CRUD, lifecycle, backups, scheduling, and connecting/disconnecting apps.

Access it as client.addons on a Strongly client, or the same path on AsyncStrongly with await. All methods exist on both with identical signatures.

Quick start

from strongly import Strongly

client = Strongly()

# List (auto-paginates as you iterate) # filters: search, type, status, environment
for addon in client.addons.list():
print(addon.id)

# Create (type is one of: postgres, mysql, mongodb, redis, rabbitmq,
# neo4j, milvus, greenplum, surrealdb)
created = client.addons.create(
label="my-db",
type="postgres",
version="15",
cpu="500m",
memory="1Gi",
disk="10Gi",
)
print(created.id)

# Read it back
fetched = client.addons.retrieve(created.id)

# Delete (returns None; raises on failure)
client.addons.delete(created.id)

Methods

Core

list

list(*, search: Optional[str] = None, type: Optional[str] = None, status: Optional[str] = None, environment: Optional[str] = None, limit: Optional[int] = None) -> SyncPaginator[Addon]

List addons with pagination and filtering.

Args: search: Search by label, description, or type. type: Filter by addon type (e.g. "postgres", "redis"). status: Filter by status. environment: Filter by environment. limit: Maximum number of items to return (default: all matching items).

create

create(*, label: str, type: str, cpu: str, memory: str, disk: str, description: Optional[str] = None, version: Optional[str] = None, replicas: Optional[int] = None, gpu: Optional[str] = None, gpu_type: Optional[str] = None, deployment_mode: Optional[str] = None, cluster_config: Optional[Mapping[str, Any]] = None, backup_config: Optional[Mapping[str, Any]] = None) -> Addon

Create a new addon.

Args: label: Human-readable addon label. type: Addon type. One of: postgres, mysql, mongodb, redis, rabbitmq, neo4j, milvus, greenplum, surrealdb. cpu: CPU allocation (e.g. "500m"). memory: Memory allocation (e.g. "1Gi"). disk: Disk allocation (e.g. "10Gi"). description: Addon description. version: Addon version (e.g. "15" for postgres). replicas: Number of replicas. gpu: GPU allocation. gpu_type: GPU type. deployment_mode: "single" or "cluster". cluster_config: Cluster topology when deployment_mode="cluster". backup_config: Backup configuration (enabled, schedule, retention, ...).

retrieve

retrieve(addon_id: str) -> Addon

Get a single addon by ID.

update

update(addon_id: str, *, label: Optional[str] = None, description: Optional[str] = None, cpu: Optional[str] = None, memory: Optional[str] = None, disk: Optional[str] = None, replicas: Optional[int] = None, gpu: Optional[str] = None, gpu_type: Optional[str] = None, backup_config: Optional[Mapping[str, Any]] = None) -> Addon

Update an addon (resize, scale, or change backup config).

delete

delete(addon_id: str) -> None

Delete an addon.

Lifecycle & actions

start

start(addon_id: str) -> Dict[str, Any]

Start an addon.

stop

stop(addon_id: str) -> Dict[str, Any]

Stop an addon.

restart

restart(addon_id: str) -> Dict[str, Any]

Restart an addon.

recover

recover(addon_id: str) -> Dict[str, Any]

Recover a failed addon deployment.

Sharing & scope

update_permissions

update_permissions(addon_id: str, *, is_public: bool, allowed_users: Sequence[str]) -> Dict[str, Any]

Update addon sharing/permissions.

Args: is_public: Whether the addon is shared with all users. allowed_users: User ids granted access when not public.

Other

backup

backup(addon_id: str) -> Dict[str, Any]

Create a backup of the addon.

connect_app

connect_app(addon_id: str, app_id: str) -> Dict[str, Any]

Connect an addon to an app.

Args: addon_id: The addon ID. app_id: The app ID to connect to.

credentials

credentials(addon_id: str) -> AddonCredentials

Get decrypted addon credentials.

disconnect_app

disconnect_app(addon_id: str, app_id: str) -> Dict[str, Any]

Disconnect an addon from an app.

Args: addon_id: The addon ID. app_id: The app ID to disconnect from.

logs

logs(addon_id: str, *, lines: Optional[int] = None, since: Optional[str] = None, container: Optional[str] = None) -> Any

Get addon container logs.

Args: addon_id: The addon ID. lines: Number of log lines to return. since: ISO timestamp; return logs after this time. container: Specific container name.

metrics

metrics(addon_id: str) -> Dict[str, Any]

Get addon resource metrics.

schedule

schedule(addon_id: str) -> Dict[str, Any]

Get the addon's start/stop schedule.

status

status(addon_id: str) -> Dict[str, Any]

Check addon status from Kubernetes.

update_backup_config

update_backup_config(addon_id: str, *, enabled: bool, schedule: str, retention: int) -> Dict[str, Any]

Update addon backup configuration.

Args: enabled: Whether scheduled backups are enabled. schedule: Cron expression for the backup schedule. retention: Number of backups to retain.

update_schedule

update_schedule(addon_id: str, *, enabled: bool, timezone: str, start_time: str, stop_time: str, days_of_week: Sequence[int], skip_holidays: Optional[bool] = None, holiday_calendar: Optional[str] = None) -> Dict[str, Any]

Replace the addon's start/stop schedule.

Args: enabled: Enable or disable the schedule. timezone: IANA timezone (e.g. "America/New_York"). start_time: Start time in HH:MM format. stop_time: Stop time in HH:MM format. days_of_week: Days to run, 1 (Monday) through 7 (Sunday). skip_holidays: Skip holidays (default false). holiday_calendar: Holiday calendar: us, uk, or none.