# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Appwrite Manager API version: 1.0.0 extends: openapi/appwrite-manager-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: 19 - target: $.paths['/manager/blocks'].post update: x-apievangelist-phrasing: intent: Block a resource type for a project effect: write questions: - How do I block a project from using a certain resource type? - Can a resource block be set to expire automatically? instructions: - text: Block {resourceType} for project {projectId}. slots: resourceType: requestBody.resourceType projectId: requestBody.projectId - text: Block {resourceType} {resourceId} in project {projectId} until {expiredAt} because {reason}. slots: resourceType: requestBody.resourceType resourceId: requestBody.resourceId projectId: requestBody.projectId expiredAt: requestBody.expiredAt reason: requestBody.reason method: generated generated: '2026-09-26' - target: $.paths['/manager/blocks'].delete update: x-apievangelist-phrasing: intent: Lift resource blocks on a project effect: destructive questions: - Can I remove a block I placed on a project's resources? - What's the way to unblock a single resource rather than a whole resource type? instructions: - text: Remove the {resourceType} blocks on project {projectId}. slots: resourceType: query.resourceType projectId: query.projectId - text: Unblock {resourceType} {resourceId} in project {projectId}. slots: resourceType: query.resourceType resourceId: query.resourceId projectId: query.projectId method: generated generated: '2026-09-26' - target: $.paths['/manager/blocks/{projectId}'].get update: x-apievangelist-phrasing: intent: List resource blocks on a project effect: read questions: - Which resources are currently blocked for a given project? - Is anything blocked on this project right now? instructions: - text: List all resource blocks on project {projectId}. slots: projectId: path.projectId - text: Show what is blocked for project {projectId}. slots: projectId: path.projectId method: generated generated: '2026-09-26' - target: $.paths['/manager/cache'].delete update: x-apievangelist-phrasing: intent: Clear the internal cache effect: destructive questions: - How do I flush the internal cache for one project? - Can I clear the cached copy of a single document instead of everything? instructions: - text: Clear the {cache} cache for project {projectId}. slots: cache: query.cache projectId: query.projectId - text: Clear the cached document {documentId} in collection {collectionId} of project {projectId}. slots: documentId: query.documentId collectionId: query.collectionId projectId: query.projectId - text: Wipe the entire {cache} cache in region {region}. slots: cache: query.cache region: query.region method: generated generated: '2026-09-26' - target: $.paths['/manager/database/{databaseId}'].patch update: x-apievangelist-phrasing: intent: Report a database container's status effect: write questions: - How does Edge tell Cloud that a database container spun down? - Can I update the container status of a database after spindown? instructions: - text: Set the container status of database {databaseId} to {containerStatus}. slots: databaseId: path.databaseId containerStatus: requestBody.containerStatus - text: Mark database {databaseId} in project {projectId} as {containerStatus}. slots: databaseId: path.databaseId projectId: requestBody.projectId containerStatus: requestBody.containerStatus method: generated generated: '2026-09-26' - target: $.paths['/manager/databases/activity'].post update: x-apievangelist-phrasing: intent: Sync database last-active timestamps in bulk effect: write questions: - How are last-active times for many databases synced in one call? - Will an older activity timestamp overwrite a newer last-accessed time? instructions: - text: 'Sync these database activity entries: {databases}.' slots: databases: requestBody.databases - text: Push the last-active timestamps {databases} from the edge cache. slots: databases: requestBody.databases method: generated generated: '2026-09-26' - target: $.paths['/manager/databases/metrics'].post update: x-apievangelist-phrasing: intent: Submit dedicated database metrics in bulk effect: write questions: - How do I report CPU, memory and storage readings for dedicated databases? - Can I send queries-per-second and IOPS samples for several databases at once? instructions: - text: Submit metrics for databases {databaseIds} in projects {projectIds} with CPU {cpuPercents} and memory {memoryPercents}. slots: databaseIds: requestBody.databaseIds projectIds: requestBody.projectIds cpuPercents: requestBody.cpuPercents memoryPercents: requestBody.memoryPercents - text: Record storage used {storageUsedBytes} and active connections {connectionsActive} for databases {databaseIds} in projects {projectIds}. slots: storageUsedBytes: requestBody.storageUsedBytes connectionsActive: requestBody.connectionsActive databaseIds: requestBody.databaseIds projectIds: requestBody.projectIds method: generated generated: '2026-09-26' - target: $.paths['/manager/databases/{databaseId}/event'].post update: x-apievangelist-phrasing: intent: Send a database lifecycle event effect: write questions: - How does Edge notify Cloud that a database failover or provisioning finished? - Can a lifecycle event be used to start or spin down a database? instructions: - text: Send a {event} lifecycle event for database {databaseId}. slots: event: requestBody.event databaseId: path.databaseId - text: Emit event {event} on database {databaseId} with data {data}. slots: event: requestBody.event databaseId: path.databaseId data: requestBody.data method: generated generated: '2026-09-26' - target: $.paths['/manager/domain'].get update: x-apievangelist-phrasing: intent: Look up DNS details for a domain effect: read questions: - What DNS details does the manager hold for a domain? - Can I check the DNS setup of a custom domain? instructions: - text: Get the DNS details for {domain}. slots: domain: query.domain - text: Look up domain {domain} in the manager. slots: domain: query.domain method: generated generated: '2026-09-26' - target: $.paths['/manager/domains/records'].get update: x-apievangelist-phrasing: intent: List the DNS records for a domain effect: read questions: - Which DNS records are configured for my domain? - Can I see the individual A, CNAME and TXT records on a domain? instructions: - text: List the DNS records of {domain}. slots: domain: query.domain - text: Show every DNS record set on {domain}. slots: domain: query.domain method: generated generated: '2026-09-26' - target: $.paths['/manager/domains/{domain}/zone'].get update: x-apievangelist-phrasing: intent: Download a domain's DNS zone file effect: read questions: - How do I export the DNS zone file for a domain? - Can I get the full zone file for one of my domains? instructions: - text: Get the zone file for {domain}. slots: domain: path.domain - text: Export the DNS zone of {domain}. slots: domain: path.domain method: generated generated: '2026-09-26' - target: $.paths['/manager/events'].post update: x-apievangelist-phrasing: intent: Publish a CloudEvents manager event effect: write questions: - How do I send a manager event in CloudEvents format? - Which fields does a CloudEvents manager event require? instructions: - text: Publish a {type} event about {subject} with data {data}. slots: type: requestBody.type subject: requestBody.subject data: requestBody.data - text: Create a CloudEvent of type {type} from {source} for subject {subject} carrying {data}. slots: type: requestBody.type source: requestBody.source subject: requestBody.subject data: requestBody.data method: generated generated: '2026-09-26' - target: $.paths['/manager/projects/{projectId}/databases/{databaseId}'].get update: x-apievangelist-phrasing: intent: Get database routing info for the edge proxy effect: read questions: - What hostname and port does the edge proxy use to reach a database? - Which engine and backend type does a given database run on? instructions: - text: Get routing info for database {databaseId} in project {projectId}. slots: databaseId: path.databaseId projectId: path.projectId - text: Show the host, port and status of database {databaseId} in project {projectId}. slots: databaseId: path.databaseId projectId: path.projectId method: generated generated: '2026-09-26' - target: $.paths['/manager/projects/{projectId}/keys'].post update: x-apievangelist-phrasing: intent: Validate a project API key secret effect: read questions: - How does the edge check whether an API key secret is valid for a project? - Can I find out which scopes a project API key grants? instructions: - text: Validate API key {apiKey} for project {projectId}. slots: apiKey: requestBody.apiKey projectId: path.projectId - text: Return the scopes of key {apiKey} on project {projectId}. slots: apiKey: requestBody.apiKey projectId: path.projectId method: generated generated: '2026-09-26' - target: $.paths['/manager/projects/{projectId}/user'].post update: x-apievangelist-phrasing: intent: Resolve a user JWT to a project user effect: read questions: - How can the edge router tell which user a JWT belongs to? - Does this user token actually belong to the given project? instructions: - text: Resolve JWT {jwt} to a user in project {projectId}. slots: jwt: requestBody.jwt projectId: path.projectId - text: Confirm the user behind token {jwt} is a member of project {projectId}. slots: jwt: requestBody.jwt projectId: path.projectId method: generated generated: '2026-09-26' - target: $.paths['/manager/projects/{projectId}/waf-rules'].get update: x-apievangelist-phrasing: intent: List a project's enabled WAF rules effect: read questions: - Which web application firewall rules are active on a project? - How many WAF rules does this project have enabled? instructions: - text: List the enabled WAF rules for project {projectId}. slots: projectId: path.projectId - text: Count the active firewall rules on project {projectId}. slots: projectId: path.projectId method: generated generated: '2026-09-26' - target: $.paths['/manager/rule'].get update: x-apievangelist-phrasing: intent: Find the deployment rule for a domain effect: read questions: - Which deployment does a given domain route to? - What deployment rule is attached to my custom domain? instructions: - text: Find the deployment rule for {domain}. slots: domain: query.domain - text: Show where {domain} is routed. slots: domain: query.domain method: generated generated: '2026-09-26' - target: $.paths['/manager/users/status'].patch update: x-apievangelist-phrasing: intent: Change a console user's status effect: write questions: - How do I suspend or reactivate a console user by email? - Can I record a reason when changing a console user's status? instructions: - text: Set console user {email} to status {status}. slots: email: requestBody.email status: requestBody.status - text: Change user {userId} status to {status} because {reason}. slots: userId: requestBody.userId status: requestBody.status reason: requestBody.reason method: generated generated: '2026-09-26' - target: $.paths['/manager/verify-s3-signature'].post update: x-apievangelist-phrasing: intent: Verify an S3 SigV4 signature effect: read questions: - How do I check an AWS SigV4 signature against a project's API keys? - What comes back when an S3-style signature doesn't match any key? instructions: - text: Verify SigV4 {signature} for {accessKey}, {region}/{service}, {dateStamp} {amzDate}, hash {canonicalRequestHash}. slots: signature: requestBody.signature accessKey: requestBody.accessKey region: requestBody.region service: requestBody.service dateStamp: requestBody.dateStamp amzDate: requestBody.amzDate canonicalRequestHash: requestBody.canonicalRequestHash - text: Check whether SigV4 signature {signature} from project {accessKey} is valid. slots: signature: requestBody.signature accessKey: requestBody.accessKey method: generated generated: '2026-09-26'