Appwrite · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Appwrite Project API
110 actions
110 updates
phrasing
extends
openapi/appwrite-project-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Appwrite's API. It is a proposal applied on top of the contract, not a document Appwrite publishes.
What the actions change
x-apievangelist-phrasing
Targets 110 · first 16 shown; the file carries all of them
$.info
$.paths['/project'].get
$.paths['/project'].delete
$.paths['/project/auth-methods/{methodId}'].patch
$.paths['/project/keys'].get
$.paths['/project/keys'].post
$.paths['/project/keys/ephemeral'].post
$.paths['/project/keys/{keyId}'].get
$.paths['/project/keys/{keyId}'].put
$.paths['/project/keys/{keyId}'].delete
$.paths['/project/labels'].put
$.paths['/project/mock-phones'].get
$.paths['/project/mock-phones'].post
$.paths['/project/mock-phones/{number}'].get
$.paths['/project/mock-phones/{number}'].put
$.paths['/project/mock-phones/{number}'].delete
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Appwrite Project API
version: 1.0.0
extends: openapi/appwrite-project-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: 109
- target: $.paths['/project'].get
update:
x-apievangelist-phrasing:
intent: Get the current project's details
effect: read
questions:
- What are the settings and details of the project my key belongs to?
- Can I read the current project's configuration in one call?
instructions:
- text: Show the details of this project.
- text: Fetch the current project record.
method: generated
generated: '2026-09-26'
- target: $.paths['/project'].delete
update:
x-apievangelist-phrasing:
intent: Delete the whole project
effect: destructive
questions:
- Can I permanently delete my entire Appwrite project?
- What's the way to tear down the current project completely?
instructions:
- text: Delete this entire project.
- text: Permanently remove the current project and everything in it.
method: generated
generated: '2026-09-26'
- target: $.paths['/project/auth-methods/{methodId}'].patch
update:
x-apievangelist-phrasing:
intent: Enable or disable a sign-in method
effect: write
questions:
- Can I turn off email/password or anonymous login for my project?
- Which built-in authentication methods can be switched on or off?
instructions:
- text: Set auth method {methodId} enabled to {enabled}.
slots:
methodId: path.methodId
enabled: requestBody.enabled
- text: Disable the {methodId} sign-in method, enabled {enabled}.
slots:
methodId: path.methodId
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/keys'].get
update:
x-apievangelist-phrasing:
intent: List the project's API keys
effect: read
questions:
- Which API keys exist on my project?
- Can I filter my project's API keys with queries?
instructions:
- text: List all API keys in this project.
- text: List API keys matching {queries}.
slots:
queries: query.queries
method: generated
generated: '2026-09-26'
- target: $.paths['/project/keys'].post
update:
x-apievangelist-phrasing:
intent: Create a long-lived scoped API key
effect: write
questions:
- How do I create a server API key with only the scopes it needs?
- Can a standard API key be set to expire on a specific date, or never?
instructions:
- text: Create API key {keyId} named {name} with scopes {scopes}.
slots:
keyId: requestBody.keyId
name: requestBody.name
scopes: requestBody.scopes
- text: Create a standard key {name} (id {keyId}) with scopes {scopes} that expires at {expire}.
slots:
name: requestBody.name
keyId: requestBody.keyId
scopes: requestBody.scopes
expire: requestBody.expire
method: generated
generated: '2026-09-26'
- target: $.paths['/project/keys/ephemeral'].post
update:
x-apievangelist-phrasing:
intent: Create a short-lived ephemeral API key
effect: write
questions:
- Can I mint a temporary API key that expires within an hour?
- What's the longest an ephemeral key can live?
instructions:
- text: Create an ephemeral key with scopes {scopes} that lasts {duration} seconds.
slots:
scopes: requestBody.scopes
duration: requestBody.duration
- text: Give me a short-lived key for {scopes} valid for {duration} seconds.
slots:
scopes: requestBody.scopes
duration: requestBody.duration
method: generated
generated: '2026-09-26'
- target: $.paths['/project/keys/{keyId}'].get
update:
x-apievangelist-phrasing:
intent: Get one API key
effect: read
questions:
- What scopes and expiry does a specific API key have?
- Can I look up one API key by its ID?
instructions:
- text: Show API key {keyId}.
slots:
keyId: path.keyId
- text: Tell me the scopes and expiration of key {keyId}.
slots:
keyId: path.keyId
method: generated
generated: '2026-09-26'
- target: $.paths['/project/keys/{keyId}'].put
update:
x-apievangelist-phrasing:
intent: Rename or rescope an API key
effect: write
questions:
- Can I change the scopes on an API key I already created?
- Is it possible to extend an existing key's expiration date?
instructions:
- text: Update key {keyId} to name {name} with scopes {scopes}.
slots:
keyId: path.keyId
name: requestBody.name
scopes: requestBody.scopes
- text: Change existing key {keyId} ({name}, scopes {scopes}) to expire at {expire}.
slots:
keyId: path.keyId
name: requestBody.name
scopes: requestBody.scopes
expire: requestBody.expire
method: generated
generated: '2026-09-26'
- target: $.paths['/project/keys/{keyId}'].delete
update:
x-apievangelist-phrasing:
intent: Revoke an API key
effect: destructive
questions:
- How do I revoke a leaked API key?
- Does deleting a key stop it from authenticating right away?
instructions:
- text: Delete API key {keyId}.
slots:
keyId: path.keyId
- text: Revoke key {keyId} so it can no longer be used.
slots:
keyId: path.keyId
method: generated
generated: '2026-09-26'
- target: $.paths['/project/labels'].put
update:
x-apievangelist-phrasing:
intent: Set the project's labels
effect: write
questions:
- Can I tag my project with labels so it's easier to filter in my organization?
- How are project labels replaced?
instructions:
- text: Set this project's labels to {labels}.
slots:
labels: requestBody.labels
- text: Label the project {labels}.
slots:
labels: requestBody.labels
method: generated
generated: '2026-09-26'
- target: $.paths['/project/mock-phones'].get
update:
x-apievangelist-phrasing:
intent: List test phone numbers and OTPs
effect: read
questions:
- Which mock phone numbers have I set up for testers?
- Can I see all mock phones along with their sign-in codes?
instructions:
- text: List all mock phone numbers in this project.
- text: List mock phones matching {queries}.
slots:
queries: query.queries
method: generated
generated: '2026-09-26'
- target: $.paths['/project/mock-phones'].post
update:
x-apievangelist-phrasing:
intent: Add a mock phone number for testing
effect: write
questions:
- How can testers sign in by phone without receiving a real SMS?
- Can I give a test phone number a fixed OTP?
instructions:
- text: Add mock phone {number} with OTP {otp}.
slots:
number: requestBody.number
otp: requestBody.otp
- text: Register test number {number} that always signs in with code {otp}.
slots:
number: requestBody.number
otp: requestBody.otp
method: generated
generated: '2026-09-26'
- target: $.paths['/project/mock-phones/{number}'].get
update:
x-apievangelist-phrasing:
intent: Get a mock phone's OTP
effect: read
questions:
- What OTP is set for one of my test phone numbers?
- Can I look up a single mock phone by its number?
instructions:
- text: Show mock phone {number}.
slots:
number: path.number
- text: Tell me the sign-in code for test number {number}.
slots:
number: path.number
method: generated
generated: '2026-09-26'
- target: $.paths['/project/mock-phones/{number}'].put
update:
x-apievangelist-phrasing:
intent: Change a mock phone's OTP
effect: write
questions:
- Can I change the sign-in code on an existing mock phone number?
- Is it possible to rotate a test phone's OTP?
instructions:
- text: Change the OTP for mock phone {number} to {otp}.
slots:
number: path.number
otp: requestBody.otp
- text: Update existing test number {number} to use code {otp}.
slots:
number: path.number
otp: requestBody.otp
method: generated
generated: '2026-09-26'
- target: $.paths['/project/mock-phones/{number}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a mock phone number
effect: destructive
questions:
- Can I remove a test phone number I no longer need?
- What happens to a mock phone's OTP when it is deleted?
instructions:
- text: Delete mock phone {number}.
slots:
number: path.number
- text: Remove test number {number} from the project.
slots:
number: path.number
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2'].get
update:
x-apievangelist-phrasing:
intent: List OAuth2 providers and their config
effect: read
questions:
- Which social login providers are supported and which have I enabled?
- Why do client secrets come back empty when listing OAuth providers?
instructions:
- text: List every OAuth2 provider and its configuration.
- text: List OAuth2 providers matching {queries}.
slots:
queries: query.queries
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2-server'].put
update:
x-apievangelist-phrasing:
intent: Configure the project as an OAuth2/OIDC server
effect: write
questions:
- Can my project act as its own OpenID Connect provider for other apps?
- How long do issued access and refresh tokens last, and can I change that?
- Is device-code login supported, and can I set the user code format?
instructions:
- text: Enable the OAuth2 server {enabled} with authorization URL {authorizationUrl}.
slots:
enabled: requestBody.enabled
authorizationUrl: requestBody.authorizationUrl
- text: Set OAuth2 server access tokens to last {accessTokenDuration} and refresh tokens {refreshTokenDuration}.
slots:
accessTokenDuration: requestBody.accessTokenDuration
refreshTokenDuration: requestBody.refreshTokenDuration
- text: Set the OAuth2 server's supported scopes to {scopes} and default scopes to {defaultScopes}.
slots:
scopes: requestBody.scopes
defaultScopes: requestBody.defaultScopes
- text: Use device verification URL {verificationUrl} with {userCodeLength}-character user codes.
slots:
verificationUrl: requestBody.verificationUrl
userCodeLength: requestBody.userCodeLength
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/amazon'].patch
update:
x-apievangelist-phrasing:
intent: Configure Amazon sign-in
effect: write
questions:
- Can users log in to my app with their Amazon account?
- Where do I put the Amazon OAuth client ID and secret?
instructions:
- text: Enable Amazon sign-in with client ID {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set Amazon login enabled to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/apple'].patch
update:
x-apievangelist-phrasing:
intent: Configure Sign in with Apple
effect: write
questions:
- How do I add Sign in with Apple using my service ID, team ID and .p8 key?
- Which Apple credentials does the OAuth setup need?
instructions:
- text: Configure Sign in with Apple with service ID {serviceId}, key ID {keyId}, team ID {teamId} and p8 file {p8File}.
slots:
serviceId: requestBody.serviceId
keyId: requestBody.keyId
teamId: requestBody.teamId
p8File: requestBody.p8File
- text: Switch Apple login to enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/appwrite'].patch
update:
x-apievangelist-phrasing:
intent: Configure Appwrite as an OAuth login
effect: write
questions:
- Can people sign in to my project using their Appwrite account?
- What client credentials does the Appwrite OAuth option take?
instructions:
- text: Set up Appwrite account login with client {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Toggle the Appwrite OAuth provider to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/auth0'].patch
update:
x-apievangelist-phrasing:
intent: Configure Auth0 sign-in
effect: write
questions:
- Can I connect my Auth0 tenant as a login option?
- Where does the Auth0 tenant domain go in the OAuth settings?
instructions:
- text: Connect Auth0 at {endpoint} with client ID {clientId} and secret {clientSecret}.
slots:
endpoint: requestBody.endpoint
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set Auth0 login to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/authentik'].patch
update:
x-apievangelist-phrasing:
intent: Configure Authentik sign-in
effect: write
questions:
- Can my self-hosted Authentik server act as a login provider?
- What endpoint and credentials does Authentik OAuth need?
instructions:
- text: Configure Authentik at {endpoint} using client {clientId} and secret {clientSecret}.
slots:
endpoint: requestBody.endpoint
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Turn Authentik sign-in {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/autodesk'].patch
update:
x-apievangelist-phrasing:
intent: Configure Autodesk sign-in
effect: write
questions:
- Is it possible to let users authenticate with Autodesk?
- Which Autodesk app credentials do I paste into the project?
instructions:
- text: Add Autodesk login using client ID {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Mark the Autodesk OAuth provider enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/bitbucket'].patch
update:
x-apievangelist-phrasing:
intent: Configure Bitbucket sign-in
effect: write
questions:
- Can developers sign in to my app with Bitbucket?
- Does Bitbucket OAuth use a key and secret rather than a client ID?
instructions:
- text: Set up Bitbucket login with key {key} and secret {secret}.
slots:
key: requestBody.key
secret: requestBody.secret
- text: Change Bitbucket sign-in to enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/bitly'].patch
update:
x-apievangelist-phrasing:
intent: Configure Bitly sign-in
effect: write
questions:
- Can users connect their Bitly account to log in?
- Where do the Bitly OAuth credentials get saved?
instructions:
- text: Configure Bitly OAuth with client {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set the Bitly provider to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/box'].patch
update:
x-apievangelist-phrasing:
intent: Configure Box sign-in
effect: write
questions:
- Can people sign in with their Box account?
- What do I need from my Box developer app to enable login?
instructions:
- text: Enable Box login with client ID {clientId} and client secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Flip Box sign-in to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/cloudflare'].patch
update:
x-apievangelist-phrasing:
intent: Configure Cloudflare sign-in
effect: write
questions:
- Can my users log in with a Cloudflare account?
- Which Cloudflare OAuth values does the project store?
instructions:
- text: Configure Cloudflare login with client {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set Cloudflare OAuth enabled to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/dailymotion'].patch
update:
x-apievangelist-phrasing:
intent: Configure Dailymotion sign-in
effect: write
questions:
- Can viewers sign in with Dailymotion?
- Does Dailymotion login take an API key and API secret?
instructions:
- text: Set up Dailymotion login with API key {apiKey} and API secret {apiSecret}.
slots:
apiKey: requestBody.apiKey
apiSecret: requestBody.apiSecret
- text: Turn Dailymotion OAuth {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/discord'].patch
update:
x-apievangelist-phrasing:
intent: Configure Discord sign-in
effect: write
questions:
- How do I let gamers log in with Discord?
- Where do I save my Discord application's client secret?
instructions:
- text: Enable Discord login with client ID {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set Discord sign-in enabled to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/disqus'].patch
update:
x-apievangelist-phrasing:
intent: Configure Disqus sign-in
effect: write
questions:
- Can commenters sign in with their Disqus account?
- Which Disqus public and secret keys does the login need?
instructions:
- text: Configure Disqus login with public key {publicKey} and secret key {secretKey}.
slots:
publicKey: requestBody.publicKey
secretKey: requestBody.secretKey
- text: Switch Disqus OAuth to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/dropbox'].patch
update:
x-apievangelist-phrasing:
intent: Configure Dropbox sign-in
effect: write
questions:
- Can users authenticate with Dropbox?
- Does the Dropbox login use an app key and app secret?
instructions:
- text: Set up Dropbox sign-in with app key {appKey} and app secret {appSecret}.
slots:
appKey: requestBody.appKey
appSecret: requestBody.appSecret
- text: Set the Dropbox provider enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/etsy'].patch
update:
x-apievangelist-phrasing:
intent: Configure Etsy sign-in
effect: write
questions:
- Can sellers log in to my app with Etsy?
- What are the keystring and shared secret for Etsy OAuth?
instructions:
- text: Configure Etsy login with keystring {keyString} and shared secret {sharedSecret}.
slots:
keyString: requestBody.keyString
sharedSecret: requestBody.sharedSecret
- text: Turn Etsy sign-in to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/facebook'].patch
update:
x-apievangelist-phrasing:
intent: Configure Facebook sign-in
effect: write
questions:
- How do I add a Log in with Facebook option?
- Which Facebook app ID and secret does the project need?
instructions:
- text: Enable Facebook login with app ID {appId} and app secret {appSecret}.
slots:
appId: requestBody.appId
appSecret: requestBody.appSecret
- text: Set Facebook OAuth enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/figma'].patch
update:
x-apievangelist-phrasing:
intent: Configure Figma sign-in
effect: write
questions:
- Can designers sign in with their Figma account?
- Where do I enter my Figma OAuth app credentials?
instructions:
- text: Set up Figma login with client {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Change the Figma provider to enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/fusionauth'].patch
update:
x-apievangelist-phrasing:
intent: Configure FusionAuth sign-in
effect: write
questions:
- Can I plug my FusionAuth instance in as a login provider?
- What FusionAuth endpoint and client values are required?
instructions:
- text: Connect FusionAuth at {endpoint} with client ID {clientId} and secret {clientSecret}.
slots:
endpoint: requestBody.endpoint
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set FusionAuth login to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/github'].patch
update:
x-apievangelist-phrasing:
intent: Configure GitHub sign-in
effect: write
questions:
- How do I let developers sign in with GitHub?
- Where does my GitHub OAuth app's client secret go?
instructions:
- text: Enable GitHub login with client ID {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set GitHub sign-in enabled to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/gitlab'].patch
update:
x-apievangelist-phrasing:
intent: Configure GitLab sign-in
effect: write
questions:
- Can users log in with GitLab, including a self-managed GitLab instance?
- Which GitLab application ID and secret does the login take?
instructions:
- text: Configure GitLab login at {endpoint} with application ID {applicationId} and secret {secret}.
slots:
endpoint: requestBody.endpoint
applicationId: requestBody.applicationId
secret: requestBody.secret
- text: Turn GitLab sign-in {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/google'].patch
update:
x-apievangelist-phrasing:
intent: Configure Google sign-in
effect: write
questions:
- How do I add Sign in with Google to my project?
- Can I force Google to show the account picker or consent prompt?
instructions:
- text: Enable Google login with client ID {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set the Google sign-in prompt to {prompt}.
slots:
prompt: requestBody.prompt
- text: Set Google OAuth enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/huggingface'].patch
update:
x-apievangelist-phrasing:
intent: Configure Hugging Face sign-in
effect: write
questions:
- Can ML users sign in with their Hugging Face account?
- Where do the Hugging Face OAuth credentials go?
instructions:
- text: Set up Hugging Face login with client {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Switch Hugging Face sign-in to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/kakao'].patch
update:
x-apievangelist-phrasing:
intent: Configure Kakao sign-in
effect: write
questions:
- Can Korean users log in with Kakao?
- Which Kakao client ID and secret does the project store?
instructions:
- text: Configure Kakao login with client ID {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set Kakao OAuth to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/keycloak'].patch
update:
x-apievangelist-phrasing:
intent: Configure Keycloak sign-in
effect: write
questions:
- Can I use a Keycloak realm as my project's login provider?
- Where do the Keycloak endpoint and realm name get configured?
instructions:
- text: Connect Keycloak realm {realmName} at {endpoint} with client {clientId} and secret {clientSecret}.
slots:
realmName: requestBody.realmName
endpoint: requestBody.endpoint
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set Keycloak sign-in enabled to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/kick'].patch
update:
x-apievangelist-phrasing:
intent: Configure Kick sign-in
effect: write
questions:
- Can streamers sign in with a Kick account?
- What Kick OAuth credentials does the project need?
instructions:
- text: Enable Kick login with client {clientId} and secret {clientSecret}.
slots:
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Turn Kick OAuth {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/linkedin'].patch
update:
x-apievangelist-phrasing:
intent: Configure LinkedIn sign-in
effect: write
questions:
- Can professionals log in with LinkedIn?
- Does LinkedIn login use a primary client secret?
instructions:
- text: Set up LinkedIn login with client ID {clientId} and primary client secret {primaryClientSecret}.
slots:
clientId: requestBody.clientId
primaryClientSecret: requestBody.primaryClientSecret
- text: Set LinkedIn sign-in to enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/microsoft'].patch
update:
x-apievangelist-phrasing:
intent: Configure Microsoft sign-in
effect: write
questions:
- How do I let users sign in with a Microsoft or Entra account?
- Can I restrict Microsoft login to a single tenant?
instructions:
- text: Configure Microsoft login with application ID {applicationId} and secret {applicationSecret}.
slots:
applicationId: requestBody.applicationId
applicationSecret: requestBody.applicationSecret
- text: Set the Microsoft sign-in tenant to {tenant}.
slots:
tenant: requestBody.tenant
- text: Set Microsoft OAuth enabled {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/notion'].patch
update:
x-apievangelist-phrasing:
intent: Configure Notion sign-in
effect: write
questions:
- Can users log in with their Notion workspace account?
- Where do I enter the Notion OAuth client ID and secret?
instructions:
- text: Enable Notion login with OAuth client {oauthClientId} and secret {oauthClientSecret}.
slots:
oauthClientId: requestBody.oauthClientId
oauthClientSecret: requestBody.oauthClientSecret
- text: Switch Notion sign-in to {enabled}.
slots:
enabled: requestBody.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/oidc'].patch
update:
x-apievangelist-phrasing:
intent: Configure a generic OpenID Connect login
effect: write
questions:
- Can I connect any OpenID Connect identity provider using its well-known URL?
- What if my OIDC provider has no discovery document, can I set the authorization and token URLs by hand?
instructions:
- text: Configure OIDC login from {wellKnownURL} with client {clientId} and secret {clientSecret}.
slots:
wellKnownURL: requestBody.wellKnownURL
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Set OIDC endpoints to authorize at {authorizationURL}, token at {tokenURL} and user info at {userInfoURL}.
slots:
authorizationURL: requestBody.authorizationURL
tokenURL: requestBody.tokenURL
userInfoURL: requestBody.userInfoURL
- text: Set the OIDC prompt to {prompt} and max age to {maxAge}.
slots:
prompt: requestBody.prompt
maxAge: requestBody.maxAge
method: generated
generated: '2026-09-26'
- target: $.paths['/project/oauth2/okta'].patch
update:
x-apievangelist-phrasing:
intent: Configure Okta sign-in
effect: write
questions:
- Can employees sign in through our Okta org?
- Can I point Okta login at a custom authorization server?
instructions:
- text: Connect Okta domain {domain} with client ID {clientId} and secret {clientSecret}.
slots:
domain: requestBody.domain
clientId: requestBody.clientId
clientSecret: requestBody.clientSecret
- text: Use Okta authorization server {authorizationServerId} for sign-in.
slots:
authorizationServerId: requestBody.authorizationServerId
method: generated
generated: '2026-09-26'
# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appwrite/refs/heads/main/overlays/appwrite-project-api-phrasing-overlay.yaml