# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Appwrite Apps API version: 1.0.0 extends: openapi/appwrite-apps-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: 22 - target: $.paths['/apps'].get update: x-apievangelist-phrasing: intent: List OAuth2 applications effect: read questions: - Which third-party applications have I registered in Appwrite? - Can I filter my registered applications with queries? instructions: - text: List all my registered applications. - text: List applications matching {queries}. slots: queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/apps'].post update: x-apievangelist-phrasing: intent: Register a new OAuth2 application effect: write questions: - How do I register an application that users can sign in to with OAuth2? - Can I set a privacy policy URL, logo and redirect URIs when registering an app? - Does a new application support the device authorization flow? instructions: - text: Register application {appId} named {name} with redirect URIs {redirectUris}. slots: appId: requestBody.appId name: requestBody.name redirectUris: requestBody.redirectUris - text: Create app {appId} called {name} redirecting to {redirectUris}, owned by team {teamId}. slots: appId: requestBody.appId name: requestBody.name redirectUris: requestBody.redirectUris teamId: requestBody.teamId method: generated generated: '2026-09-26' - target: $.paths['/apps/scopes/installations'].get update: x-apievangelist-phrasing: intent: List scopes an app can request on team install effect: read questions: - What permissions can an application ask for when it is installed on a team? - Which installation scopes are available to choose from for my app? instructions: - text: Show the scopes an application may request when installed on a team. - text: List the available installation scopes. method: generated generated: '2026-09-26' - target: $.paths['/apps/scopes/oauth2'].get update: x-apievangelist-phrasing: intent: List scopes an app can request during OAuth2 effect: read questions: - What scopes can my application request from users during the OAuth2 sign-in flow? - Which OAuth2 permission scopes are supported for applications? instructions: - text: List the OAuth2 scopes an application can request. - text: Show me every scope available in the OAuth2 consent flow. method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}'].get update: x-apievangelist-phrasing: intent: Get an application's details effect: read questions: - What redirect URIs and settings does a particular application have? - Can I look up one registered application by its ID? instructions: - text: Get application {appId}. slots: appId: path.appId - text: Show the configuration of app {appId}. slots: appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}'].put update: x-apievangelist-phrasing: intent: Update an application's settings effect: write questions: - How do I change the redirect URIs of an application I already registered? - Can I set the installation scopes and installation redirect URL on an existing app? instructions: - text: Rename application {appId} to {name}. slots: appId: path.appId name: requestBody.name - text: Update app {appId} named {name} to use redirect URIs {redirectUris}. slots: appId: path.appId name: requestBody.name redirectUris: requestBody.redirectUris - text: Set installation scopes {installationScopes} on app {appId} named {name}. slots: installationScopes: requestBody.installationScopes appId: path.appId name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}'].delete update: x-apievangelist-phrasing: intent: Delete an application effect: destructive questions: - How do I permanently remove a registered application? - Is deleting an OAuth2 application reversible? instructions: - text: Delete application {appId}. slots: appId: path.appId - text: Remove app {appId} entirely. slots: appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/installations'].get update: x-apievangelist-phrasing: intent: List the teams where an app is installed effect: read questions: - Which teams have installed my application? - Can I list an app's installations using an app key instead of a user session? instructions: - text: List installations of application {appId}. slots: appId: path.appId - text: Show installations of app {appId} matching {queries}. slots: appId: path.appId queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/installations/{installationId}'].get update: x-apievangelist-phrasing: intent: Get one installation of an application effect: read questions: - What scopes were granted to a specific installation of my app? - Can I look up a single app installation by its ID? instructions: - text: Get installation {installationId} of application {appId}. slots: installationId: path.installationId appId: path.appId - text: Show the details of app {appId} installation {installationId}. slots: appId: path.appId installationId: path.installationId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/installations/{installationId}'].delete update: x-apievangelist-phrasing: intent: Uninstall an application from a team effect: destructive questions: - How do I remove my app's installation from a team? - Are installation access tokens revoked when an installation is deleted? instructions: - text: Delete installation {installationId} of application {appId}. slots: installationId: path.installationId appId: path.appId - text: Uninstall app {appId} by removing installation {installationId} and its tokens. slots: appId: path.appId installationId: path.installationId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/installations/{installationId}/tokens'].post update: x-apievangelist-phrasing: intent: Issue an access token for an app installation effect: write questions: - How do I get a bearer token that acts with an installation's granted scopes? - Can several installation tokens be active at once, and when do they stop working? instructions: - text: Create an access token for installation {installationId} of app {appId}. slots: installationId: path.installationId appId: path.appId - text: Mint a bearer token for app {appId} acting as installation {installationId}. slots: appId: path.appId installationId: path.installationId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/keys'].get update: x-apievangelist-phrasing: intent: List an application's app keys effect: read questions: - Which app keys exist for my application? - Can I filter an application's keys with queries? instructions: - text: List the app keys for application {appId}. slots: appId: path.appId - text: Show app keys of {appId} matching {queries}. slots: appId: path.appId queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/keys'].post update: x-apievangelist-phrasing: intent: Create an app key for an application effect: write questions: - How do I get a key my app can send in the X-Appwrite-Key header to manage installations? - Do app keys carry any scopes of their own? instructions: - text: Create a new app key for application {appId}. slots: appId: path.appId - text: Generate an app key for {appId} so it can list installations and mint installation tokens. slots: appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/keys/{keyId}'].get update: x-apievangelist-phrasing: intent: Get one app key effect: read questions: - What are the details of a specific app key? - Can I look up an application's key by its ID? instructions: - text: Get app key {keyId} for application {appId}. slots: keyId: path.keyId appId: path.appId - text: Show details of key {keyId} on app {appId}. slots: keyId: path.keyId appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/keys/{keyId}'].delete update: x-apievangelist-phrasing: intent: Delete an app key effect: destructive questions: - How do I revoke an app key that may have leaked? - Can I remove one app key without affecting the application's client secrets? instructions: - text: Delete app key {keyId} from application {appId}. slots: keyId: path.keyId appId: path.appId - text: Revoke key {keyId} on app {appId}. slots: keyId: path.keyId appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/labels'].put update: x-apievangelist-phrasing: intent: Set the labels on an application effect: write questions: - Can I tag an application with labels from my server SDK? - Does setting application labels replace the ones already there? instructions: - text: Set the labels of application {appId} to {labels}. slots: appId: path.appId labels: requestBody.labels - text: Replace app {appId}'s labels with {labels}. slots: appId: path.appId labels: requestBody.labels method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/secrets'].get update: x-apievangelist-phrasing: intent: List an application's client secrets effect: read questions: - Which client secrets have been generated for my OAuth2 app? - Can I filter an application's client secrets with queries? instructions: - text: List the client secrets for application {appId}. slots: appId: path.appId - text: Show client secrets of app {appId} matching {queries}. slots: appId: path.appId queries: query.queries method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/secrets'].post update: x-apievangelist-phrasing: intent: Generate a new client secret for an application effect: write questions: - How do I create a client secret for my application's OAuth2 token exchange? - Can an application have more than one client secret for rotation? instructions: - text: Create a new client secret for application {appId}. slots: appId: path.appId - text: Generate an additional client secret on app {appId} so I can rotate the old one. slots: appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/secrets/{secretId}'].get update: x-apievangelist-phrasing: intent: Get one client secret of an application effect: read questions: - What are the details of a particular client secret on my app? - Can I fetch a single application client secret by its ID? instructions: - text: Get client secret {secretId} of application {appId}. slots: secretId: path.secretId appId: path.appId - text: Show secret {secretId} on app {appId}. slots: secretId: path.secretId appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/secrets/{secretId}'].delete update: x-apievangelist-phrasing: intent: Delete a client secret from an application effect: destructive questions: - How do I retire an old client secret after rotating to a new one? - Will deleting a client secret break integrations still using it? instructions: - text: Delete client secret {secretId} from application {appId}. slots: secretId: path.secretId appId: path.appId - text: Revoke secret {secretId} on app {appId}. slots: secretId: path.secretId appId: path.appId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/team'].patch update: x-apievangelist-phrasing: intent: Transfer an application to another team effect: write questions: - Can I move ownership of an application to a different team? - What do I need to transfer an app between teams? instructions: - text: Transfer application {appId} to team {teamId}. slots: appId: path.appId teamId: requestBody.teamId - text: Move app {appId} so it is owned by team {teamId}. slots: appId: path.appId teamId: requestBody.teamId method: generated generated: '2026-09-26' - target: $.paths['/apps/{appId}/tokens'].delete update: x-apievangelist-phrasing: intent: Revoke all tokens issued for an application effect: destructive questions: - How do I invalidate every access token my application has issued at once? - Is there a way to force all users of an app to re-authorize? instructions: - text: Revoke all tokens for application {appId}. slots: appId: path.appId - text: Invalidate every token app {appId} has issued. slots: appId: path.appId method: generated generated: '2026-09-26'