# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Appwrite Postgresql API version: 1.0.0 extends: openapi/appwrite-postgresql-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 37 - target: $.paths['/postgresql'].get update: x-apievangelist-phrasing: intent: List dedicated databases effect: read questions: - Which dedicated PostgreSQL databases do I have running in Appwrite? - Can I page through my dedicated databases with queries? instructions: - text: List all my dedicated databases. - text: List dedicated databases matching {queries}. slots: queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/postgresql'].post update: x-apievangelist-phrasing: intent: Provision a dedicated database effect: write questions: - How do I spin up a new dedicated Postgres database? - Can I turn on replicas and point-in-time recovery when provisioning a database? - Is there a way to restrict a new database to an IP allowlist from the start? instructions: - text: Create a dedicated database {name} with ID {databaseId} on version {version}. slots: name: requestBody.name databaseId: requestBody.databaseId version: requestBody.version - text: Provision database {databaseId} named {name} on the {specification} spec with {replicas} replicas. slots: databaseId: requestBody.databaseId name: requestBody.name specification: requestBody.specification replicas: requestBody.replicas - text: Create database {databaseId} called {name} with PITR on, keeping {pitrRetentionDays} days of history. slots: databaseId: requestBody.databaseId name: requestBody.name pitrRetentionDays: requestBody.pitrRetentionDays method: generated generated: '2026-09-26' - target: $.paths['/postgresql/specifications'].get update: x-apievangelist-phrasing: intent: List database sizes and prices on my plan effect: read questions: - What CPU, memory and storage sizes can I pick for a dedicated database? - How much does each dedicated database specification cost, including overage? instructions: - text: List the dedicated database specifications on my plan. - text: Show prices and resource limits for every database size I can choose. method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}'].get update: x-apievangelist-phrasing: intent: Get a dedicated database's configuration effect: read questions: - Is my new database still provisioning or ready to use? - Where do I see the full configuration of one dedicated database? instructions: - text: Show dedicated database {databaseId}. slots: databaseId: path.databaseId - text: Get the configuration and connection string of database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}'].delete update: x-apievangelist-phrasing: intent: Delete a dedicated database effect: destructive questions: - How do I permanently tear down a dedicated database? - Can I retry deleting a database that got stuck in the deleting state? instructions: - text: Delete dedicated database {databaseId}. slots: databaseId: path.databaseId - text: Permanently destroy database {databaseId} and clean up all its resources. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}'].patch update: x-apievangelist-phrasing: intent: Change a dedicated database's configuration effect: write questions: - Can I resize a database's CPU and memory without downtime? - How do I enable the SQL API or cap how many rows it returns? - Is it possible to switch on storage autoscaling for an existing database? instructions: - text: Resize database {databaseId} to the {specification} specification. slots: databaseId: path.databaseId specification: requestBody.specification - text: Set database {databaseId} to autoscale storage up to {storageAutoscalingMaxGb} GB. slots: databaseId: path.databaseId storageAutoscalingMaxGb: requestBody.storageAutoscalingMaxGb - text: Update the IP allowlist of database {databaseId} to {networkIPAllowlist}. slots: databaseId: path.databaseId networkIPAllowlist: requestBody.networkIPAllowlist method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups'].get update: x-apievangelist-phrasing: intent: List a database's backups effect: read questions: - What backups exist for my dedicated database? - Can I filter a database's backups by status or type? instructions: - text: List the backups of database {databaseId}. slots: databaseId: path.databaseId - text: List backups for database {databaseId} matching {queries}. slots: databaseId: path.databaseId queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups'].post update: x-apievangelist-phrasing: intent: Take a manual database backup effect: write questions: - Can I take an on-demand backup of a database before a risky change? - Does a manual backup finish right away or run in the background? instructions: - text: Back up database {databaseId} now. slots: databaseId: path.databaseId - text: Create a {type} backup of database {databaseId}. slots: type: requestBody.type databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/policies'].get update: x-apievangelist-phrasing: intent: List a database's scheduled backup policies effect: read questions: - What automatic backup schedules are set on my database? - Which backup policies are configured for one dedicated database? instructions: - text: List the backup policies of database {databaseId}. slots: databaseId: path.databaseId - text: List scheduled backup policies on database {databaseId} matching {queries}. slots: databaseId: path.databaseId queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/policies'].post update: x-apievangelist-phrasing: intent: Schedule recurring database backups effect: write questions: - How do I set up nightly backups for a dedicated database? - Can I choose how long scheduled backups are retained? instructions: - text: Create backup policy {policyId} named {name} on database {databaseId} running {schedule} and keeping backups {retention} days. slots: policyId: requestBody.policyId name: requestBody.name databaseId: path.databaseId schedule: requestBody.schedule retention: requestBody.retention - text: Schedule {type} backups for database {databaseId} on {schedule} with retention {retention}, policy {policyId} called {name}. slots: type: requestBody.type databaseId: path.databaseId schedule: requestBody.schedule retention: requestBody.retention policyId: requestBody.policyId name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/policies/{policyId}'].get update: x-apievangelist-phrasing: intent: Get one backup policy effect: read questions: - What schedule and retention does a particular backup policy use? - Is a given backup policy currently enabled? instructions: - text: Show backup policy {policyId} on database {databaseId}. slots: policyId: path.policyId databaseId: path.databaseId - text: Get the schedule of policy {policyId} for database {databaseId}. slots: policyId: path.policyId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/policies/{policyId}'].delete update: x-apievangelist-phrasing: intent: Delete a scheduled backup policy effect: destructive questions: - If I delete a backup policy, what happens to the backups it already took? - How do I stop a database's scheduled backups by removing the policy? instructions: - text: Delete backup policy {policyId} from database {databaseId}. slots: policyId: path.policyId databaseId: path.databaseId - text: Remove the scheduled backup policy {policyId} on database {databaseId}. slots: policyId: path.policyId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/policies/{policyId}'].patch update: x-apievangelist-phrasing: intent: Change a backup policy's schedule or retention effect: write questions: - Can I pause a backup policy without deleting it? - How do I change the schedule of an existing backup policy? instructions: - text: Change backup policy {policyId} on database {databaseId} to run on {schedule}. slots: policyId: path.policyId databaseId: path.databaseId schedule: requestBody.schedule - text: Set enabled to {enabled} for backup policy {policyId} of database {databaseId}. slots: enabled: requestBody.enabled policyId: path.policyId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/storage'].put update: x-apievangelist-phrasing: intent: Send database backups to external storage effect: write questions: - Can I copy my database backups to my own S3, GCS or Azure Blob bucket? - What credentials does off-cluster backup storage need? instructions: - text: Store backups of database {databaseId} in {provider} bucket {bucket} using access key {accessKey} and secret {secretKey}. slots: databaseId: path.databaseId provider: requestBody.provider bucket: requestBody.bucket accessKey: requestBody.accessKey secretKey: requestBody.secretKey - text: Configure off-cluster backups for {databaseId} to {provider} bucket {bucket} in {region} under prefix {prefix}, key {accessKey}, secret {secretKey}. slots: databaseId: path.databaseId provider: requestBody.provider bucket: requestBody.bucket region: requestBody.region prefix: requestBody.prefix accessKey: requestBody.accessKey secretKey: requestBody.secretKey method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/{backupId}'].get update: x-apievangelist-phrasing: intent: Get one database backup effect: read questions: - Has my manual backup finished, and how big is it? - Where can I see the status and timestamps of one backup? instructions: - text: Show backup {backupId} of database {databaseId}. slots: backupId: path.backupId databaseId: path.databaseId - text: Get the size and status of backup {backupId} on database {databaseId}. slots: backupId: path.backupId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/backups/{backupId}'].delete update: x-apievangelist-phrasing: intent: Delete a database backup effect: destructive questions: - Can I permanently remove an old database backup from storage? - Is deleting a backup reversible? instructions: - text: Delete backup {backupId} of database {databaseId}. slots: backupId: path.backupId databaseId: path.databaseId - text: Permanently remove backup {backupId} from database {databaseId}. slots: backupId: path.backupId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/branches'].get update: x-apievangelist-phrasing: intent: List a database's ephemeral branches effect: read questions: - Which temporary branches exist for my database and when do they expire? - Can I see the namespace each database branch lives in? instructions: - text: List the branches of database {databaseId}. slots: databaseId: path.databaseId - text: Show every ephemeral branch and its expiry for database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/branches'].post update: x-apievangelist-phrasing: intent: Branch a database for testing effect: write questions: - Can I make a throwaway copy of my production database to test a schema migration? - How long does a database branch last before it expires? instructions: - text: Create a branch of database {databaseId}. slots: databaseId: path.databaseId - text: Branch database {databaseId} as {branchId} and expire it after {ttl}. slots: databaseId: path.databaseId branchId: requestBody.branchId ttl: requestBody.ttl method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/branches/{branchId}'].delete update: x-apievangelist-phrasing: intent: Delete a database branch effect: destructive questions: - How do I throw away a test branch of my database early? - Does deleting a branch also remove its snapshot and volume? instructions: - text: Delete branch {branchId} of database {databaseId}. slots: branchId: path.branchId databaseId: path.databaseId - text: Tear down the ephemeral branch {branchId} on database {databaseId}. slots: branchId: path.branchId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/credentials'].patch update: x-apievangelist-phrasing: intent: Rotate database connection credentials effect: write questions: - How do I rotate the password on my dedicated database? - After a credential rotation, where do I get the new connection string? instructions: - text: Rotate the connection credentials for database {databaseId}. slots: databaseId: path.databaseId - text: Queue a primary credential rotation on database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/executions'].post update: x-apievangelist-phrasing: intent: Run a SQL statement against a database effect: write questions: - Can I run SQL against my dedicated database from the console API? - Does the SQL endpoint support bound parameters instead of string interpolation? - Which kinds of SQL statements am I allowed to execute? instructions: - text: Run {sql} on database {databaseId}. slots: sql: requestBody.sql databaseId: path.databaseId - text: Execute {sql} against database {databaseId} with bindings {bindings}. slots: sql: requestBody.sql databaseId: path.databaseId bindings: requestBody.bindings method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/extensions'].get update: x-apievangelist-phrasing: intent: List PostgreSQL extensions effect: read questions: - Which Postgres extensions are installed on my database? - What extensions are available that I could still install? instructions: - text: List the extensions on database {databaseId}. slots: databaseId: path.databaseId - text: Show installed and available extensions for database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/extensions'].post update: x-apievangelist-phrasing: intent: Install a PostgreSQL extension effect: write questions: - How do I install a new Postgres extension on my database? - Does installing an extension happen immediately or asynchronously? instructions: - text: Install the {name} extension on database {databaseId}. slots: name: requestBody.name databaseId: path.databaseId - text: Enable extension {name} for database {databaseId}. slots: name: requestBody.name databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/extensions/{extensionName}'].delete update: x-apievangelist-phrasing: intent: Uninstall a PostgreSQL extension effect: destructive questions: - Can I remove an extension I no longer need from Postgres? - How do I check that an extension uninstall has finished? instructions: - text: Uninstall extension {extensionName} from database {databaseId}. slots: extensionName: path.extensionName databaseId: path.databaseId - text: Remove the {extensionName} extension on database {databaseId}. slots: extensionName: path.extensionName databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/failovers'].post update: x-apievangelist-phrasing: intent: Fail over a database to a replica effect: write questions: - How do I manually promote a replica to primary on a high-availability database? - Can I choose which replica gets promoted during a failover? - Can a failover repair a database stuck in the middle of an upgrade? instructions: - text: Trigger a failover on database {databaseId}. slots: databaseId: path.databaseId - text: Fail database {databaseId} over to replica {targetReplicaId}. slots: databaseId: path.databaseId targetReplicaId: requestBody.targetReplicaId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/maintenance'].patch update: x-apievangelist-phrasing: intent: Set a database's maintenance window effect: write questions: - When do minor version upgrades happen, and can I choose the time? - How do I move the maintenance window to a quiet hour? instructions: - text: Set the maintenance window for database {databaseId} to {day} at {hourUtc} UTC. slots: databaseId: path.databaseId day: requestBody.day hourUtc: requestBody.hourUtc - text: Schedule maintenance on database {databaseId} for {day}, hour {hourUtc} UTC. slots: databaseId: path.databaseId day: requestBody.day hourUtc: requestBody.hourUtc method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/migrations'].post update: x-apievangelist-phrasing: intent: Convert a database between shared and dedicated effect: write questions: - Can I move a shared serverless database onto a dedicated instance? - Will converting a dedicated database to shared cause downtime? instructions: - text: Migrate database {databaseId} to {targetType}. slots: databaseId: path.databaseId targetType: requestBody.targetType - text: Convert database {databaseId} to a {targetType} instance on the {specification} spec. slots: databaseId: path.databaseId targetType: requestBody.targetType specification: requestBody.specification method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/operations'].get update: x-apievangelist-phrasing: intent: List a database's lifecycle operations effect: read questions: - What provisioning, update and restore actions have run on my database? - Can I see only the lifecycle operations that failed? instructions: - text: List the lifecycle operations of database {databaseId}. slots: databaseId: path.databaseId - text: List the last {limit} operations on database {databaseId} with status {status}. slots: limit: query.limit databaseId: path.databaseId status: query.status method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/pitr'].get update: x-apievangelist-phrasing: intent: Get point-in-time recovery windows effect: read questions: - How far back can I restore my database to a point in time? - What are the earliest and latest recovery points available? instructions: - text: Show the PITR window for database {databaseId}. slots: databaseId: path.databaseId - text: Get the earliest and latest restore points of database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/pooler'].get update: x-apievangelist-phrasing: intent: Get connection pooler settings effect: read questions: - What pool mode and max connections is my database pooler using? - Where can I see the pool size settings for a database? instructions: - text: Show the pooler configuration of database {databaseId}. slots: databaseId: path.databaseId - text: Get the pool mode and pool size for database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/pooler'].patch update: x-apievangelist-phrasing: intent: Configure the connection pooler effect: write questions: - Can I raise the maximum connections on my database's pooler? - Is it possible to turn on read/write splitting in the pooler? instructions: - text: Set the pooler on database {databaseId} to {mode} mode. slots: databaseId: path.databaseId mode: requestBody.mode - text: Raise max connections on database {databaseId} pooler to {maxConnections} with default pool size {defaultPoolSize}. slots: databaseId: path.databaseId maxConnections: requestBody.maxConnections defaultPoolSize: requestBody.defaultPoolSize method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/replicas'].get update: x-apievangelist-phrasing: intent: Check replica and replication lag status effect: read questions: - How far behind are my database replicas? - Is my high-availability database running in sync or async mode? instructions: - text: Show the replicas of database {databaseId}. slots: databaseId: path.databaseId - text: Get replication lag for each replica of database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/restorations'].get update: x-apievangelist-phrasing: intent: List a database's restorations effect: read questions: - What restores have been run on my database? - Can I list only point-in-time restorations that are still in progress? instructions: - text: List restorations for database {databaseId}. slots: databaseId: path.databaseId - text: List {type} restorations of database {databaseId} with status {status}. slots: type: query.type databaseId: path.databaseId status: query.status method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/restorations'].post update: x-apievangelist-phrasing: intent: Restore a database from backup or a point in time effect: write questions: - How do I restore my database from a specific backup? - Can I roll a database back to an exact timestamp? - Is it possible to restore into a different database instead of overwriting? instructions: - text: Restore database {databaseId} from backup {backupId}. slots: databaseId: path.databaseId backupId: requestBody.backupId - text: Restore database {databaseId} to the point in time {targetTime}. slots: databaseId: path.databaseId targetTime: requestBody.targetTime - text: Restore backup {backupId} of {databaseId} into database {targetDatabaseId}. slots: backupId: requestBody.backupId databaseId: path.databaseId targetDatabaseId: requestBody.targetDatabaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/restorations/{restorationId}'].get update: x-apievangelist-phrasing: intent: Get one database restoration effect: read questions: - Has my database restore completed yet? - Where can I see the type and timestamps of one restoration? instructions: - text: Show restoration {restorationId} of database {databaseId}. slots: restorationId: path.restorationId databaseId: path.databaseId - text: Get the status of restore {restorationId} on database {databaseId}. slots: restorationId: path.restorationId databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/status'].get update: x-apievangelist-phrasing: intent: Check a database's live health effect: read questions: - Is my dedicated database healthy and accepting connections right now? - What is the uptime and volume usage of my database? instructions: - text: Check the health of database {databaseId}. slots: databaseId: path.databaseId - text: Get real-time readiness, uptime and volume info for database {databaseId}. slots: databaseId: path.databaseId method: generated generated: '2026-09-26' - target: $.paths['/postgresql/{databaseId}/upgrades'].post update: x-apievangelist-phrasing: intent: Upgrade a database's engine version effect: write questions: - How do I upgrade my database to a newer Postgres major version? - Does an engine upgrade take the database offline? instructions: - text: Upgrade database {databaseId} to version {targetVersion}. slots: databaseId: path.databaseId targetVersion: requestBody.targetVersion - text: Start a blue-green upgrade of database {databaseId} to {targetVersion}. slots: databaseId: path.databaseId targetVersion: requestBody.targetVersion method: generated generated: '2026-09-26'