From d3b8d49a3ea189528e9c2dae80a204dc9069979c Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 16 Nov 2022 10:18:49 +0100 Subject: [PATCH 1/6] fix: github images --- public/images/github-logo.png | Bin 0 -> 37397 bytes public/images/github.png | Bin 0 -> 535217 bytes .../images/integrations/digitalocean-logo.svg | 27 ++++++++++++++++ public/images/integrations/gitpod-logo.svg | 9 ++++++ public/images/sponsorship.svg | 29 ++++++++++++++++++ 5 files changed, 65 insertions(+) create mode 100644 public/images/github-logo.png create mode 100644 public/images/github.png create mode 100755 public/images/integrations/digitalocean-logo.svg create mode 100644 public/images/integrations/gitpod-logo.svg create mode 100644 public/images/sponsorship.svg diff --git a/public/images/github-logo.png b/public/images/github-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7927c24e98d7b7df564efd4e44cd537c6eb1a4b1 GIT binary patch literal 37397 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

Y!{(LS-R0TRnlGMw;Kt&`J7wvUIAB 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%0A}$p}J1C_v*GjID6Izhm|6qYw1kE;PPP?bCO@* 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 FSW_lSz3-p6+=Rz50e8zBGFDFwk2y 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


nlH*<^s}fa_ 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

Y!{(LS-R0TRnlGMw;Kt&`J7wvUIAB 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 u!KKq#;%;%x2Cqa=Yujl(#Fabr{@XKbP Date: Wed, 16 Nov 2022 11:01:49 +0100 Subject: [PATCH 3/6] chore: generate specs --- app/config/specs/open-api3-1.1.x-client.json | 1 + app/config/specs/open-api3-1.1.x-console.json | 1 + app/config/specs/open-api3-1.1.x-server.json | 1 + app/config/specs/swagger2-1.1.x-client.json | 1 + app/config/specs/swagger2-1.1.x-console.json | 1 + app/config/specs/swagger2-1.1.x-server.json | 1 + 6 files changed, 6 insertions(+) create mode 100644 app/config/specs/open-api3-1.1.x-client.json create mode 100644 app/config/specs/open-api3-1.1.x-console.json create mode 100644 app/config/specs/open-api3-1.1.x-server.json create mode 100644 app/config/specs/swagger2-1.1.x-client.json create mode 100644 app/config/specs/swagger2-1.1.x-console.json create mode 100644 app/config/specs/swagger2-1.1.x-server.json diff --git a/app/config/specs/open-api3-1.1.x-client.json b/app/config/specs/open-api3-1.1.x-client.json new file mode 100644 index 000000000..70b5a99cd --- /dev/null +++ b/app/config/specs/open-api3-1.1.x-client.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](\/docs\/client\/account#accountCreateVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":19,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create Password Recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](\/docs\/client\/account#accountUpdateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":32,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create Password Recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](\/docs\/client\/account#accountCreateRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":33,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"List Sessions","operationId":"accountListSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create Anonymous Session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":16,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/docs\/client\/account#accountUpdateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":13,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":29,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/verification":{"post":{"summary":"Create Email Verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdateEmailVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create Email Verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get Credit Card Icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get Favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":42,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get Country Flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get Image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},userId:{userId}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get Execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":203,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List Files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update File","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get File for Download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":142,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get File Preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":141,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get File for View","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":143,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List Teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":151,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":152,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":153,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["email","roles","url"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get Team Membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":156,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update Team Membership Status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":157,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"components":{"schemas":{"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","secret","expire"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the Europian Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-1.1.x-console.json b/app/config/specs/open-api3-1.1.x-console.json new file mode 100644 index 000000000..1788e6fc9 --- /dev/null +++ b/app/config/specs/open-api3-1.1.x-console.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](\/docs\/client\/account#accountCreateVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":19,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create Password Recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](\/docs\/client\/account#accountUpdateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":32,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create Password Recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](\/docs\/client\/account#accountCreateRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":33,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"List Sessions","operationId":"accountListSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create Anonymous Session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":16,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/docs\/client\/account#accountUpdateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":13,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":29,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/verification":{"post":{"summary":"Create Email Verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdateEmailVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create Email Verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get Credit Card Icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get Favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":42,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get Country Flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get Image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":187,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update Function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":193,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["name","execute"]}}}}},"delete":{"summary":"Delete Function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":195,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List Deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":197,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["entrypoint","code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get Deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Function Deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":194,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete Deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":199,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},userId:{userId}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get Execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":203,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get Function Usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get Antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":99,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":92,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":91,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get Certificates Queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":96,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/functions":{"get":{"summary":"Get Functions Queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":97,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/logs":{"get":{"summary":"Get Logs Queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":95,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get Webhooks Queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":94,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":98,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get Time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":93,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/projects":{"get":{"summary":"List Projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":102,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId","region"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get Project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":103,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update Project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":105,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":111,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update Project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":110,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":129,"cookies":false,"type":"","demo":"projects\/list-domains.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":128,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":130,"cookies":false,"type":"","demo":"projects\/get-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":132,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":131,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List Keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":119,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create Key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":118,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get Key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":120,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update Key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":121,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update Project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":107,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create Platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":123,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web"},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update Platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":126,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":106,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectsGetUsage","tags":["projects"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":104,"cookies":false,"type":"","demo":"projects\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List Webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":113,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create Webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":112,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update Webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":115,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":134,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update Bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":136,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List Files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update File","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get File for Download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":142,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get File Preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":141,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get File for View","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":143,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":146,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for a storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":147,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List Teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":151,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":152,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":153,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["email","roles","url"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get Team Membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":156,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update Team Membership Status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":157,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/users":{"get":{"summary":"List Users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":168,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":186,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"provider","description":"Provider Name.","required":false,"schema":{"type":"string","x-example":"email","default":""},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get User","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":169,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete User","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update Email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":179,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update Password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":178,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update User Preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":182,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete User Sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":184,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete User Session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":183,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update User Status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"components":{"schemas":{"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","required","format"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","secret","expire"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the Europian Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-1.1.x-server.json b/app/config/specs/open-api3-1.1.x-server.json new file mode 100644 index 000000000..e981a7abf --- /dev/null +++ b/app/config/specs/open-api3-1.1.x-server.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":19,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create Password Recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](\/docs\/client\/account#accountUpdateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":32,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create Password Recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](\/docs\/client\/account#accountCreateRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":33,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"List Sessions","operationId":"accountListSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":29,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/verification":{"post":{"summary":"Create Email Verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdateEmailVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create Email Verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get Credit Card Icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get Favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":42,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get Country Flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get Image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":187,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update Function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":193,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["name","execute"]}}}}},"delete":{"summary":"Delete Function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":195,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List Deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":197,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["entrypoint","code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get Deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Function Deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":194,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete Deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":199,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},userId:{userId}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get Execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":203,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get Antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":99,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":92,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":91,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get Certificates Queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":96,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/functions":{"get":{"summary":"Get Functions Queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":97,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/logs":{"get":{"summary":"Get Logs Queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":95,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get Webhooks Queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":94,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":98,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get Time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":93,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":134,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update Bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":136,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List Files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update File","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get File for Download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":142,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get File Preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":141,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get File for View","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":143,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List Teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":151,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":152,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":153,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["email","roles","url"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get Team Membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":156,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update Team Membership Status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":157,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/users":{"get":{"summary":"List Users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":168,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get User","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":169,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete User","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update Email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":179,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update Password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":178,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update User Preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":182,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete User Sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":184,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete User Session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":183,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update User Status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"components":{"schemas":{"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","required","format"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","secret","expire"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the Europian Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-1.1.x-client.json b/app/config/specs/swagger2-1.1.x-client.json new file mode 100644 index 000000000..6a213bbf4 --- /dev/null +++ b/app/config/specs/swagger2-1.1.x-client.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](\/docs\/client\/account#accountCreateVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create Password Recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](\/docs\/client\/account#accountUpdateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":32,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create Password Recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](\/docs\/client\/account#accountCreateRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":33,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"List Sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create Anonymous Session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":16,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/docs\/client\/account#accountUpdateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":13,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":29,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/verification":{"post":{"summary":"Create Email Verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdateEmailVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create Email Verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get Credit Card Icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get Favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":42,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get Country Flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get Image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},userId:{userId}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get Execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":203,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List Files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update File","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get File for Download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":142,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get File Preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":141,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get File for View","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":143,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List Teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":151,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":152,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":153,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get Team Membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":156,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update Team Membership Status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":157,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","secret","expire"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the Europian Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-1.1.x-console.json b/app/config/specs/swagger2-1.1.x-console.json new file mode 100644 index 000000000..8ed4993f3 --- /dev/null +++ b/app/config/specs/swagger2-1.1.x-console.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](\/docs\/client\/account#accountCreateVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create Password Recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](\/docs\/client\/account#accountUpdateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":32,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create Password Recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](\/docs\/client\/account#accountCreateRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":33,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"List Sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create Anonymous Session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":16,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/docs\/client\/account#accountUpdateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":13,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":29,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/verification":{"post":{"summary":"Create Email Verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdateEmailVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create Email Verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get Credit Card Icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get Favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":42,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get Country Flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get Image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":187,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update Function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":193,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["name","execute"]}}]},"delete":{"summary":"Delete Function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":195,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List Deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":197,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":true,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get Deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update Function Deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":194,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete Deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":199,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},userId:{userId}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get Execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":203,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get Function Usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get Antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":99,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":92,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":91,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get Certificates Queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":96,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/functions":{"get":{"summary":"Get Functions Queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":97,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/logs":{"get":{"summary":"Get Logs Queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":95,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get Webhooks Queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":94,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":98,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get Time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":93,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/projects":{"get":{"summary":"List Projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":102,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":null,"x-example":"default"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId","region"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get Project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":103,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update Project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":105,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete Project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":111,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update Project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":110,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":129,"cookies":false,"type":"","demo":"projects\/list-domains.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":128,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":130,"cookies":false,"type":"","demo":"projects\/get-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":132,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":131,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List Keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":119,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":118,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get Key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":120,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update Key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":121,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update Project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":107,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":123,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web"},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update Platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":126,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":106,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":104,"cookies":false,"type":"","demo":"projects\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List Webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":113,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":112,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update Webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":115,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":134,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update Bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":136,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List Files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update File","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get File for Download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":142,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get File Preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":141,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get File for View","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":143,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":146,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for a storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":147,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List Teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":151,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":152,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":153,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get Team Membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":156,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update Team Membership Status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":157,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/users":{"get":{"summary":"List Users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":168,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":186,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"provider","description":"Provider Name.","required":false,"type":"string","x-example":"email","default":"","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get User","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":169,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete User","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update Email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":179,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update Password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":178,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update User Preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":182,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete User Sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":184,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete User Session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":183,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update User Status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","required","format"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","secret","expire"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the Europian Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-1.1.x-server.json b/app/config/specs/swagger2-1.1.x-server.json new file mode 100644 index 000000000..4bf56f9d3 --- /dev/null +++ b/app/config/specs/swagger2-1.1.x-server.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create Password Recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](\/docs\/client\/account#accountUpdateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":32,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create Password Recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](\/docs\/client\/account#accountCreateRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":33,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"List Sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":29,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/verification":{"post":{"summary":"Create Email Verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdateEmailVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create Email Verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get Credit Card Icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get Favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":42,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get Country Flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get Image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":187,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update Function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":193,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["name","execute"]}}]},"delete":{"summary":"Delete Function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":195,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List Deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":197,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":true,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get Deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update Function Deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":194,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete Deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":199,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},userId:{userId}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get Execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":203,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get Antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":99,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":92,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":91,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get Certificates Queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":96,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/functions":{"get":{"summary":"Get Functions Queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":97,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/logs":{"get":{"summary":"Get Logs Queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":95,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get Webhooks Queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":94,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":98,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get Time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":93,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":134,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update Bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":136,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List Files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update File","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get File for Download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":142,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get File Preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":141,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get File for View","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":143,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List Teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":151,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":152,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":153,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get Team Membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":156,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update Team Membership Status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":157,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/users":{"get":{"summary":"List Users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":168,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get User","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":169,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete User","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update Email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":179,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update Password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":178,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update User Preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":182,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete User Sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":184,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete User Session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":183,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update User Status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","required","format"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","secret","expire"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the Europian Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file From 8411e81e28866d862d98063fbfa514acb7cb41e8 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 16 Nov 2022 15:43:07 +0530 Subject: [PATCH 4/6] Update CHANGES.md --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 519107cc3..91cbddf13 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,11 +1,13 @@ # Version 1.1.0 ## Features +- Added support for the new Appwrite Console [#4655](https://github.com/appwrite/appwrite/pull/4655) - Added new property to projects configuration: `authDuration` which allows you to alter the duration of signed in sessions for your project. [#4618](https://github.com/appwrite/appwrite/pull/4618) ## Bugs - Fix license detection for Flutter and Dart SDKs [#4435](https://github.com/appwrite/appwrite/pull/4435) - Fix missing `status`, `buildStderr` and `buildStderr` from get deployment response [#4611](https://github.com/appwrite/appwrite/pull/4611) - Fix project pagination in DB usage aggregation [#4517](https://github.com/appwrite/appwrite/pull/4517) +- Fix missing file permissions due to cache [#4661](https://github.com/appwrite/appwrite/pull/4661) # Features - Added Auth Duration API to allow users to set the duration of their sessions. [#4618](https://github.com/appwrite/appwrite/pull/4618) From 5ca7b5ffe83216a256f71b096cf517d0106b30d3 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 16 Nov 2022 15:47:40 +0530 Subject: [PATCH 5/6] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 91cbddf13..67d203ef3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,7 @@ - Fix missing `status`, `buildStderr` and `buildStderr` from get deployment response [#4611](https://github.com/appwrite/appwrite/pull/4611) - Fix project pagination in DB usage aggregation [#4517](https://github.com/appwrite/appwrite/pull/4517) - Fix missing file permissions due to cache [#4661](https://github.com/appwrite/appwrite/pull/4661) +- Fix usage stats for async function executions [#4674](https://github.com/appwrite/appwrite/pull/4674) # Features - Added Auth Duration API to allow users to set the duration of their sessions. [#4618](https://github.com/appwrite/appwrite/pull/4618) From fbebf7deac920041f15d60cd9afac7ed20b5ddcb Mon Sep 17 00:00:00 2001 From: Aditya Oberai Date: Wed, 16 Nov 2022 10:31:30 +0000 Subject: [PATCH 6/6] Update announcement blog in Readme --- README-CN.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README-CN.md b/README-CN.md index f347abe3f..3dc0f6ff1 100644 --- a/README-CN.md +++ b/README-CN.md @@ -21,7 +21,7 @@ [English](README.md) | 简体中文 -[**我们发布了 Appwrite 1.0 版本!**](https://appwrite.io/1.0) +[**我们发布了 Appwrite Console 2.0 版本,点击这里了解更多!**](https://medium.com/appwrite-io/announcing-console-2-0-2e0e96891cb0?source=friends_link&sk=7a82b4069778e3adc165dc026e960fe1) Appwrite是一个基于Docker的端到端开发者平台,其容器化的微服务库可应用于网页端,移动端,以及后端。Appwrite 通过视觉化界面极简了从零编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。 diff --git a/README.md b/README.md index 578f3af22..28b1ae6d7 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ English | [简体中文](README-CN.md) -[**Appwrite 1.0 has been released! Learn what's new!**](https://appwrite.io/1.0) +[**Appwrite Console 2.0 has been released! Learn what's new!**](https://medium.com/appwrite-io/announcing-console-2-0-2e0e96891cb0?source=friends_link&sk=7a82b4069778e3adc165dc026e960fe1) Appwrite is an end-to-end backend server for Web, Mobile, Native, or Backend apps packaged as a set of Docker microservices. Appwrite abstracts the complexity and repetitiveness required to build a modern backend API from scratch and allows you to build secure apps faster.

3fI&_hf{o1d)V%SkLErkcPe-`?^ZwSq|m{7Yo=h{HHQRdCW1u z-aRZcsICN-Jv|$c5r>}Fxyq7r!xSqZ^Vgy{W^Lr%p0#>>PpBwg6N@%MS(ZQWUYLAb zQzL9E@8Yso<$gveIuSK{Fo>rdPK=(w!C7rmTdLs>w1~GxmH_S2!47pN4U6|;VwHW^ zA^{_u2IGiJ3W=?6rYiFk?%jTW0%mOoanvVI6P?mXSgeU9h8!7Hpna zgFd5CWV61n>tt3yHgv9afZs0SjT(*a8lpAmy7IH|yUl&j3><5J&LjQY3k12WCKaH0 zm=V;IfD-jMC2P^1`GkS8cIz#eq=?#5yAUICQJTWU{la=j%8&N>c{wE6UO*VemOjzPiv`*@(I?^c+%OeD4aF=s?*6?fGt0J39F zue+f?M>k~3*O&UCLJHf347`!^NqgU+*#0~2=lLH|JJRzb#7>ezMm{Dr^4?(BH z;7w2TM(gi~kl{}AG1ydHAYs3a+RIirM3>`ASR2faR6bkI$ z4Go5tyIx6w%g7nT(TPqNh$5dGUGX+scZ-I^kt*$Bcfy9C8S7(kLi1z-7MOboD#E`! zd$QE7Bah~29bqu`M3gK@cRX2(-~T~7O%BByhq0gz)8RUs6{jZj%vn(#fDu}XCvo|P9NDlS zg&S*gB<#tsKlhxREx)adQHy&&s!pWS-fl98Kg^(B9I`7iu;k{HcszVI=utCBR z3ea`=@&-|n)KkXHSw$pV3zJFdD48hzO)t6wu2E!@M8i&+1MNk#P+v zK%r@rWbG-PFBPu0^WLYNN`lWocQr$$5;u{QOKFfgpY$wx(PvNN`LNLcaJk}?pU%dx z6viH*y*;<i&i zpsTge;nA4>2UK=kK^dOuHpOV;g8F#^xF;C)mf;CUekWJhZXI+{02xn^hT;EjMaTT= z2*LdNj(*q6?I?ZD4ScrF14)Nq(4zQ6MHlX8FaQ+may_*Bk4f9UuNgl{(w{T$6drLqyf!8X0N0?np~;$4HdLZ0&1 zl68n-LD{d^OvHe^D~Bio@cK;biB;2`A=*y(O65r74UGb&z89hiMpp6aa7jTp85Q&x zC*kxvq`-pcfN5U4wG;1%_wk=bmBB1y%JN&!p5w!$FL`0WwClc^{?hV1Xq4aw^z%{= zTnv|9#K68^K6|^JkQ|Tk@=>9QhXkqcrSv|5;xH3=;b8uu`RM++5w&XywT`qWzev;F zRP_BKrO!x)TB9KN1zfV9hba`nD)o8dbrtdExpwQ_cZQQoXN zQK^Z{QmBSf-6+Uhq$&_g>dTVUFc6I^E_nx$r`C; z7*CQ8`H)aaJwMGA1Dl9m!#Ev;Oh+A%gvPUwWGRTmGv#@!P=<;Mku)Ut#b%exC=;S3pD}It5lK^QaCmL3LPTtssYM&}d;W(DIkx5l6?A_C^#X2n)>M3EQJ6bX8JD##&Z& z%(f9PIM3{!Q_a)y&aXB|;5+q3-$Aq@7$(K%a^W#qT=ww7;cBRfY% z5~*oQ2$HRxE}Fhn>r(3(Y`;Jps?eXjNvlUK6jW=}Oj$(0iRG8rM-a=73hC1hQ8!)v zHdILW&u~|@?xC&1X4l3&lNZrSN=08SqSl!JR`AW4ZlYj}QlupB#EtUAToHU=HDS|M zDdXy18|gDRoe25JltE-$0d2wY^)`W{womGTK5lLQ&`txNR5^@|@EVbJgD#p59tZI=zdr^79+gT>X($Feo zjXljV5#`@#XWIpyZ5^x!9_;mlW0$`jsf`L^$}u|6G`*{*O#l33lOV>bNIKEKpO$p6}^2~TWCb|-~RmOb^ujC;otD1RYTG;eQn zOKL)KJ&opGE~h>iPdn3^8K@?LXE8G#b3mH^Xb{OXqu(4+FEx3I)&We#vVI5xzE7-x zQ>~8IY?dryn>Ix**a2c9wASL>9b^E#U@&$NRF!s^iVei1su}Wda_z6S!FNa5czKqMYogI<3n;%2%!KYWjZ|~6ggtOwuc4G6IM1i<;(Sw+jUT|7=x`sN++{z3 zQ%#5M_QEL6wc4~UN~x@DKX+>6u*FCBm}WLF&f}vQ|FO+@VwtWA-hC(Ok@DUUTe$_W~?* zL4dRvJd4|Yux^MrI1~}5prC;G?~7d;vAs)GU7gs`uZjv)<=T07SJwt=vi}k#J#}?; z$rWml?hHqxjXWQ>IV2YeGBb5K`h?|J9=?TO6S&<4))qD2UA-2)JJ{M1G&`(B>kpv0 z#tn*e-TCppEMqwL$(9ueld)mycmVM`#w)V}p*w(}Eh@nOQG~`nbq8QyWBo%G0?94v zk3t08cGKSW_V!JFvHSvxf2B_iGSJzUO7%u-=*w2V6kMjfUv>ReS23F~noD)JtZKhW zn8J~`z06VzI0#yyEZF6L1<5yo`CMdv<9$CztTo=i9~az}Vbr-N{8#P`+$i6-Cvz$+ zoFmU&iy@R3(iUi3O=Vhs~+p}#(w%!Bi%f#?oPbM~xf-ldPf z8{_E+Un*y2%9K{^bp-Sh&`r)pwK=d`%k$av(BALLu@VI#;vR+&L@b?uq$3pacn{jb zDnECH!kq+z-?e!C2d9=lEw6;Y7zKWE?9>>X5?c7U%vu$z5+6i_ppqtz^cwvh+>ZEc z>WV$f?&>{jJg+t;S{w`+Fmk~p6^+P;8s$@(taE)ldpxaCf7D#4Xm{_}x*xalIozQ5 z+etvLweiz+QtL>AcLMrsB?Ri96!9^R%~DxighgcJd%4kNvuXU-!}Fn}{gO2j^h;k>b+R;M z2@jl}{iB`?A2^HlNruEj+glJ5-lO*^e%k3Y?1PMP|N2@3hIC|gG_G!MHCP*;bi@m?Fwc3n8h?`op8T8np>cfWDW zqY!Kj6)~CwxgRxIxy0cKESZW4^ddn{n+j%a8MITZ1lw4nnSG;q-ksryy1)-XeQeku zh7&BAmF+sj6AqT_nTlo6NS8r%9W2x5kc2wW!Ed-FA}srWw}{E}oZL(q_W<%Ie_tXj z8XAf){Il!aB!vSk;;>+CDdrSDTeW7!uqB?8uo;sROoCuU{sS3=MuLVuys>|r3Etn^@bepj_J3r=UfbXn_MW#9xW6rmRP@3$ zs@!eT1fg>_F)_H!YL!~sSg-z5Jd`%kjvZJapBaoflFGZDItuD%3w80GF$Rg2dJe!AM-x&V37%bZ@pa@8o$5%ZN2@$a9y?LpnjuiYGkyX3^_vo zjlZX0gVFphoqfwk@XW;R!)>P|ZLh5?uOEghEYD|G)lTpV!fxX&+Fu$wp$g1wL#XSe zGarONU!EU7I3zX0E0v$KcydAqm?rkIr9V3P(g^5beN_d!czD46NaQOVs2Pbt3!(If z>q~g{zV@*A7+xc>2)OURg5f}V8tjS#etjzRtp!HOJ@w&cBu;$gAhp)b&#JqcygTYQP76y7@ ze_&!Si4ga`xgqB(h8<)x8RpRoSN6>!V!JIl+wE*0aOR^kfTH)$P7g$}?$!@Y!KgLw z6IZ4aaF0dI?TsFQFLhjnPm9rN8}I|CedqfmK!XWs1$ zY^WeO{CZ=}aSpZ-9|$SvCPsQ)UFwqRApH-}-OMa3L~m8T#+nrQ6nvW@`GB9?^umULfps2ZqS^XUsrR!nhoD|l zh9p8K(5#GTf*Q&xP41GA{hei)VB;JVGC%r0VhR zmW1q6dn7(zX@D)mpCLO^PcpS)aS@b!;4_SZj)k4^ zm30V9tN9+BV)Nxu_=UB-z2h%+bi>rLQEz=)MDjK?*1wwhBVwv%iDswG+S764o6n{j zZHw84$uoP-O1af#jLJoFVR!A>SR8Hg8Z?m>dcmcz2qpVy`TS3XA5Pg>x+l<&YNjuV zpjZ+#5dnK4&0(G1EKqEWRTZhx4>w_N2YA1!Z+gOJKElc8TrKEPc_@eblM;uR+=icg zpYG2CdbI5vk$>1Hsg|%crYpqU<`o6dCKLxdh#39Ne?wqU4=|{8wf~_ayd;w&|Cx1^ zCiRD8mo(BqcxEX|0hhaF;E?Y(Lmb)`y3;TW-z-7>4*f#U{{+Y>KT$Dh}^=gsp*vDeQ=pC z1EZsVGIPj`^;iULE!XDBQ}Y-+Ew;^fLvzln-*cE8z!gRLPU7Glr+@Db`M0mD#q?UU z`@!}uyNvAKLcBhM9d>e>whgTdk@LmbfjqLA<7Mv(6>;bT&wUk?757~8UInqyXWDet zllEwb%O)=khWq+18;eyUhKXtM5lG;W$A%Hj7Y7DH3YwY12s zYUhojV?XTYfnk&Rl;itDfZ7f6Hjqo%2h_JMlR3#OryHs)R`tBz$(#FnBKW%YNJqt)Ww z>7F-^v7H-~vfvBqze)#E;!a`UYC60Sr6qZBF<=)-6z6xg9}G2g%|+}yB6J%wfR&37 z6=nWi2a2VcsJePc;n8fjI1OZlZy@_tYip>Q@RiX@Y)EPUAmnMqVxMs3Tu_bkr4H5p z?eya8PeCv&s*llj|MThoQo!XR>`0$^PwjrrN_H<#9AdwqX#c&t_r8I-xxVYfnM$i3 zidm_JiqoPMe(s=#Z)?VBCgiz+y{M6zZ+swXv2g{s*@m+DPWRF4> zbV3jXiw*@#WI^>VNhA9@d>56$NRH6I;u2IcG8Pb*!`&lv^G#zbE!`K=H&u@Q^16fmr|NlwhZDM;tYzd) z95ShTmRoZjO3?8$d?qm_9HL^-So1K+v`~S6!XJ9iLGA=3;B*^424}}=Cej$|ee1NW zG3TkRJ?L;%u-WzV?}v13x(Qnd^j6I1Y&riOW`OZ9*-F}*xzk8R=3NphZ)Qj=4=(C( ziVfh3c>HwtFx?*(Gvg5rB{JZAs8e%vtoa}!Adu&gZ1r^hSj~HEThK1Iyq_Ze+TJ`~ zO5(HhQq$Np{NKR|1`_qibtB&gJOHD31@ArXF_! z_)W(b`^3uoGY2DyF((2HSL9?gAkVe9^ek~<4D~=in`(g{%U3lu(Xk;Cq$Gk+HM~2@ zcp?-vfCSF@U*M^1@yLj*^7Ia~INbIRc(MEOKtoEn&DTHwIRl|gy8yhh6=t}PwG1D= zxuVc-7=Dt>xw}H`f)=d)->$^IT;pfCJNt^g-MaSks3djp52qIY)(mQvv?7cjz=lD4 zWNpQsq;F*PP&-^>bIG$|#6PHy=tN4NVX(osDz=Z_vcK{GbKuBXL1G9jL{71Kij02s z=?S$BQQ2!><5i|W|FB9^AJGGc<`ee zW`AWJ*ZOe-sc0U%oiuqtZah1zcBWDG4`}h3!>m!E$)+yC1>XIvKAK%?+t7VGArVTd zry>U3gfYV}B$VQ%gjykql!vkLk~fUry_+!gOEedZkY3{XEeof4xl(ibhSV_vFBIf$ z>4tqB*K$3{xF-ksM}Rd@0snd3&dhw2m*G)2gHV$up012`@XdF4n9TJg9D!e0;z%f| z!^vUbVCq1}QN!0%@=Gm(yJz;Brw(GA6Gqv>8GOK3X*-H;CTPh1zFO~k2Qg?SH=8mx zc>_>H=B6Gg(Qor5x8CFrB^H+1wt?eiJ`x)-4ocEYWQ<;tK+(B;M>S#6u0`XLUbv@z z>qBW+BFdwRI*F2A)Wd?Z_&V5?=HJ;TcaPG#$l=cYb5ZI8{mw|%iRh77@oqx1`y(#- z(uRm>N^nMX^4mDY-~LV41^;E#4a+p855w-t3!JK}+a!rH?=muC9Z#^2dhHSacw{apE4?2E?L3NXhCHgpe*ubO7d)c$&pO%15z#`9edL5&9m6{bF=VE*3=Tq+7NUqj`4<7E=a5pDbD zQpLfk9ad})8Cpz+{?PPLD#XNLImqMS&t$NxCtWPESY(q^%nQ`o5l34B1y*C4PHCc) zrE_(nHP;0r_k4$uYx%#VA6?kdmbBg{Ij)v~%ZgidrAhrn3xSA;rmHRB1~qd- zsLfao7A2pP8w9Gy6v(@Aqn=ge7K-lMhIJi(*KEm4ymqD|OWy=ja%2&|A6+9fI>Z{{ zzzt5@p9CQQ(?zH!7>IllGWKw%jI5GG=FejW7FDqLn`?t^W86(*@>_#_N^XH~g88ui zL!2w%Bc*%tHn&!zrD?6nVh|@Bf6gRt1e&*t(_^3)8)Yz(g_?&cMHA%Lf`kN#$EMo9 z+`}Tk4%n@%Kn%^*k!odjgP$sVXSUyIiX=F{KD~mBsf?i%WS#Yrc98QrU~e0p&m7yY z$twZE;8iOgl3{;KdNuSkuBwoNVqL**AHQBqL)c{tmm0l6298?De-Mu|hV;fZ8Vd7TJBPmSxsgWzM;sh%D`7UXpwM1JDdAqUZ;OXh|}GpTCM)WF%Wy&dywGG{;iXmphC zRQtL$WRE)9lcp(2gN9xlQU-4n=_eOsogKcluq=Aqfe9~Pgx!a_j$ejF@;g0o5Fqdw zmbRw}wjxj52}tFst~PeRL)YkXg;3>S`Tjk*SiX5yE;?)0Rf$)=@aR|KgC1FjsevkX z8T^X8=d=vV9#yX&%jaNnm~dYrF947Gy($bWy-_gm{#I^w((vj}+w_F|AQ+s1znI+v zBTDw@Quz3b-eD+O!q&>IRSdnsR|s(R1B!xq8O0MYG$=`DFa#3J5stXXxo2lldU(4~ zN=hRYuv&IfCU5J?F}pS$BQ(J~Y{6bpes!3B#cF$^aUnxWbDzyLMa+lQMUG=q$0M&0 zu_kjl*rrBr85Y9N^vu(qL~sJ8Cu)1ssC;%Q)F!J+)NT>Cv1!C~oW%`ui$H3WFZni= zDDpCTZffOHMJk#t;-Oq(*>Kmin8Rfv&%!%?TJqhfNi=RU|0&*0j|eAK=7YX){Ewq^ zZm8_xqHwnDnrzq2HYRhjIoY;tH#OO|ZQC{3cD?uaeu4hE=bZN5YprKZ0=91u>5g=Z zwCQv%|2vV{iVm*GD=3&@#Qm;z{t(g%F!9K`6frefmg(K9(er|$92s#q+5M4YCaKW^ zHiTsSGHU4T>}qg3tE}U4iTE)uhIqYv*oiIV#&wP7K_SVRgE^JnwD6RmcnxrIgW@(+82!@yY)stxChQT4Q#!i1#b3pb1WC@O<6@pbZM5I`i^6iz(^9-XSH6< z!6e(tueN*Oa<4Xn$65Vq(f=6I5ir^PT=V|+_OJt7_<`M};_KcPVgY;uD_a;o&jEBZ z{a!O#rq_PY1um_wW_X7^@3L4meDaUa!C=GZnN7Ue?%+ARj6$Gt7GURwac6pdU7j<6^Nen%m&bUGo03%=~%5uHqw zL=;8+DTW}mr!;EQ2xruUM#=QyeQ*Dai4-3p^;(sZ7BR9QHDDT?T`b|6sNbLxi5OaY zYZ4jmv3Bo#*<~_h{_|@dv~MI7wB@8_Flr)SO#r3JfU>A5y#6qWQ3E*{{l+y@DzzA( z4rUOuA}izem2PaW`-{@WK(1LUIBEXGZMc2rNohgQFVS)C#M{kpAWU!7tH45g&#SSzpVIgd=q@?6o37^^wuH1)6va0e=#=lcF|x;-h3 zJAapD>VkOQ`R=WB@Vz?rh5Noi{wDB|L|9b#805VH(ssK~-hn74RW@nW3>S(tj5d~! znVGr5tFQFr{xW8y(f^9oH93Dh15y|n;AY*%uNdP5eu*ezD$R7gGRmSUdAqP zr=M|d)gp+d-c{Yi#^_%2C{Two82Dso=6T~cs26i}E2+G<=S54cRlX?t8QW3PmebH~ z7?COSUbG)5tVAXGToiAJ5$QxRJJ|J~b?7;30&Ny7sWkEXZcIGj{7d!EUsKkpyEB07 zplYvch)37}c)`zw>tSG7J2cQjUc8dLy{!kye$hXkLU#k~t}%K%Q}e8*5;B@A5N|!o zthjBe*@~>F=|&4fBJ2ki7x8Sm?SQv_yf{K32M&7p#2STS4=qsGk=UOdbjIF4-mLFJlV6Psvjc|`tjzxNj81Ay;AOA}ET=OK`Bv`{WT zGrK1xS!cN*?*4Xa?);0G+fghIvS8;WMt_Luqn~LHh>fcPqiQ+my8hJq4~V1GBUt#h z3;S^s_ROdgFSpdd!X4{Mnz&<*!#oPgSPfQ7blLCrW19qL+Qi+^48!CW&aktG`y^`*2zkw3mE{z|hRgwb9U>3~o@kvv6v_C0-yYnrWY) zR~o0me<-OhCYT}roGU@Xh2?Vax-JZAQbzX?^7P)3Bj`?RSBA8f$DSk!aRTZOzg*m7 z3oP+4V*3`cv5+GAUJA0I<{q-9hCsqs9>)NCs@K=FQ!_Z>#|Nt+C__a!Mse3vU$5{% zaWnvk=Up9p04IOe434J?*IQq9)+hZt6_?~|Qj9&CS*X;?XB`m^N>2}4uUh6>>YCAG zl;is5@{CmaRCVeMBlolW7R_pl@Z<`A@MRTMPJXhhlu5r^j%EBi6nL%(;?QQPC)eF^V+m-3!>Rpi3YFT2batq}c<_^rZAQ zD8`!;;6B%D`Qd1F_Kg*k;KZh9|ChFf7|5es7f9ekTZIiF6Nui-%3X(4X{6`FbzLNLH^c9#c6Dg5R6#^0^r?`%@8=B~U z=Feew-%wmqeq#IGcERXzAkrq0X-gBaBSfT z2`mivcAKrJe)quQ;Sc)8H68Y58T2&$toN&tWu_>BYpdz}O`CPQuS8iOc(2*{6s<~u zB#L#OD*kIfrN*24ch6@>>s7mTa`&FMHxNOie(8=5BSTOj$ruoVL;>(dy z)$brmn$Qs6>2f?YqQ9ODGmTR)@NL+a*fRF|K*j%DYfMhxdWdC9tbwAH?QeOCNWQBq6#)IsRr-MIE|iqp zNb3U+uQ?keDfRgAlzPk14?RK-w!3Za)Q<%!DyKui#wU59b&-=zAwQWo%r{n%`CiWmx;h6Nz}XA1_t&XM#?BUH>(Bp5EAHMh&NCiAQkGVTmw?}G>VD#pwHkFN@q zm#1T{N0TLlbnUQjrZFFN-G;p}!^>QQ*b`He6B{T#dt|cs9`o*0yCo-Nd;sf*Njs1E z1tW%{pl`pPdys)uSgMoHJ61w5m7_>ReEu3;XP7T*c|LK?7oI!sU+dGnHJ(coO+_pE zUx$8kyz9OfBfg8>yuhG3rg69a^*AYAz5eHt{^F#HhDKWZ7X{>a)rjBMj9)>vuZL zV}i~rmzrgSud%=O(7K}*w{7&@6O0imWmr4&B7e)lI?c`2EA)d$X&t&ah@?P2jM$|A zJF5zqECtwx#=be_yrq1bAJ4 zb$dP`To+){?${&;BP@j zucd_AdwZ(jhgIV~H05c0b}aA=37OgT^H-u04p`duL-EQU@Rk|;^Pu~kXmJ-xOY6Un zkUrwN&o20PX#iC{GrTT6QANd2s8tD{wknNzt}Rhk|8q*La4a_y8#wsqYR@;w*SX&( z-IhS!>m>HWksg>M3>WzXZ+&B7-FMfukN&CBnfA4iOV9muhcfox608(+%llJ;m5IEq zPUt48Y)sroK)@de-vr-q9q;bPD!XM*N<3?9{Z8o~D&5EJt`3eDmn|2K^O!~bFGt5_ z+|&3`-Glw1s7BwgVFJ+j6&7GnJadBF!5(Rw+?KVa&2ae@ry27oI^1_&(D;{Ae*FX8vzlq{BAxEgCH_u%lE z&4GqkwXvn6fOYpy&}5rD_rZytL9c~ zeYh}-rNuEF*8+P#F-YJLrZ87-L3l96#k9XFlm|zu-riOIMXh~VI@@?B;Xb`Clbs4O zZt6;#?CyyZjjiBU?siJ>DesZlj{&h(Wad|rDU>vgPp3FWKyZ#4LLqfnJXVKzuOM2 z*D=Ah^iYG|r`^7Ad=E8z36c39V0<4Wcm4`h8BP(P24yp6LO&u^mX%2l-BhmREoyY% zspT9id@gpVdbX6isr=^^`;$=uq!Wr9i+99_{L;4Cy6g#qC1tNY(E28R=Jm}_` zv74AFS*`vzo_r=6yy}kXELf3hkIB^wKApaoC+hohh>wR0ta@7e&Cpoa*Dr-H33YK3 zP+Wa(WsQ%4!WbnRYPW;TGZG?|mEjfm4ZR~7T2yaIVZt?liejpi8I{}TpZO%aNZQQn z7sV>=5FIC|SQ{?rUn3l{&YDPRKZ65nrigsqncc|x}5Y)`lWh#EQ$xYg}vG7Kw; zbRCh}vcPfw2ZNy9R=aKoI(bwbur8O@BX`=%%ECSdBnp!*l`iAs7al!nOJ?I~@;{rz z4*idP{3adW5kfcG+Ka<=aD)JH>*dNJ;11S9i`%Gj4rhT#%6$2G{VmC0tfIqHamHZh z5yZHF>}${T!UA4=F><#R(JdgC-9hvATY2dkvjVFyyST^L8_(|ZE(hoP{Tr0!G&Ywc z3P3A3Hn%A8k0*XTY5lPCep+p%;s&@TXtx|+ZF!|^AJke!bv#OJT>CyF*~Yk)CseMm zxNb$A3`}=!aI?g?<+KrWO%5Gj?|c&o{C!{`MBcK_%ken!+^Ug`MWEZ7JZ{qX;g}|s zRi5X4X9+p$D;v-N*dM23THqlCGxWO&dcScJd|m*uu8DVh1A^8s_qEJ(%7&*V*xe;S z7-QJ#6$`EJWW@acot%{N&-@lnz`MV6-V71wFH)5#v{c^+mXRodjLjh56rw432K3?_ zV7(!f3r_&F=Ps_#%ge;eh{0N`uFsvqT`V4sq{nn;%_-k<5eE z4$s>swg%{&1*Nk3IVrJQqF&rc&TeDrOYgD&XuO;E|4o1Z25wo&I(D>IlJ@sB*FhsB zBPSxkk@7Y;?Bq589f^G%H^JdDr8q&e6h<8@Cv$3m4!Zy8aGXs8S}@qSeTv%%+lO7x_Ohi5f0IoFFj1vkWOgg@%XG6oR%8Q`{)fS20I{OX+bsX_0~3|-3!Cr zDS4TS1Jd2)3E_l|EH;!DE}6%XdS~W-=lgSK54f}o(#)RneVq4v1%dtXCFr@u|3=Mw z87#qccgcmy06ueuw%iiDt6#gwzR-S8=HKF=I@g1e0(UH36X7`2MnZNSm##V6c3(%= zRujy3fY180E{vXgUcdbNx19eBbRR&vq$H7t7+Zn<+q^l@jd7R9F)LpEL+_yg+lulW zcq8iD`P_PU7Wn?``PM*;?0RYv3={-HZ8YT8M{bF~59};JuDai^7QWUZq{$jSflyql z+GwQk&oIB2o|k*UZ?envTi{49jCw>$JWNE273A~+BP;Jeljj;9Xqo;AfAM|jwZpd7uZ1fyDp^jiu7s&2ISqM^pz zGv{<&D=E0cF(E5^_s|2FFV+34Cg+DiiF%D?xC^Yt&8k0NPPMcN$Q!11$D>H}Fu0No zmd)e`r?u`E;$Ep+>B-u0#l7cI41GZz2+y&91)7yM|?59Zgj)VUZtB?ITj9h-bdFpM*4@!lbmU)eUSn8Rr27qC8P=)XC6*lYX#o_6cJ)@ljP z`!=e@z=(8hN_^SsdE2X}Y6Q4h=OepOv>+x=0}D`YR*mD%33&mVH(-$MK9VDU2&HzE zqnQqU4pY*sHDDVL!YemQ^&kclKyHAZRNW4nzfN-&fcd5sy$~Sa9C`*25-4_(xApx9 zpbHj(oDyn0?^JmtYonvK*h9H2y|_3V9(4Drg3g^V=hqv93#6%BZ0PW>?jsJc*5cM6DRx#>OI!*v^O;c`F1k8r|-q-M6Ao0 zG<~oXmf|Cej%}6K_joHX`pNBzhoch=TLhmj1Bl#s?GcEXH-uCz-@%!^@T*vJA-Tx3 zzZ~-nkP?{XQaqZdy;@J9+pJ80j?Zu#5t*Wxm^-QS{!3yUjl=Jf{yMV31KZI)W? zKgms{EvN9u+rG!#Lqk!-Sz>2!Q1h3^?Wxj^X3q3InPvvu685Qj8|6%*}Fvo1N8&N-YGs-hAse6-@b3#o)Z6QKJUrX z3F`lvI;EWmO7xV>s$U(#<$k!%?3J#Ap(=v4d*`+m?!F0glLEP}xkmOZtvBgHCL2}K zht1ky&fY^z!rKZv7|GZVB6&k# zm9seFpTg=gjY7=CieuqRGPdWCaX}p~6ClW~L{ILdq{ToFk-dC=c^qlONh&@*mn*$o zfidk2m4UnCBP+voeujs1Wnu6x%J#N_tD`j>!c?{Q#UyWd5&vuQbh35;`e|3JgP&}o zR`4}RuosBlFRW@=&kzCqfx(=3d>RUp!N0p2%ywVss$0?@8;wwyA0ql!G2hp+hMTeD zC#CTkb7RE&{&u(c5LCqfoe<&f9iQ*bkoSfne~cO$D#8LRSwQ5NA^&<@(Y5YlnKAaH z%c(00XAf3-;wGSGK-L>Qv@2ulss9R8P`EmRgTmj|ID?3gW+GWI9(C7zd{10QiDfsp zx84GEWPK4o(vx6i=!XBv9+sSJ!y~{so=efQ*7nz;)wqa4Hf`@_FUXTHoF?`Xz4}FT zmFgqvACIsfn_1al-azQ{3ewn}z4e67wvrJEt^yh5#(%CkkrWw3W8=$0uRnH8Ep{O2 za9oGp(Nt7gUv-b)m6Mb!f( zS1V#ir`)7h8H(<0`1k2}3pJ>xBb{&U$v*^KYR-vuG08_Be>C_52E$5r-%b+!y)Kxwc$ktFEYsyQ)+0m$qsb_ga?duBlTJXLVW9 zE;>Jwh{>d@o$f-OjWT9jb6Bg?z#WBoT&>IH*Gp9g>z+edGQ0lLL zS54$Y`o-tW5i~T)-UXRC50(NfBA6sGAf!vTtdEH^P!z-BYQT@L6ht$dJEVc2YX$*d z-wlw_do40Xl&vJTJ(ksL$(J+0xcU1^4qlYrcq<-X{;N^fJgswx&9X6Z_qY{yg#|=~ zHY?Q;zHtn^{fYwS@+pGY-4<_-GIsN=A;3bIlb1`UyFNzlcU%aB;7}cjY=KKvIHh9~ zbx^`OzheLB7iH*j3JW*s+!_^gdrd@uDHyus2WN?0iAQq&rgykdy(`ox!W0EUa6bex z@jZXu1sJ`t+0o#$p|GUFCFO^MuueS(Pn&}8sZFlL!HX^B>BYtT6){4B_;c^B5l|`z zI#wVGxS1QNpD;n>ph$D8Pd8U__Un~PO>R6+D`&lvZ4RX=$R^g+Q5|k~!tK`N^Kg}} z8p#z*%>8uYesuavW(cetLx4*`tVonm@FU{hu<2Ug%%E?OMo_M>rrZ{#r6Q-VePnzM z5npE;7RxvFrWHT$=j2qND#HqV6ayfC`9R{cR|=KPw>XhTRE~}=`H1``8mHxhZ~M}e zwj-C_;Nkpwk&w9`SpoBF$b7(iCZ^@PE@P$D&WmBG&>wT^zZ*cl~hgHT(w8z7^JAKR1 z`6JKn!Uo6Rm35pi z#S$7FRDG&THLL%f;kFE!=O|5FB5-_8p3f4!NJ-GDy zlPgEk^{ZG`v1%D8D#sB1YBA8JDVX7V*NKjcrDeXd+58^pIF<{Fisx z-HZHLg);m!9+Ws0Y`G)a;id=o57*5eZ}%#^Z{D|DC+e5qoiy+7v;-w`sdIH%n zlVm;y7zC*D%q@eIZFdWecY| z!%}dipo$rfJH;W)pKnnM-NN8!j%$iDkS{jDQ%QE{rx%W_0RwiGR(aScnRd?iX_Gf1 z0y}-OO#SQrEPC{l^vQ<${p_e?0DACP);M(<4s|OTVhxs_>Y~KO2r4NY6+Sn86DVmic={SAhR6oIR0Tjmv`*g|R2WY1(bh`@Hy!!_3hloK0QL-ZZ^!&^!Vj%#sKfdLNVePDBD{$8jvCXTHIT4&s0CVu}J4U zh96HY?JFWGJ2o$zM2|LHc%+C{h7LUWx*7jX6zehGRPog(aq1t}!X(Lb0$TsH_O*)+G1)T_zV38%b9N^gk=p)#7R?ve^Kl! z;Ge?KQ$|Hs4E|`~8qt;$w{Dw$gN!JT^TsY}2<4(&nz-fz<|cr9-8%>dZcnUpxBZY} z5Z&Rs zmsi{Xe-eXxr;Pru00=4fs$ z)YM@A0rx5K@AyY2P7D(HlS+cC4j95)?l5Xjn)=nWvy$kA` z)To7o<2ngCLt3;A;ZuefvrZr2^vivP*4yRGf9oVmZ584T>D1C_l?mCHgRG3;Iwc-k zcxR?GaFfjkhp7^25C8EqVN;8C&NULNlYyogHvK&O#SWMyz`SeDH@UYb0%ih3cJGY1 zSjcC*pFfUtdG3ro#ZGHDBChP3eW!TIVCZK^BnBNPTWsi{l!Qx=ET`sO;py$ zIfkGIFN9ih`X}EQ=2Oz9L`MlG4k$5+SJV2An1a}F=!bAFUaY%Opf>iL zZ1@B<`d9DQN>jKBLYNb%8}8Jqlv7{Jr0xm2;}b2&Gayr|@Bto2d-8R`&`>`h-7@>8 zEz?4c!IGSVMU7*kK%u77+1j$<10tdh((1+_IN{^hIO9{bQbA{j z-=o0wt9=#%t`CoPX|IM8^zYwRYv`-29Vg((b;t%kiP5RoAZPJ z2V5KBnfiey6Z=m@z;0@dH?H7YbBlGnO^}S6qZJ%F`oVwb=%=f#DAzysKOv^ybm`M3V_#A>#A>Uwf& z)%d#o7sz}1WtYJg^Fx)HJE7Hga~)?y$_EENV|4hh=+sscDfg<+@xza3_NXatNX*9g zva%V2Nm_If3ga>pPPn&@ciq*>esmiZBb|s{h-^hyuWpw_5#|h9g8yG+EjC;l?>c(S77_(?I5VkJlwC^5Z}zCTiPV$IQkpA+bvrSmn*f1#e( zOTe~MtzkF2)UsK0gBLJrnK_G>QcWf-^QbhQCkgsy+^U8yAHhpYc)(ifQd2}p3Y-!% zIJr)Z|B)+6k6o}m2F|z(NS%X9DPW$wyg)hnF(h>V9ETq`97@OE7K*URt>+l!zc*F< z!fzPfeUoaTA>U~-0*%LXE=Rr9y=4F0R51jCFUU$69o@}JeQL-uGHLp=hOcDNe?`9P;mPQ&4Dis+5N z#6XIiW>6VU{nh)tKW9X?QZI4RFZ$CLhU-nnjRgCsIPguK8K)z88Mk8f1rm`?+g|?y ztze=qXDfRcPy>_gHrIx&>}``i=I7iI4%@yID{+{qa%(@Idw z-tHggs88N3U&6Sxa~nRXV6I3o_t262>5AZ%((7oQ#L+_;q7@rJ>zFr92X8(JX?-*P{H8o9rOLpf}JP3QFjF$C2MUH|4MZeEPz z3OXt}7$iZUyDCGhWmqM>1_xgAMXjy`Ra!lC!&PB?#LSK@SbfK0`rjRKKqBPF)%y&cgMlczT^G z;L0yjtlSo8=>t_5O-*BXh)LM|kMlaBREH3|cYqCVKT=IUA>JI+o-}+Sa!#kJxPM7h z>Upp$0;cuUiEwxr^(R}97HewX^%!Zu+7h*d)|HkHEY%3vw)*sd{4ADU`)HM*o5IPu z{#!yucYfs}UCo7NWX(^i)L)5XBmUR~o3Mo?`Oja7|1RZdf7%)6)zU66wK$(YfOZxc zL-u?ApiWsvPKW4((CR$CPSR2w+-isC{5xsa(L51Bl9&-8>G}pZJq1V1ctXV|yuD#FelO!J@%^I)OM8{-xwfO^OYe9X#C z>o^)rBI2ciWBa}o*O~F`PJ&tPlt2OuuxhfI4^2JZnxut)oQh8*|1c^1mgKzDEUdSeMWCFTZ8H2`v$fLV|zL%(4BYoxKFPI z>Aro+#W^Mt0Wq7UtY8osX?<6xQi*HTckl!J3#-nHI~^VB2W-G~r7^e$e2j@LJ2!CY z&)6MSg0k6g-9ypGh?&IgT`UC-t(t?sEv-YAla_UaDkREj`f9B$)&B9q`@Pg1ejqdC zR9v~UZ&6~AsIERW{N3wLa8w)HLm!(YOH}oR89c7^N~WRMfy0(*`cGh#j8V+Ed(KRf z7KLd8rWS2VV0JS<6}oS$p;#^ypn^j$Y<~n!G+;PG2X6x&Q)&TfR4tinN9; z1lb}YnFeDR@&}4JYyyy6>$Pq#oclV}AHq0xXBKT49|{BQi$cVG_;97tTTV^@-uph- zC?9diV1t_kGW?4atk^#f`FL6a9SK7Azyvy}i4n1gkyR*uUEe z&Zjr?0RnSvEfveT0d;ezHtiQO1bnp${Jg^WAC+8({%AG*D7(utoG4>`a+H9X7<{6y z<9f7Q;4LB^%tbhmH7i`JMXa0JYg4L~F{(>`o#Z8MRD`FJNV;kMzM0=tRE!b38n<WedZLX^;DnNAr zS|;00vs=*IpN~||HKPk-PI)J3KR&y`ZmMf(=}uHB=IfTsi#M!{g{le{?rlcQFj|W1 zJ;pi|jBz!hle;zP3pQTOsq<0@1XrQAK&9tr2ra-*3ne35LXwIAmfGoe#lXV{e z8;3WQ=_>sZaDFkeaZNA{v%;Zr*!_!1wv^nvW=E@x%=Ac^ew$vVU+$&k=ek*|K-m2A zhf>~{<|r@Zh-Z>`9Bewph&DN5(UjCq3SA=DchYc<4^oo)N5k(KP8#aG@sx5X%=1T) zwvjUJ^X!!j6P5x8IV^)Q!wLBzo0-NXk#0qr&9#v{FZJ%|{Xj9aQXrr|j2KsI^_aQ| zKS5UbtiUz%fX{Cy!9h+{KFCy-moKpvFhpE8Z4`u%?AcP!vf1aLivH=r*J** zSy)|{Qud_>E&AhWJec(erj)E7WR9;G$y&fCuYpNpGOIvi9os00^Q zZY|Z~n~J!dz98lBFgr}M^@wYiC6K{3)%peru$r~8GExq(FyF7f_Q7YPI-x(TtPY%T zljBZIY&cGMvc)M>2?#Nz5R9I{ZT|Daa%OFMoAcCs+!(?}FyF_OboGe9m61B^hMyZ& zP^49<33Dk7!A|T&59$nK@9-FafDBzp?Xq8$LwC~`L3qWj0>-5qLcC^)Zvx^t^aw&) zPKFYn0T*IRe!G3;@{$&Dxtf)`X9>bWq~S>evZj>WZB6D7xgL(uZ_;+%aW3m?YG#1x zOyB6d1_yj$us`Va0WW za^QIQ!#UYw;t*SwRxg1&CWcm9s1VEu^Zc)lFYW9fpVN>F*f3#&?&%=jaq#LZ#5eB# z3puYVH~l8L>20$Cbe7yE%*3V+nFq3xNxzeoY*;P}>HH{c(FM6P82oK1H+~A_o9^@l z2)DDfg$Xd(LZT(h;6=E|P>hhu(6BDuYxX<)QwaSA+r}B5qw7LE*y#{YL=baBBp-Y_)m5ThWE!$d+7Qjs5?y)H{ z^R9_!Fu6V8+q+9Fv!3xpvS%P%vI{XSpGP8m?_B6u7I=CpQinZ%3pN^V;k_Isnu<+7 zb##yeZe}uuy;GJp>H4q3*V_gGl7YUwc+#mO3BP{KQ=f5#-JnO<jx}n{QL+Hdb7k)_vC0`u@Jt=Yg#keZA#cvCSp!y*F=4SLeBf`|_41uz@DD3}7w= zv^41)rw-tNCc@wSG`m!B+JZMlp3b2+l-L4bya2SMFN!?z(3;BHW9vJ>TbtM;yBvA2 z??wJ)jCx?hdv%sJHN&Q`YW0qW_c#|Hohf5ujiKS4_5IcwSw0HB4h58+=sa3BeMckg zFpR&P9-#3n%E;(Qc zkUR~s#dDRj=EyibCWt~GT^9ZQYvNj;E;Sk>t?&%lh-vR$Al1Qkem?MT{ZYcry5~>* z*}z%zlojb;?ksDVfD48h1G_*o}Kxw((rI>r|2-jbjxfEt0VxsWndDquGE(ZCKvrjf*=D+5L^mjOP@%-laSTIpg!GPC>vfd|-h7yUGjxm99$9n?8*0je@ru+XaxR zz}ctmO@xe^km*zUg|C9M8H=pgjl*VY*ZwBUCBbXteLOE-T#lp=rB!^p4r4iCrAwP0 z*EvW(BBu)8kDHA8G!gK+spH96=)snMDG^a-`%X_^g~mb?V^){+;rut~+bsT#8aB$1DqywD zh>2aXE31+INidJqaHj9WEyDYqwH?D$(WaFr%W*^{+e1iO$5zsQlQ<3nHSzf}`HzTi z4(HK7Nzvorm|m*@b#3rOBUZ^ILyb85j98AV>cY^xCPYaC7-tJSBc-QNd*rEAK{A$f zg5tom_bEdMP|xN_%$ZZVRUE5WVxg^B-A)y)!QF8N|64~~fd-PwZ;gSPP+eISSHI3T zPX&94xYJu${+VU1CO&>qn$*T<@kF~!a8dKMPR6N~CV!3F(kw4`AmKXL21o4~Dxw+^=Hu-lInV!FBEk%+z@1Z{g}TgB$iZo7o$j3e{0a909c zp*1@`#DnGnp^4iT7s>s91XN%EvW`s1*{!_d)rD;BylK8tT4@o(qN!to(mVP)HZ~sK zoAim0TM5LU($P8&x@Lh@W$!K3zXCO?bShoyh`r5_uU=ce!?u43LYg%UHdRq zw_b>-(wZV5#~D6vlPS%bZ!9wa-B6##1OlD4{I+~Mix!P(AL1h|t#(;6y!~uQM$ADQ zjV6>C&bl$TRj!v%U?4j)QA1!Y1Wuc|g$NP}tU;WYjsD98eC@$QIBRR+VR>}9=?A{e zjrX|@0?kXczO9kwhY;@LIWWX&S_YG##rQ9?y?+4Bz|k^?;)Bcg@HFB@R>~imbEWhEyqvY&??Y!gP%t9=pIm-=p)Rq^O`z7BViNvgNkNkw{aSLWESvEBeJ$b4sV3#Z~#?Jy{ zLt@R)7*ACH;0P_3SHNCD=Mr~kw+fZYN{TKc>ud(34att6|zRyZn-Z zMkP*#|K`=E<+*qarhSzAlgv{T5tJ)w(seSm5dSa?a>N~A*Dg1D3ti+W4zB%HhO*t^ zokQxEFzV)vwDyLG-}LuxbpYAO(Fkp2+a5g>b5*<=D=d|91o*9F;pB;qoo1AiCn5&i zl4@)}pZDn=wfdpI+Dk3oR9CCLj4%3bZkxz(4>RF@G8M5DZ#2m-or>mFNn|8ldY+0&Yu)3>BV*)ED@mtvwuef(rX>(*!eSaOx zTo$`4IHBEuu=kOf-`%c)eZ{q?WDKGGHZE_$1~6noVluRw&YPW<=FP}m4l6iU5BuSJ zVF_uTlT1BmnC%c@!-1NHMm3AgQ1OcYei!BbXOeR0TwJcrGz^V>etsVMcC(_98xreS zpK(4^5n9{b0{`tb(Qwj!utD_Va@nL|Jd@kC+Udde(q{Ume+q7j^!LtG=E`W&X8rc) zMfU-;i@{1xiztCW zX&$h>2MZWbih6tm!gPS#DE)!C*(pE|M9Y?|*CJj=NeTXn{x=xk*9$tA^9i$rgf=hy z*K7Xc`OF~k*WC3%z3g;d?-3fuG7pc{YNv}G<;S{<`EE+h8|uf#h`<^D^~J^DVVZtq zcejA|eb!FDJYXx_>+1Cf=Wjk)FBR_R%^03dAjajU%FYMB1f4=MqY$n0MP1E-F zxPn6lr9!=YQ>Jf53ors_Xl!(g+KOl{6QnsI4koz5k(<@W<85n`56N)U&HG?zjc>?VPT#cQkog)6|56o*VOA5dS#1O%N}U)N+PZ^{S_soy znsB?kQ)^}Hp3U?DQguigrCw6et}@}3-g;C|YWeD_N*-K$PeRRk!jftk66RzE23H7q(hbjF=5aI@mYdIXW&h$m&1>!Pmm~-1x=z@Ir=s@0T}-a-8gC?_>)rz}g0%Wbz4B<2shJa3Io~LnF?I+J^rzzNq(5QTG)Zd$?M2 zG#aOH83;}Oqi$a2fi%K(D7;sB@(+E2!>7>ishHiYiH#_N$0*|N;-f^3kn~WocsDzt`_jTf*QC}TVG}m?A26nOWF_GYQ-Ik z*^Lb>kaUG54)yJ18IZ#^_471$85ee4gXuT@r%Ig#W2%1r7u6ur+g4a4(g+m{l*H}lRz20Jk~H^6^Z zf2-XCNTyaSVA80?wF1D!Rr>DW>X1ab*R$PtaGcM%T#80Vd!4d#k!Phw8Su zr3;eRwbTQcB34p4JUcrZ1k$ryJh!&^|AP;n**;Asav6fGO==w*ybPxSb7Zz#XvidF z<)xloKA(;sLy=3RMI>uam%Prp0NZwuy!TD)n?k`ivxldr-5}x*=Kq2&#<%<8FF-Fe z_4do~is9)zh5JPvRjuKG=f{EIS5)kGxkeY5v9Ymcw>R$FJG3eC;bid zLS`0YiQUvv5{-rfS{dfnE7ikG8u~?NPL%&Su0PgmKH+?i-F%6Gd11kjosX%VzOyB| zMK1gm<7;QKMDr~8lN0~rASs2l_<*cs1O7&TUjF#hA;(n_n&WpsIt1xC3An!8I_c;F z)O~-}Giir}Oy7g;{EQ46o;(O?i&*7upO=Pu;Rrn1j0g6-_pvm~#HY=xxk*Ak>H@Pe zDO@}*8=q5gDx$d%4I5YQRPw<-!a%3y3Rm&s+l`!?EzVF9&<|);-Pw(q;z1R7DU%T* z^VZQ7LMKyv5g76;*Fa|Y`b_2#cxt!MaD$crVGxo9QGaA5M}ZR}oDhp_yYBj=bBAtthe9-{-qAWW4j0NW z5JSxLN)}M8$22XhVY<6}DsR#5P8s>+@r%LAMguq)~>1#V4ClD${o*u!fvNVaT zs6w-!i23~w>_8L0gQAvsPfa?&&Lcb7mT$ePEL7&@svR#V_u^#J`bw7q$$E5o&QieL zeCa|}7dj(sMX3WDD)Ue0>gpiQD0g9XsZ#@8G2&zJa1N+fMV}~RK15cN z*HstmI+1d?a-0-Z1PVi+`fJ-S8yr ziTjm4n8DvVWdd+%r5~58zYi%eXM)xV7AYeq^Vo)mV(Aa7HviDXP6Y@z@Vnh-qg#D{ zuBC*NO@jtW(qL^WgSWzko3$wgQzAvtizEe+d6KRON8jY<65VQN7lLhG`c_B7ON$_P;3H~`{Y2L)s|nz> z6Z}fRm-}PAp7ynuituywly@>4#s$o#Z3BwPJL&&g)e(*##VjTQ^-)2`k?7pW$-yC9 zIM9P7oi&*Ac+B4+CG(XJAF$!++1uXsqxj}GZ_{ASx^?Rmc(FzUKaZ^AX#T!s7Ze*ib#^g;#d^ecel3Iz~t(iT4ie!cj`FVdjRb=O^s-}}Aa!Y4lQ zNxbfLuTh}bbs8Xh&1-%{0V#{s?<+OPX5>`!mz0N(4}WlQ+4fjz>Ws5<-@R_lQ1tmT zqm!ua+hgx(^UCVgD{;>~_u@q_dLgdA{#p$HUU0$r3LqQOmSA+hapTzvB&^}^;Ul>6 z%FA`!p`pbJTs))zwAbUo2Om~#c8zMIF7^Hj)y`LA{rWR-@Zez$Tt4{VL-?7Wd5^X( zd-I#$fVaQ>t*ZS-F+BYIZ&o6`!KIgOLPssjlh&v6<+CG4j%1#lciws0QjXe%>h!g* zeH|}<`OWJ0Yua*d)v8r^_Sxq!F>!n>)fWKCmT~ZFfIYg+z3mU z{$~1~D^UHtU(y5N0>7Z?Xf#5Dbx#-!I#zVAoOTeW;W?jX#!qJ8!zbMq62a#r{auvc zOmyJhL4YaUlCvAkwy9G3QrEx4ddq-!DF7( zXQyR@XzB3lf)oQ-P7V$)$S1w{6yV`$NoG+dnhhv(Oh7!2iH0x{@JylEd|rs$CnjsOQwTUEB0qClBwjh1O&ccrE4*hRwWKF_-nu;jX*8uk2=}7G zn5%Ov z3)u6od|d(;=n*b^?y-%};#lF`K`!y`N)As*#7m)pc5)s0;mMtNv@vGKO*WSKjd$>j zXewZ6C!TGL<2Sm_#QC(TA)`-8^X6iBI1bg{%R83fwH?dxVFfgqb(72L!YhjdzKpX+ z{+DX4z$+rzpWPfQoyI`}YiR>FZ9XzcKWq^P#xMK)hnYp;avX`a%|MPq6T z`(X{LGD+R+l7lUNTneOWyd;OTS7x4Pmzs8m!lvj=J&EHH94;+g|M|=@-ea^B6LpcVp=a*Jj~oPlNsiPx`5SUO9sK0Vb|6Xtx06s3(u;UX@iT1TfOUpH^D<@$HP$Uo_`(UIa^Ec`RTp-ybCV> z0=_&7gpL|Hr^Gi}IvH(DrTM_j2!5(-EuK@~&k@K+-u&-@vgRUlR{ zm!AmhmN?V&!zFcmqXMF69{JqlUepcmXO&FOHKFkI1tLvT@M2mz(5&mWxS_g8gI!x@ zCK!MpR)Faw)IS$idhzzoRr;K_uPHEd1~Sq{g27WFXflqHN~@ztfWtH{=Z)dUut?i3 z(;vdsocF)X)JSAz@$JnCyuNb`C;(MKOs_j}a!h(0Td051Z< z9)0w21)?p-)YKHd^{v~nefxIp9*~|NIB-CRyZi1R=rf4E_{A^d;fEhpVW;u+uYXgg zM*!LfKll+$Pfus`Zcd>MPqFRZW$))hLIJnqmtRXtrOdl$Mkesu)k9d+k-U54@EBhA z>Dw{!zy2G3Yrc5K)6ClGORa!Ol;k(CtH zoj|ku?|(=idqDBYYV5xI9#GF8)BQj|Ji9A)J<^#_dcSZBi!Pt={PB$;pndi;`eQHp1{r!eS+S zuCN%2J($zyU6WZRuDW@LeV);hzNNHz03k$rxYB zghA=*5v1i@RhA%a<|YqcQEhg`xx-GI+7%<%&KFy5^;c69$H;JeaVf~BTCGbl7pI@; z^|4ZSPk-B)ZnqQ7B?!3PEcy<7KI8FCIJzev=zI6>K|u?PdU^*iHrhVxK^F8C@Lh=} z*rPlXbruUuHGs(`a^x)!30+{SPemRXVOzp)}Gba~dZ5OK6I2iupJjuWlqgdijjPlxxr_itRd41<{^q_(#8)LYCW*Ga_96m|%u1d5QWo->h z=PIr&cWNuNyVaUgm$Pdp_$gwhl*uh`Nh3oCIux&+McO_|*-M58MiYFOIv9_f=outy zcfV|O-(=&4tf61mu?+ufe2bs0R}a7UWtefMEm#cJ?iSn0{IFGNR79t$@bA@c64^4q;%c&8Rr$l zf?AH@N#-V`&(l{Wj(-H-slP-ekwpofv5Y^*g%n@(EIz_88J}NpX}kKw=ApdRnkPD2 zxG+5C2p7wDjCUS{bDB1nl6lfknVmnonZ!qNt7u&JuFKy zR#NgZ@J{yGF+NV*Vg>DDkl(wq`SCaqXqYx%5t}|0{vc&VwDk%>KXdQe(Y@yb7QE@% z0xA7I^1CNZqiGp!_hA|UjF-2`nK)AxCNRLZvrO8qnM9U0XI8%S!;QJJAQRN$jIGuw z_t3^RCOQl=|6uQePIU@F1YgMH?=mrg$ecsr$SudrOkt6^(1`k_9oK_!Jo8ON^on*J zE+kir{ER39Lrx|@Mzlm!?e$(6-z>3GBMxS7%~*U#CDC0;0#74HhD65flPFJPiHYwD%HuE(b@{9Q9{o&*0a3*5lt5C`Z=1 z!6{gX0cC;-qE0?!yqPDQ`-+gvF#;?v6NVF6pT4@b44+j%b}}cpI!ZV&PXsy&o|bvz zw-A7!By?WehbMMwWytzcmp)&T+_I8|D_PHuD$w$fYO@DbJAGY&{30l|v?)rjZCnqf zAq5Lzm1+vC3UnLU8jdG9GA3z|2P7mC{V zzlo*a{;C~k@#*r^zPvQYrKPS<0i)KwmL9J)$$hKJa({6aVM^{|l8$ z{G8hcx%(`<)I^DNcJ($pVu$LS84q^O5Z)4G|4FUHJ-`cWbx-Fn&Nm>?iDl=zpa@*o z55_A6>=`ewHy?_Wvy^FCnPpS>33wcYjD+*&&v-h>Nt55V64ykDrGcDsNdJ{bE?mVn zU^8_`n5JW_ki6tr-Gxk8CQ~qP7nc-vY$W}_IX0h>@PH%_wBdq}E4Pqr+}V-|_?8Fo z1u^geo2FyK2rmrZF=FfLEp$PfNCf%u{KN1`+t~Za2jf6AS4PtrxaXBE~FMRl`GZ4)nbIGU7C%8897}k1jhK> z!G(<2PCC1RKynvMG-k@$uY5rZi^@tlK2vYkIZm*RGQPFFcGIwcz{8~r=sYswbNU$= z5<8oU+z9@B_gb7+?!~B5Zhm}nH%=zeSz6_kr=s)ICgjQOTMyil^Z)*MI(cAaE7T3A zc*r}ijRUoZB4s9Ut2YfpAi$yK{O0@Br49{{nKYkj6jo%<7d17|>f|9IoZRNSN#w57 zLh_%-b&8=!4G|5;H%lHXc>qADI|wdC_(X-jsWybIjY;fjPTK@raw(4lKNG>;0q{T! z=}C(b`9FR3zVR*i#qKlEkh}0iW6YMy<>{BjBqlxgcuWrv2-*%r0l<_;fdm~q174%R zv6_1FeLO731I58(Ad#`X3d7A2p-k!IN&OaN_2qAzFyELT$ES2&%E?& zHyE=#o1X<)NcyOX0?;{XqP8#e2uDwJ)@)<4z4&N-UZT=<8$G+hI4sv?_#~e}ajTJp zH9V2t{2*<5oQKVNqw%d-&2zpPR|t5#5|3wCG!EXI_cFFlMyDk)`@N3GDj%irT^Rl- z7iq?gx%grFnL_3>6)7dhcbNwE_&CRu*sNzs%nS&Br-fSxIA|kfBt4Ix;R6R5;7SPh z&=&(lu+Rl*+jQKmYC1#OR z#+n0v5R5tCz+1|IC-=fHuh;0(ua9Xl;p$|r zK8GXYi&RldL;}EWtpKKSM?L>6O*yLp5F3*V= zp){UQBE*LZP5+m@Vb5c7SR5d;xy~URw?Yozb23+&b0oCP+^#Nl;>=378jpu8++g4c zXaD3Zv8>k<2ymM;mt-1S@*HI*4BZnD@=xR2^!ZwAOI@x`5E<2iZDQ&_qe(I1r*vVA zOv&X+z{$59{0O zV*n73W&1|5Kr#qws~(H%O6ZRR$+F6pSOkBW3Z;QW_<$#Ao(jx5KX59QDs0o2t03R# zT+s0$tq0K7Vs4xh8Qq}+$MjQg{^wy53PwUihBW#(x6UNvFwe3pJU`pFD3qDJIcOHT zT#T2epn^^f;@@dIkp5;%&hwlHn{b`JRh7GqUwrN|x&nWS5fthnlc2qfnmoo z8v&9+834@Ag>0P;UB_l9w`(P4!#*5eAb=?6krp6Btt_T_`3m+sS2~W(rd4uYmQ?=o?M=z?>K-` z$BW3(qG`ipvAF7jb0JAI-+B!)tH5CeY{gu8E>h*Kq~FB2Qq#tIle=R)mNveu+GnpH zZ!C;60iSQ8rY2y#gy(M_Dv?X%`lKi8@bYlEg?1+U>%5ykvx?6|BHXvzX0BA^TV-hWP3u|L+e5?`3y10!FV7>R^n&RRN8%136u0_-Wki1!@Ifiq;MRUOFS$739OWh;4sh{##$X?LyscIBC$U{wyu88IbswV; zEz1SrLdxqP*e?s)@**kcxDWG{Iqzm8(Q=%MZB$+-39qq?vNEx75-EV=&L87tB;d)o zZA=D;1TtxXwJEdVN|VYcN7H|u6`H>rL-Kw>vgb~_wNLA2T{L=WqytsDv$kAj@r5~I z`bzekFPmGMPK0%G2(1AOgEAWiQ%WZ=3gMp@X8K2_!(N+)^Rn3{mj3Wb`$C^H#u;Sh zAJsDPNog}cSyI-f9pJ95r8ns5D(jA*peRWc6s1-txPne)3U}WTaiPM@)6FK3x9ctu zZjy}y#hGLUEd(;_I#cXnk>#%3fPK=F==yM#_p0OVL_UysP@Z6R% zt$-NMC-L$e%CQ!@vN~X|_1P&Wkw|4{&QPP4JA9HY@yLqIoJdA}IX+LeQN}i<2*2}rw5FR$-P6o2CyV5~ zho~GO?3!=*16W`z9+nA(Hk^^ioV&*pG3QBBiu5;;%tR36O`Xf}m8pIDJ0-c&2bf$+ zB1p9f=St59LHrD)%{d7nS&BS9N%DU?{v6)hwN9S_ra>x}ps?w=YhM8(ZTck$FQh4p z2vRfDrN-nNJC=ib{DYG_Qa69D#Uvyg43p+!bq*3vbeF7FCMRLD48gmwt<1S#oLrtj zSRdY&IzGbDmWIseF$|Ru(-_bIZKl7b4idgin9Difp;-ZBCXQuJ&1 zc{K+9L-!eaj(CjDtK$PuxD>e3Bpm7HO%KZW>*hH)8(lVy_lxcLwAiC>XuVoq?!&o+oum|t3#b@T3?&DS5~BBAl5@c zm|3QS+0G?$d|x5lA1hTW71XC4AQ^KlW`5(FEq$f1d$0e655DDipJKYZtYSOg%8bW% zab)gh&zLM+P(h~(NzC;foL)qmC7J;MZuRznb61%1DCU`D{Dsr~!^0!YI}a{EqVKod zT8cqrDGlud0N@5aZk`byvm$wsz0ErzC(7~(xY9WH6p)np@4R$cNUNpy5_89$n<`#% z(y?INS7uYP1tJZHfNk>>nQ1y2D@)HQGr)|ADfzD*aMDvW@iof_<2d-_SID}fV1v!& z765BDtt7Bu3?K~_&tl91VKO7Mgg_c(ICP|A+yGC3W~|5DJLy?^iJ*2SjB7vP2NF!6 zP#r~#U5VG%G8WFtj01flD;*`ET-t6;^`8~~Y(I+yb*)f6Ch$>mq$*{7ex z3vYTkzWT*apPyubDC(s=uzp@)}a@OfCbrHz(0JfeMkO zW$ya1t`yJn%ZvBJp<`&jWi6a{$Mec_>$r%4rw1DI1MSEfVP&bq-ano*c1~wnrIgV$ zW{Jvp{-~MuYp|~_C4a3aS%OxMxPsHg3DfX@Q+ZQ(QYK3$m2!{iTMPtL_B1A#i{Sdq zayQDVj9VHLro@>z()-QkCw(azGDj&OBjt9mMiOsY1^UN{ZFqO*YCTu|VCG1mV-UV9 z%kmUKtxY%)#0+UuxeqVuSggU0r)S2!G{VwaS)2Zq8G9|b`iJ+t49@1v0Xd00D_Cw0 zobyQrO7!rl^g_xoSgQCcdF4PRkJ<9%c{ky;xY4SmkDRj0wTonZ7^74xphN!a#CH68 z&zbnM(Pw6HZ|ho7W>QM%205q!vg+EUs9kUd#=iOkyi2Y`T}{Pn${jk5-D<6;v)~@A zk81bHURq2q!F4YyRovItmTODoFHP^mgEPbMzID?M$k`nqek#J(Ma3hSBBf&~2v=Yo z$A@UM*Z3H%&;Fd3xADR6Gp6W*3(q&$>wg2FjHh8XVEDR21n~k59|OMpusnS~%<(>t zte}FPPohnq?PeHJrZd?1W(mH&0|+4rgO>=dcP}x$fRIt1n3M4=XLyuwvw+Jfh%Y45 zNw{^EVjW|PWz+W0>f(Ttb8pCm2k97c1L4X@m7P@<;9HWV&q^Wy=`yha z=?e$JFi!I@aiyzIS~fQ@O9;&$0p|iy15p|%bCz(tMqIpc`J~KrT5K6xz%3V$?)5YE zvB@N11l;0{3@>2ZIHvg|D4%Y>MsXflOH{5@ncIef3{kr@8-=^h)0wzc7?D5UhC)y} z-v!}aTFI`S;;`L?N9A&jo!`(Nl();3pHWt+*3=w#e8%ha^b~%0*Z0uV+mC(wc4O@s zXJYen&tmtk9aw+XIq2-{#N_1UtZ6JN&26D`Nwpsvl|q;3*69N{)I2f$O1sB77%~>I zf?BMAj!9nr;g4mo51{d1hQ1<6v+Etb~KxiNbP=mK~HzXHcWaOqWE$Jx+ z@~N*cImd2fWLRJK_4i|Bco?Ij>Am_J85v35tGT$J-mB}8kt66$!;cP+U{pODT(lTn z-QAc}_pg{4#FwjMSiWS9em6EUih;$8v~}>|g9kA+F@eFwi_xL(kEr`eb+6xdcH_vQ zqc|WAySF085 zSMTd-c#6M&&u(=;gQZK8_+tNIysR{+CalHyx*Wl-z0+D&9$LB#zq zd<6&6{D$;>Rh55_<}WD!vdaGe%ij;b92I)MZ?8TBn&OvL{JlH2>rt_M)oMMA_Uzc9 zN7J&^t8`!QRrmD5zgO>7cq-?fo!j-eTDE$P{@s(lU%q;^md^L=*rwB6zG{sw7nP67 zy;zl}p~}5qwLg_>XgS@_sQcYo{#l~#>-99ex*uA;OqZMP&HEW0e~)VSY8v0%*D$nV znSSr$C-3RLqpMqwr>XG?Jzi+sQ2!H;K;w(X*}$Sjdfd?adPfZ(8JNZ&4qlGG+HpUI zJIZ>zO{#HnNQI|yx@gGVchS8XUlWrPdc1Y1aWy!!7*~!Dsl`ZrN5Ax1lz!xDj2=?o z#obS#q1xl?gC&fs_%!~gJcEnXc$!G!ck1#kQt3~s`~7M87wK_-_}~E?td;S##i}8HJap zpn^^nBHnIlY7*^48W?Og-5OwY=MFpp$0Mw+9I@};PuuXMc11GSjNz39qF}s502mmj zaX9VuPx{73@bMRyw*&MYh7n=FbBU!U=ZYuhNM|lEtd+9KNIal*fXqA-sCc_2*y7*- zp=9Ti>1?~ps+n3m$*da&0|uF%kYO36yOR-g(SlbmXe)kQf5CKlbg;ba3_`KN9CO^K(dyoQm(3nWda5Hl=%8B ztPxLl%5z!a@6MY&t_ep9nDMdpJX>ZVQ$_d7Fxrd!4K~Tfp>&l_hb_%JRiCzFWpKc~{It=k@*8O7e`;XJ!_VnBn)M0A#4pPYSs&~E-?-TX$1 zlzQFFMXq=Ko&Sk2S}K(yN&sQQ&&OLWS9o$u0bzI9&Q1gd5E1Z|00Bc9fFY2K-VrcG zfRKLQ-KBvrQt*zZ;RgqYG!QbXK(pk2F)qab?%T5ivbS3US4sF04OsQ7_XGqGSYhwS z$2AzyN%xBu>1zVTY6@8BCtyN_rF#N8C_LR$n2z*40S%K1yhwnM#j5Nhm>HhY_f(!K zo!__y;ClM{@R5->Aw`_bWH4Geav@cLeZf^`jy5EwD0 z-p`E8*!Lp}xTq^&aBX)#UNW>6d#1MG)`MHIsAmzn$OY=2U3wf42uNTMfn?P01mb9r zOMyxxnNrya6x*-gL$?Km-@k9KmW7k|RSnV+(LE{L!}xo)Z`b`#Z9_wYKrR{y1F9{E z_Ud~TesGb#-?L+TQXU;X0m+i^$@|?qwrhO{wY>)2c5buzQ{NJZMG+`{`kn|>H2Kl{ zy#$g`eFk0lB>yD*{vf=$A58CU{RY&1BLT&b#@Fxn?Mv?!sMRr!!vqwmZ-DCGk%DBp zyc$HC)F2tPOL=erpP3%VFLa-Qe`)STH;pCL$A{AJl)t&BcA;+phYsK{l5cLq;uUIs zQ)}^oG305je0!?A_4He$^oTDNs%}2m_#WjPwwK~K9ysHn765#H99|6&c^9cbZoF2>$qKW-5A&3f z{Q3L5xjP9f)}3`}R8~luMnW*~B@E{kf$*Ix6B0MIgN+k8{S6Hi+>(1}-) zrxELnus9}?0fbC>!up!>c)L_YV(n#f%Pe-%Yo*vi$kP*Mz~(B8rT0?|_QLzwIS0or+ed_dhZHk^%R z%U9yb#~#M;k;Ay;va7Ls_YS3~?Lnnn!c$K?Hf#LBQWY<&4e4ug%lE~py_qw~hE$lB zq+!Ui>#I}y=k3C8E;_T^WzQQUi=x}64`#yrY}Y#cic;7SeRgUOesA>2Oc=6!J14a^ zdvazB56ql6%Pne~q12j;&Ud0STsTp;zp}Q}T0(ty`j9?DpHaFH15MYy4w|wrzb5D_5<>=-3EGjHgl!2g@v2}GqVE}_QU3MOIf5dk)ougnNID{yCtf+-sOZK}SY zP5|z^x>n9MkkNIUs)1bl~tGEym*cScSR6c~~#D`uDKKtPE(~$V2rJ{90ozmPu#j z{4udx|Al?!@^y*xR_9~ZYp3+1TwU(OPjs%rpNu_~@+toJ#Z&S>V!uM6LabWr)SJFS zg)rCK=#*qEy@HO02-xo?>sd7?&o<4t=fbmqaD5W!{eR>~EI%a2om z2lhA?H7Tg^0qz(R*YE**&DZW{jJYek!^d#ORV%cFonMt_RdZ#v-(EkE%m>A z)z8t8$XvkIBc{|hLFvhxJC@^%(|fIggjd!V*(H0ATY8pjk9a3gBm2Kd1&*@gsSsCjHx-& z!B9M>RPJRZ;z}mHiIu$-fda~@s+i)(#1Oo0emXpF9>>YremlX2^F7!=y3&V=C&@yG z3J-sT$ly05zfA(QR~jTz-n4u&l16_0So$*AwDR9apVffr&9x=?r-`ll{7ui=O10O^ zYD;lZr4K)xIfBoqaWbiO6cRrp9>X=FAIs5!XXQ8^7Ncp>uCI7qM5ZkS^5sLL;1Sr- zn7}uu58`zl%kbH$y?(Dt;p^Z$tzxVleBuBZ=kcc{z-oz=f*jcUL+B)2w&#xzd<@AzVboSXp~q`$U1ejzPqSc4clI4gx5Nh|Ai zNRGpWlsWNy4mlg9)n`1<*tH+Ok}!p7uymoY<?Y$MXdwU0fv6!{nu>bmG^>?V?-gxWFXhi!IooO_?Rfl7M4>r*3Wts|k5xEp>xAnmAL3|i<*Ne0Um(?71yv`#dy6>JlGSBY*{_SX$mX^7azCLG|!zWOY zPc8H^rF?r!#|rF`)A;El4`#wt6(72h0Uev06Ok~&172dl)$t+%Io{K?25U>5_*VS@ zJ~_EN6NZC~!|I!uI)OsvCZ(MG<*qZ(p@6ynI`$0aOP5vp@vGhIm2$g@Umu+tY|W!V zG52|Q1bV)qwjA4=lelGSf95?Y+j$$#*CpW^)kkC%W9Xjx$+vRl=kM)nocQz6hRQC# zBhBZ}HF{I$C7q0@$;pX)Cx6y`R-Ak*0+*(_e)g%ywW~t9?du=Fj_q5tyEJkiNub%% z<;%5#=LdIw7jsdqqf=Wqfahu7GC7ecSGnxSl?}_96;x~8Xw-Vp=P4>;YKAO7oK?qU z8)+`pg4t%79#@g8R&b>dctlB@Pl|)Mq*KiegBPJP)4-9*3CyUzHDT#>I2zRjcV| zPc_EyB?YR{<_c6vZuQ;giXb2NH2Yq%a=Uxv>T$Aiepo*V(X#T!PazeFS&_57lIQ_K zl~@vqxBJl$*E=LS3D_J&&=~rbcw~t*Kdx*E+rwx=V!hx(5Pb@x+Oqc-`z{2=C$M>X zRBxPFr1*rc?p{2m0I&~}MXc)YYGP~o0?2gS(S)i<-W1+-VJN1>>oG#h5 z-_9K5^7MPTd^j@Tl~XXAyv)5D6JhueJj=g^N3DQn1r>BE5b5mNP5)93Kr#blWM+?a zPLZ6!O7;5&V~~7(3#Nc{*74V2PyY_s|$c5FA>I-VS!#Vx%wvLr5zofsah#%h6q4>MSs*T7BAl5bnGX7ZS zD%~Hw!fa5>5?RPmI{S0_GXyL5MZhhp(@%D;!7A0KgUxEx@~vCtLoT$aFUa~U&pNJ8 zm$!`FIeoRM;w%uK$gv`$FO~YMr2ab=3p$fdLn61YsC_$AUrywLZUS-el&lq3hz?9C zRrH=?JhN;_%-$a+za?s%(fAlW4xo5h0dwOMWbx?~o_vF2sGJmmFzoXO;k7T&^00I^ z()tZ&=>EPqg1AR zclR0i=l z<1Ri9{Llb$+DJym;)lvpczLxib!iG)2Fa53do;iOMY;*t-<<6>>&1A#g62=;a+j3v zX1$ormAU<X0D) z%fvX^iS+rpd;_rIX@iwa@`Z-}G|x7V-2Quj117 zHW;LN7;kz;|L?r(h3hX6{*PBvT5g~6X#^I;qt=9(vowelb4=r$&wRZoT;A7 ziEo(#n4!Vi(*_k@rwI`$lH^qp-r~gj-yJ6B%4OLuQA+t^84QT*Vq?k>`Vi&?VmMeb zc+!fcJh;~`X7^U|t{J4~6uTZvC|&-7mCJR7D^JrZh7q8?t`xT2?V_8C3Bt6G@OQPq zzbD`=buOU~669x@neYiWX@E$VN7DBRgF(G8Q-EYGQNjQgZ50wJFl3vVZnq<~zI)F1 zAJ2sf^PE73`T_zS3Q9CWCT!jq-Cbv;`4QNM}WYK zYeTrcHi)YjSiyC9 zmFG2TT>P9$;~gEVaA~D48ivw%xvCG<>-DKK+ZM-U{&s(93 ztNr?{x|ekfVSx2NC+-?^N{!My@b5a+@7L4@RNWTqcAqcNm?41q+RC7|V2gowG^}n? z{Yl^H4YffW4hG7X*CI6Qm= z=bV2bu7AB;{xlLGzM%+!}l+)kPn;Qa#Ie!`0nn{FzbOH&Vl*vcQa1d!DwAo?7L ztzKdOA(9VR`EAv_`etML?c>@Y`QiQG+JiQJ(8iZ6pbPNcj*plUd&hre&?f%4%=yy1 zYdYVO)|Z5T3BFqq-UvU5%)C@laz;H<0}h7d0q6xC9g%*7ERPe{meKj}^ z-5LFv4ddiU^KLd#l*_6P&_YJH#&Y%*(Lw%U+B}`Y!%#t|3YE(hOlg2jqMa!5k|X`) zPzr`u1QBAmi+Lr?pY)&UU`>{uWSazJEGcj9OX4R5Ot2U?zX+?+XPeK{cb0#YJf%F6 z$OoFzcb55xg$dJXWgN{FF0V|p#g*A$k(){;8@>=RfQExuNrwr9yLggaH;#c|8?J0p z62amFcx4eQx zc+7VO1Y~vMNUyOP3m1G5M6}p-DYX*gK$-cl?1JqWN-0HlC`mR{SsNP{-nO1>EC>j1 zK*(kRaI`{_ft&?7q8(k0!e!@aOCc~8+ezo%j!Sj{lDU5|W(qp_-x=@G%WMokkJD;duR4kuBXNyeEa}&eratFFBKp1D#E@A-BV~x>hm@BIel)5Je z=vcDAmV6yTkJY8T*xzZbb^(P?-o^32oBW zDTScPYro28SHu#EEWeC(7x9KM!09U1#(7}nay52(QoyF3V*&LN1?rfz&QN8Gft4Ke z{6UWU!fM3oc47iLDlEn^H)$yRIZfMGbxRH z2!vK#u?-WRha+&Enqfx8_^5^mF@iW1O`_S#Lc|=fPUM7D*;*DhnNpkPX zAizu%l3XO<`z&@<5~1+oHHibq%!26J#+60aqv?E+^1+$hy4^B~byxC?vxfQ|(htl; z*6F&1Rx`Br<1;QEd4XM@#TH~~%9q*liR2?H`KIX7wl36!StzRunm61)SZ)n?XMoL5h$C>KGX;TY|Iu&+ z#Gri6EGJ+HSpq#XlXW{nC$e;=01ts$^F1G}o7sGgG#gQ{@~Wx>fgV>N0NOw$zhf*6 zcm0?L%+R@JhVsBlJ}&a=^a5sK_EaP8l7)kwG1r+%c^r^NO3#q=nPqdhbsSJ2t$tJW|*?bdL^L%U7v!frG+^F5IX;{#|M5c6e76UJ9}@wJ1GF#juxoh!zHG-nyc z=Nn|g7gW%xL6zKZ$d(qs?&wdm;moS#Q{8SK!NLdzM)`;=V@!jB*t59O#mF$5+(IiZNF{l2 z;Ll!3&gQZ`foWL2AoI9>+ESlkAR`MZ@9L7^=b|NXJ!=X!HihtatU19)Mj3JaK?&0@ z$+M=;jEh#6ozwUxsqk=ig5?NRj&2oBE2zG^xgmZs^SwS^3 z=T<6}0w7y}q<34j*$y+Vcs2Y;xK`5HJPT>(9l4czPv;uUD1PBrhvOC%ix_AyU#qNE zKnwz<4B$lccq4meR7DABmsA~q^GJOp6NaptjD-_fNgbYNnF-jcrJXvdQW}kb6Wrp8 z&dQ1b7`*)mh-}PL-N>!}4&;E0=P@wpp_!3rm{!2bRxGZ#OUwN^;OSKi^n5yU23QDs z-V?FJBkL!A2Hmp}u#NhvhXa}saO(^;wicyhkSyaKj{tIu*ccsE{OtHV0jZ^BmkwDD z#`>JB&0eTL#Ou@_xtY9WYJW7Xp%y?*Lj=s#XW`{9Vg348-uPho?Ul#w##oWkxn#Pov}72qFv{mY&BD zK{&-HXx_M7jr!0}H_KAsUr6@LD7lhT7 z*%c#gCf-t|vPkugA^_E#elH}WW-OTt+x)>SE?7S471s!6EH%triELW_Z141X=DwhU z79!C%MaRTUO--O(Egng?(Xg9u^uInH#rPkt%MaNmV@Tt9mot-^HwU@A?B+7z*hc^! z;FaJvlFd+HSc`iq85`wKNFrErj%G%R@tS;HGr!^35s`4nxkn^D%o0bUwK|Ad!Y0ov zrhiJpSwczs+IZS#Os4%v95ZSysr*+6Zee;kW~_uT4Y=d*IP-4A5uQ%gd|3u*ab>LV zWB|kPO1OpA@Z^9b4F@7xxj+cUWW%OjQUZOGk5I#)o7Amb5$u{vi&CLQ>V>kp6)IPhqO?%#XNcORM6SK6 z3+v3Df{qV4S30oD1Mbcxy~wVYnKi=gbgn63YI=GK1uZNpmuqbXUNT`kU0k{H)V!lP zu0Az^g+g!YTwyI|YB^`6dEiWAeoAu!F^n}8*+RrXjCJKsYn_w_VqDEY7dnq@zl>XV z8Jf+CXD*uStTrOg;%a7Yi>tlIV2L-_f`!x7RdYEex#eFTs7U}JS&7jYc|_Ii@dzMEbQK#PKZsc5 zQNQ+sy9PaWK%dU?nHVP^z?Y#C87#ZtXE(=W!IkX(86(%l=U=`Nlh4zw>UsS9oGip& z#2nvodFeGB%kh=zy-0=2Fen_BWh7D8F3$O6Xa~j=GB$)uOqh+AbQgeS&9r2WD|2$F z2=xzwy%)T{{4}!>!5W=6wri^_h-5Sl{Arqx1+!d|j-!OtKX{C!beyK=UX5Q!KUX7` z17OOntn15AIi8f%xiz#hav(LAYc)*Or;4+5+knh@S6rWEo||8;J45h=wNMJjtSy}Gi9u8FyVg~GTqVQA;yk5FPU}@`oj4~HbQ}GM=Ri@W!4~Q zQ`$bu4&LBvN|j79Z4muy8>5-Fd8u%<*dh@FI5oL&6r~G=Xop69x@ecvl|n&>@Afm# z1zR|hH6h$_$$wSIj+)-tRM5gA+6g*7)?VMTU_6i^v*wF*4L)9M;PD^=G1jJF2!R++ zM!*oVDlxle32Yj}{ML8^AB?lWL(MpdacBgQ#*S zp-Qy_lf~w)wxPt$tFIU(avlftou{)xWG!q5s-&BU4M0W|^IqgDo6|2+`rld18wuC7 zaq!IQ3O#)pqJ5UV4(CJ!8#BVbf0^v3=eUB3wUPwC(c zHWxWcCJr~v2*$sexh0wZ43@xkX36_tKH(6GV5)tYGw=9pB(fNRc?Nc$$55L%VYpbD ztxzm{UirdsqJ^~b%TnUIA`Cjo8{RPJroQ|PECZt1MGbz(v;NL>OxR%@K$?B+aE!2H zEZ{9V79a!I&aiBvyt_rfq6@(Xycul1pK={f@Bz#hYH(SBy^?{D=(G4Hn00e0rRxJQ zCSPASVGam1P3M1r$pew5=iD-~0!r4NwtlYjjeAYg9!cHGFv4210LfY+2TT^ksZ=T~ z$l8Ip@AmL{GLJVA+pQOdrRN%0Ei70II_c!bC|9&4>u@sP(^)$U$wfs7V#EL(QqUXr zgsi{n^DO@|23(EhT0uE0u{;ptN(PwxupS3Y7BP_Ez%iVu#KDREk#pq8;>rMNq}Y9O zo)%ZFP%B{Na#a=sIBjoCMJ=wlr4+dVoQd>jD;8Ia128EzD!41kdvf}dTQ=QSkB8yb zdJoj+b|D!9cF0oeeCCQW@4UMK!L6v~*H?5N8MV(^1&WYcmXVzC&d=Y=bB#$BbZb;P z=csR$c<#|0kb0;Eknm#Fj^;cvI;ZcMh@~Nwdq|C=RVvTp0gw@q8+Iw1o^YN}RJwjNW9qH(48pf4m(LF&r_!cl`G{IHe8F$uYVR)Drn&n>6;S%CFOU_3z5~ib0ZlOMgrc32#$Fe zY#~v$3mcYOs2TFt2{+&HGJx^IJReJzS>}&~WpezpUbB3+Y?KMe~^CCq-(jGYD31kj z;?`8zbjV`nys`uBo`|@MtExF+W4YVjKiY@`I9IBAy}Dy5E>NJz!Fd85WQ}u~0_0w! zl-nyyol$UWu>xjRre|eQJ~7aNEUvEBP2UahSs=T)|riU=9>-Ovs9k) znoasL5{@p-Oc*9Xg)%GM(_FGzfsRkp{E)LjlLIs6zG;QGL|)}!Ox}Nq>~ z|0kkTD-3w%D~SzXo&x-VzRsnU1>NS--Ned}Jrgs#nWLbB3R?Iil+KA`7T$u7^!pFy z029{EUM2o6`2I_r*X2B~^gwnFs+o;nnW@CgZIbahtZc%TjbjzkVg}jG8X*UX;C&uN zx#OI;u`sixnfE;8#CRFREa}Lcw34>3n8%)FmtZEyd?1*nW$6&QT7m(-jBwI~Ig7?9 zK4sVm0kaS;G=c|_jO`b~M`g10b}*v*wn-tv))))q?s9v^9sv& zr0ymQroW(LAab))@QbH6h3*wY@-1U^3>z;@hr-a9X|HpyP7Nw+Yk+ogfth8xVmt%w zD6UUWVxdqgAO?3EcW|DTC1l0Z$3ct;_&^pj>llb}cf`_%tbCTIpwzf*M9%;ttD~Rn zT&?*~3QKMz=R*WIy|rUSx{*m>W<1NVb1SI4^T>XrV+npl0c}Lj%}mV7_RmJGfRz_A zi>rroEUuQ$;Rdi3i>os0Pog}FD-Oaw6e$m-b506?jjDcnJOb>kQhjKwyN)RE>&XbX zMP;d`9~yy>G0QDp76M>nVfdMEql%xMuhrx$YD?^QGoCa4$Tj8=3llp(j)=h3j?}&2 zL{3`t?U?ia@?2;VoyWfSd!`RZ!@Q=p+`2^_#j*4BrE*0nJgII@2J;;TaN$*YGA37y z<|~Y2&l1Zkrx5kSxNe=je|@%tg_R=nj^5_^LAbeN2;Z9CkJ%{%jHD+cbCF+{&4v>} zd~StiVi?7M^y7PJr}BCvb#DWxFln;}5bijDM67m71)ip>15?VdGD=%#jiF^+PD&Qu zZ-*?{mK_y-oTe96dU*&>1PW(m#={qLLO}&BWTH)6jb_uwC>YNgssfBbkbT6a3mHDQiKLM^KV$(i zH%IyNoAkoLE1u!4{Rz<;GBLvNB8m4THt0Z1b0$LH*L zS_zd*RQE1u&@^!`D;A+7M3m7_mkT6rwBP}5=8`Q*Ue-c{WrAbGrCTbUsUa5zTth?! zqhLpzNiX>g7dhBnCo)@{w0>>?!w%$h$BRuv`q>L)1+FwmleH25O>;~0c1(dt3u|#g zY5#H01Q%k$gr)tK{DJH8aJ6*;idG^O=K{4vm1<4<+b+nba;1vqOaZi>uEbr@hC)wf zP6StQ#VC1RRl?NtbaC+cLZfoI)^^}!Oc>7!$O}sdK9^bO#6S#EzLRwgxeRQmvd1iR zh^ThuSu{F5s8}UFwMPt`Ilt1Q^CQXwF*wk%wJ{kDbEyJ~j9bF3jS19q+MIZn{1O8% zs4lX+)pI!j#`(-L=kXlNtsAO~?e&gkzI(0m9OWUT#pGVf2wlTFz z%)RCSvyLN*SzPt8{;cPW3*J|B_SK$9UR0;EQp-TH!i%44)~hY>h#qQ;M6I$oxOFH8 zu;VTp^Q`RnnQwX4ajnqR3_OilL=us;nQ?tcZ4+~iNwlfLf$TW&>7AXI<3f}2I*+CG zSTkELavvJHU_Dk!+#yeTN=Pe5$*f%FTT!_AlPeSXR1>Dl(=g$AxbV7l5|OJ!4ojpk z_Ed72O<;`zM4z3Ru#u$;2H)OF*cA19>C45T%EH9t7F7IQHk`ZXPT#CN9Z2FP&(N)5 zn75I$T^-Cj5h;fV@_?1qjU4Zn-?WL5c(cSM)!Eu043C`mertr5YBCcye8<}+2CP+U zHB3(~oXs)?omiS-=WF@y70rE<7*|@y$lpB2HGA>!1r=1#!Xa~JZkC5kzG2G;hM%-R<|fqt zTWmp^d&d(y{+Oi_U?llEGv}es@L2YZ^uxJ_dGisUv*uct(f!XQgm4V|VrKg_kGux%g!Z=p4vmz?G1@^k2Jde)cZAA!g) z@R9>^f|oh@N3ue?;Yb-tS4Z>3av_v|EW(($n^$(F*L5mfp0!40rHCj1#VjShehYV< zryFtM!uf}H^M?QH;yLA5cCj{($aj75EiF7Ei>Y=4$-Ff;`&R#3Djgs9Wygcag#+>?_I0Ta}I zo0$7OPUK4PO&u##Kdi@#6zCQMrN~OifQ)2uwRI-qx)9Fdh=7#QNPp6}Fk$k*%0+A( zkEpyF5rK-kNPMO-7PY9lfLk`zB%sP%nfp-SoF`UQ6 z-5NfSW1-1G#0PW25Ljs}C#RGmHLw13UfEA{uEsk$S797+9%_kdqtz^}XJ)c#Z7TQK zzNdcAJCE*Yh^%Jn(^Cu(Gs@vCn5EBbgpBU6-nun!d%5w;-%oE;ryp%@NZi7=m3 zZhc4RN_=i=kCn@u5`+UPg5}~vPyBhTL}9qRlE=bW_l+`^UKm5<=92(eGEI{Me*77e zso?`j_E{(zr&rGED&7Wuntpv-ZKE(PPGXKY{-386i1egdGrM{gltp<#CyvM^e4{aA zH%lkyl1XnqOz!<%{YHP)Zf8~zK-OTOVvKxug>mI@cGH^lu9No9pA{T9W}jp%E{tqD z+qx5;b>^Q_l=N{y1r>B^kk(T|`UYQ?m_>c6Q@5Lbn0{YBk?^n$ZagGPar^@C-G)mR z7qiS~zBjwLj)EJ&#HrPJ%3r_WAw~RpE;?EOZmu+B&h^odblxINrzSv80#kaxjc`Dj zzbcqch5fZ_fyX?vY}umW7zdMo37#)+VVXI+AewwE0K}+NatNvr@Ir|6g)cw}`yn{N z%rCtG!dUezyD!svN!td}yVqqBftyD2f!Kj;$`L6u{GE#;O~0fCT;U0lTq$jLGqLoM zf_exRbFVPcA7FNOTncK?eX{_`S|f2Z6Gi(_sZ>HirzeHr7=P}QWf|;yF^hyqO0{~u zu*zI$)NWvR$Ri}r+=dhS)53pa;fz(Tq$l9&NCXUdL&tLMdap-;FN;MS03$$PRk;IQ ziua&%cVaZez=y**AjahtSDw3PvVaM#4(FEGnM(EenM%A2c`gU9Q=lFJganrLpqzP6 z7EbF+Njd}o#Vn5~uCch9&H*q8bTKX@^V|uN_0q)(kfZinDLSH}!6m8>u2*FyuxvxQ zI|^1(KNvT8o15cNmzEr?+?NAZUR87bkOx*SVZh(s95AUBu<{Bv27j2-pB$`wG?I=! zkBgs=7Wu}=LTX*fjf=+{St}~~M%Pxluu*|~J*9H4MH=-J^=U0-H{fBu^l#a?(>F&znQARt$uyMu3y&f79FqTM*k6)X@@ zk)8uF(tGOzYuVaKFFqn+JefL`r<-27u^f3i#@Y+;k06jVEj zDaa>swKy?8n#w@zR6*@kDFMic{Egg(W|x0XN75S~HK^!srsVAq0$A=G>rlQ#6l}}e zr0H#d$TYjJL(9H1Wq>V9!ut#GvW1q?d|fQ4pn?`I869Plxp))lTx5vr?+r#kza_5U zHxJ=&2s0bUw5^MXpW7Q<4{W%S{~!{`=Yx6PK3B=!AfMzcVYn`j>%2uI%+aQu7gy$7 z$I63Q!bYN{Hzh7VSoakoWjCb*&7A8+mx$?m`&fiUV22xvApd9?rN=l3kxf|edV}vv z3xub%9vnRK@({)sCo4bvMOm0P?3SfA^l}%G7d6jq`R``n3&}eDWr`B)1(Ha zvgr_T)sfCG(@Gkdh*;jNRY2Q7$(QAo(Sl45o=>|CpaBp7>8K|BLwR2#(HI`*sa zb#rYAu2J9~w@mZWVPNHRIW8m#_~O=PG1r(x-1XtZIY1);wQHD#*ybD{?PB&V=bfK- z39D0{OUk1mTF2}4Dg9e2x%HpO&6nm+>hm6wGpzk|+^&0*uK%0fMSiogqHKZD^p%*V z5Ik-3NJhdqdGXb?W%x$@fFDFk3yT>r$^c}J3yQ-ptTw!~EUfg3A|q9Z0X;@$_TCBi zOQ4=EtMJeAGGS@f;?`nD5^utRUdYMU$?N&yOo*`jh_qWK4<$Jduz z%tZRU7}yl;f%?XClKHp9_N)uB32U2P9X=% ze|eZN?YywD@`UT9jD*1)&mvJ3Rdmv}&-nu3045HOS>)69jdTsoMh4wB(*@7;Wr`i8 z{hGwH-J)M6R%BYZk^mPQ_#t+@F)br4r3X^!a!S^8HebP%w!Rz%J7BcUyU?!X$4z`2fjU$I&F-8N-YRnbFix?h!Y8yW-qb*w+ zh0gzIHVZ{{t5h&VSt3R6TvKa7rw4`BVO$U~8wx@Y%@3FSR{yhcCEpg3Irns{--AQX2OswxOH<_v7Ap9KGs5~ zjze>tS+-MK$7Rby=U16oWkdmBF%aW2X1$c>2GF-~iUSH9xS}?WDP)&=)?IPHiMyhF zFb6ETkd-IT#UHukBNvlo)pqOD{>*yr|MZ>s+hBzmHGt!Y3!Q<>6Lsc`gL6uP(M0a^#9K z=0fsJRbK0^GDleBef~gBU#%;3d9E>^%=!L2a5M*KY}MNA66VVD2a)fK+>V~lf%D^F zNk;BvC&m*6v6O--8{zGaMdmV59>&13I55WF8!68hlug{Yax{lLSzQFGfIx|m%8+Iw zd~1acVCD{j5=8FaX8LR$=NceE2JKitJ=*-U>3WS}b2*rsRc{@LfV8dfh6? zpl{+~^6!nV0hzHNUHV2~PuE{h@Xw^{KXbYW2}FjI-+#fdWzqaRl5$mQ9hjcZKkIK` zU;y9#_O~!Jv_#)ucijtc|NZyj8MUVG-tEtAOP4Oy;d^_N@3yb64;Nju33uG_eHHI| zJoM0mIP0vlv2o)$7#g@H0q&;H=&}-hi__82W~XGMfU^kZ z8w*c&s#L2OAJ4AQVH-I8l(|oSsXg7?&gKL*Kb!eqM5ZA3&VBSwk)4%ExyJ~j4>dAu z*tcm(y)uX8EU2J@7ABP$NanBr=BW)H3jp6eD}22?BMWe)Jf^f$Ps+VD<2ocyj^yZ?Rhf;nbpVbU}@R` z?16;BFL#nol8X?4?+P(1?0LITgh?*>Ae!E}Ux{1Bl%LWMY)vE(Q@W&Uv|D@)Qvg>k z$uls8NPlh1NEb2$**M}%AZBqcP-|4F*4k2mJQtO{9I{zeP{D_gg71S}km09RKl;EG%Xrd$#x zB5vL;s?2>h6<6Rt*BpD_vN}Sbm_zZFameh&S7yyz|{@aMcT@VV8Y2r+bm};B#C0GfwEWLzYi zTeAZ>R+Aj8%mXyJwb?_Bk*L)gfpPpB&9m&{I&o{Y4?fT$`U+X2;i z!1>V-?YuQ-FOkB~Sd%5hm4&HPQHlw-&NGKoQgW>T3!T2N)oQr(ifgcD-FkF%cHpY( zZooA++=RiwA*@}$0lj_w7#LiPb1t|DQTH`-kkw(pt3_JRq)adC7{Zq|KxSmF(E7nZ zWbS>8e6U4Eo@UE0)2+fGh?7+(WWhKYd5+Az3lC4mMkc*%+9s0Bq~+c-{?EIP<-*^F zIswV9krOXl8Luz6(g~i{DL)+nUFPw6TWfl*Da5{K>=b0T)FJ>E70BDjf*y2j8A|1lbEU35myQobRx-F z7C9@j#G*__!U3TrtpkJFqwh$rtJfXBz&A(o4egG&tmy6y2c>D(1y9sqoU6~Ld% z=4Q^2!AjuIOTv4}`Rf?ZnMWaCp5-{R_de&Bo!fIO2jqfjv&F$IaU;)zxx8XIynsjK zppu^8Bky4mPqT}Sb%1cY+how@NtFyZ#2Pv1WTRvO+d*QKQU<(o&-qRc7aI)bG0#gH z#B;1W((?Gb!I@Q+jW0bu9PrC)Q?z|1GxRbH!Xqsa>3Pp0~$MGsNW7g1g2v zjUnuH8YgWm85WCucreQ906a?=w?KekZC$uLYmLfEfjl)efr5O}hhY}hh^H<2J17$h z@10P>g&6-lMZW2QeAiD+6^EZMG^*A*FgDswbDZOIe4vc+K5Ctwk1}>P8W}l)j*d>v zACP+*vgYpW?8C&^+{$h4>TQcuar=AG7bxmCpEV>&Lc3Hq_M8)6V+o96&&#$?xG@$b%+96ds zecArJy0pk%-`gCEw%-d&%kA|6B{6gk3?Ov!`NFab^MII)rgJG=UJsS0qhT&D583Od ztMRdOMR~DHr&5oGxsZXLv2jsFavq$aE!_fr9ocl&mfW*?M?KTV8mtsaYmkNF*6wVd z6J1wv?X#;Qqh&rrr8AI%as)P6>2F8g9$llvqQ)Tzh7`(CM zpOH2qk9{*&q7dem6I@1fvJ|cDbiQcJWjj}B`ctTYu^Qm6v?yF(|A5}ON1JHQJ?|ns z_4p&&-R;tqE3tU-QcO)uVAYy+xc}a}A?E@+Y|8#i5qWAtl9eP`$L>m9u$rx%k_o*{ zFC)N7e2BiWZ535CM2iu;wF07(P4(=>q+Thk_#aa>$ZYbiKQpp#SO<9EqVu&9OW#-S zcrs@w(u=$jA{&S27^{qth4Yr`+1{D7MfMR_IaC#ZTOU4z+33s-8}P`Z4{6tnw|(9fly?wK3T!u|LCFyRfl zy79;(522vvkI2>H*ys^=h7I6ts^;>Hf1ZplC&j+$@Gygz2NEDa5TH1S)JRb@rD%xTraB(FT(PUmu5xv!sw20ORI1Zmoj7*l zvJ*S5IB^o&k_TCqC0eouQj{o)1OX5eF%bkY5AOkZ^PTVgcg`NxUc=t|{O7*$zWbjA z-1qN(i&0U(pyN#@|Iz6K4r0iiqtl}n31bGY)%WWbm!&!KK z`U2nc9+2A+FlmSwXpm6=g&+*h2O7h9vO!B_2gW0ZoVnma3_oiFmVY|QBGQm~q4k%I zpkJBJe-sH;}0k*Z~ksJ4dpv z{(F;+11zVvej7lte#8ghK#81-iS+>_+wvq&-<8&93({Q%WML32b4s<<)xq83W~1|M zF}2x=k7EvyahF~*Gp+D{o-K%X?A!$li}OB%*}0&szvJ!?!Lv_2F*Yu@OnP?p6dXH! zEDLkbu7jQ!*%Cg3RP20E4!IHPPvhc?8 z`xzK;a|>+k**oRaap1&rXWDd>CDg$-%+>oso3FO%eB;DhSy}FC+h)g}P~anN{O69p z z76gfy-P5Zli~V`0>+^{FJkz%C>G?d&O}noF#8L9zJ-f-` z@d@8ox%Jk4`|n8o`Hj=&-7Jg)t`5gAj{f+}k*v>Mm|OM- zz|i&iqsQOQ!nixn?$~h%u5J7N%ggV<(WPUV%f&mV_rlJ-^pX)J$h z{%CPdTt9aRW_E>1;Vi_CoO(YC8-PzjQR%7cf`wg|squ7IyJ3$SZ; zuZSgEg@3n629s6?R)AQ5`wEmmr?P6Gi=@O3Kwese`Wf;=qPa^)FA}DX1}!aSb=GB< z!ZwQ`WOg}fblT<7QEsE!Gk|hCcIDl-437G6M|a+NH~jKH`#(I$^BOKm6*KVW5jgv$Jz>^3=NkV3j@vLo{q{@ogcE(lbq^Jj&~DISz~|7Zk%zmxKD&7Yn^);iGL6gDI2yAs`?O zgbA4e;g_6sT!AQCtObf~E6T#g7FvI$6fCtC zw}|k7{9@yK~nr zc>jMjeMtKaSu`D8&t2*{%cYy6 zHI?H)o*U%~dSrG1d!arMYrIWO+w?>m*g z`YZy_jbLumRk*9 z+k%WQ#8TN=vCEu=VT{8}5PG%h|lvk!h|?y%?UkE}1Z09g)<^1k|3 zrLX$9#&mQa>#tWvWy{=anmK80wqCZZ=6(NYrCj&*7}Fb}W=eZap!*N>Y1j~c${)6q zd;u3$bHSA>8uT*0NRmv-h^v!_yD}}(u*KUqSkOH*PK3e zLgkFg4;Gloj?P`_$=OACap@hQ^mcDYYKD_qr63ct=Q<;ltx+!5ijQI@RLk^&{E|?> zk_v&>Vx#2ZjzB7KtZKt@x~ybMaa}~ac+65eK+iBSy+X3puw7|$QGIG^24;7SO%;CQ z-~O9+AD@R8zxx6>52Q0QbMPzw?4P9f?oiAx|MEZa0GXq&eB~>!y0Q%a=E%Q->#n~6 z9((i=Z$;@W%Kr7g`j_7Q=v{Z;E%3Ru zy*TSoiDAmu&peD};Y=mWxcsbo4uv$wQv%7jOF&G@e;UT1i#Pbo#Ia&Cpp4?v=8xs& zXlCfJ_$rPpR~F~b9zh^p2)^;)K*S(^!0Nns*?mA$>84z039ds}onl5-Y=|iEgbc0d z)Hqm?5x15JNitvFvd%iJ@yg*Q)eBNwt$danFWzxxc>2P%B}Pt(03VciH(Qd**o5;| zWP=4zZyFe)oSZVF{}MIO$&*8e#Md;L6**LRP+lfHlRYhQ(p5C<`yE&vPet}*VC@sYxPP|oGxjwYDHxO=He zca6C_jyQ<%(%M26=B_rM9nn>w12Nu=F3LD@z|H|PB@p9I21+?_>tq28+1JoHu#=J-(g;U=D~x zu+r7JWGQq|-A7geE1e5D4rrD@I}TPlcXP)IcXu6dmRk{Qdue^ayC&4c!OB-g3oVG4 zr*kg@2WxF}4+~T4&xdCAu`p+fxPCb(rWFr5pr(h*H)vu!Kj?HmJ6j)>eAp?F4Jq5WbBOw zQCd2ED%5jf{tP_u&?n&Nk+;1I#<$*l&4Xk2KlpKY_50r&!;>S3Bb@_gR%C4b|KZsK z@RgPKv56Uh*Y5Dy3vZfa~YUr1tp6* z9cGlJY(*F-0)v=;A#|#TOfAX$@rPCMQ$MibS5l$W($;m$Uc|&o`QYp67Od*Jj|}Mu z+uL7w;f3t|sgrUJpF9!VH!dtJ!13ec%JDNl^doTa&>>%hU;p)Ag@Ga+p?4=(YfAYr|F}cc5Wm;Y_Buz9h|5ZD#3Tj`jd7$tpefAnpnoS`OaSi;H;{%h z(&a0yFOs`Nt-R#Wa*`~sRr(A0uFOT%!pJqQd%XsLjJK@)-pE2}JMsrsKK(uCb4%nU zTi0Oej;`2vWK|@Yd!snau%Abe$QItmPqF!M@k8~LX)32^Sf}E~l*$#E3L!XIBboo~ zgbGwC4K*9?6B7aounm--5&>*->5_s2WIjoNY@AQ=DTVI-9W z68!DJ73pv^^1t8AS#@RFY`?fqzZ)E^t4cy`uSC1B~vb4oj z$y&(qb$bkfcE@eLo@ubMWO3y{w8IgIbQV|d6)gI=#gzk6N)}++;;IBzasctkwvAT` zj57yhj<#u(z)B5zmWW$6JzcT3;ucahu<|}(-F2cE=8mS@^3Bn;Qv@Q_to0sZWAMp} zh2}?kl*d_4ejtKYHBi&%$AH)xaOcMSLA-;nou?(B`oGhSgb6jpp+dY6qs+8x><-wFyMm?E!`~8rb}@x`?R8te6kqD zgbtL4QCG0zc%kPwaX`*IW#N<1XSP|-r22SHWF>+<8xswPFmM5gUhpiH02e@ z14yPxn=ucxwMh%?VeK`Uz@ptOVpvDscl|JzHXY5(&P^OhMocSx@^L&pJ-ew60rauB zdXQPxJl6tOB}<IN;YR$4yk#q}I?=wor^fDi|OeY|aJ2R5E5SmgHs zD;?;9w%Es7;P0&hxFs#F%5B`o;)(-24&1V530B@QJ$_t#fVE!@aN^^%1Xel=#aqU> zhjf7Et8H1cCB?U^2WHISB=6 zT{9r1E0nMd1Iw7@R1nlc`M{kpZQyg;u7ocwAB`dsfn(N~OvQlTtYzg(pp#9ZjQCXs zW`N1Zq>tcQUdVJDJeP9W4EtRU0i_kdS}0kKCD|WH<$$tqwMTqFOG+u8WY!=maZROX zwdWRcT}mNH7C-fYsm8Gv`Dy~^(r*CBEllIk1gt>@3T;(# z0Gac)5L{3i0Zh>$eefQokf?oZWskvdCbc);3$mqyDW605CQFBZVjOJ+O?o-fW9ElN zC&!KEKm%RwuNo^9nMpEW2nQw@A*hhQ^gtsk z?+{C4*#MY|FvdA--0(3k1RBv2Yh-1Pjp29lfav29GEjo)GNK-afmsPq1U$uOM4N_0 zM!*^)h6h&u24u@{cZ)Ds0re%(nFAp;&E~PP80h>{$xQ|Stv4+^nTKJdtBWv=+^L?` z)xq83W}`_1ySeg~7+>1^-FS5t6`RQ=aUT%lfoX0LQx0>0fn@L5vQ_7YXS&_tIdJDA z(-L^mq(O{l*7Ndk5TlmY;TG8XE8A{>AD=x4|KaS_Mb~uxjwc3Al&8u*FXLoHCYAJ&S1(|EA*Hr6(eR6xc%`&e%EuyEpFgbRxTtVS}pcDpEGZH>$rUHaeya+l`pqt zDcybMh+CVLTw^-AzXzz<+uBUrw^p_`;}&_fyVN#H>we9nbub;KjIs)mfhorWrm-y* zkR>H?Nx@J$Xv0Y!WPoaVT_kL}3{Mx}b90B_4_1!Bh?O_VWiTq@CMfqpg2tG9%fj${ zq!?if<>3KAf@&b+i36Vi1^CN|cTx_Q$#S_{iLJ#v67JR2_Obm8YMOZXD9Uoh66Ik5 z!8NNZmhxw9VDo$}aGd}MAeQS3MBG?$OHD_4xJQGmGch!`Z96P4mG@e`-bgE>f<9*g z^alRmWAwCBvwS4kFwSze_M^^Bx@puY8@`c59%_N?Sqadc3HcJk_S_`H(@WiRa z0QCu9dX5~UepEn-lv$Z9S*KwsUHB#qQpv?)*^~Q1$V4y^x>2KA)T_wASW!;NRMQ4NVgOeY zcV;h4vhrgSk0N7`07--G!l$TB3 z^`pL%ebUIlKwFne?k1##m}LqG?iRyj;gT|}{WVyy4s>aW_>WwkC*jzikljRXcKd)B zcQY4%PZg|q92js-tDtvxo9%9<;oX9ZKX=E~wNZ)h0HC)EV3Gr_xW!co!07{GaF>MN zZvl!Dh~a=M1ooW8)v2Nd9RUgsm?;5iw~4#j%78*2i>n`bQq>;YDOkXr$* zmeb*2WeEi7V{zqxNZwb^o+Vg0!(36mROu_{whqBccW+l|>~IUIH`_5$0xR#C=3rbI zY~uI1y*yf|+;>NHdZF#B)q(<#w{gu9k6W8L*O;%ZEfvG@a(|}+YWB4@<74{qVt*LX z1~qq+8=3@K=$Zx2BA20l+(7y|+v<6**Q8yY8AVi5^7r^PF~2x);&TMI zaFfWYV@SB>^8W ztafsQ#`vQ+Lt-(Dlg>oo%0{p(gd4>)Y^t|Dg%iRzF<3|(QE-_7fH+2jzp+4ovp76+ zbAB_Okl*ZNCxzSH05#3vYH_QR_UDdNazDWZM0p~RtbLtAZPHx&T@Do7rA*E}afUG= zIm0Ri@XbPfKnw?#;Qd4nNP2lKSM2R=)A@hy_yBxy+cof$Gl#(45~k^<7Esw8@7y}k zf?F>YEPVv{&?@;$);HHPV5SCQa3G)tVsPN3D+%6QAIlEu|j zJ0@;t{qRi1#oaita)-LJtYiV^z{;DN07|*GJ2J}WXfKPaHXj6dTpDkjC0Kb~3!EN~ zc{%WFwID#x(th{%0Iohd!(Dln0iuW49du7r#tyczqerS%c4Te# zN;{TMRPM#&NL0T#hDqJl)0LtZHYg0Kwb1+$up9)QfNI{m%CiSxdmw-vhl#dL@0k80x z0KJ$1zDwR+ENdJ0y?{=p^b8(O9MLi!FIS8s2@$wxO-`aw$kJ-H?{-Nx+O^~ zx-{?=h$&pGJT+MZ)MnZ-v$8TdV9e!0O*1{A)_u01h~;-0Y=pVIu*89dw<~VrZfA;o ze-Bo{mEw=jT>-ly0CuJYw$=&)1iuICxeAEE-4fPZ{5^1sx0DR^HGM5b3P!N)}fRtVD||2g;OO?)9;_ zx|`MMMF&I{1dBdkB~RzkDwx#mrqhQR14R1ruyOIoIe?XSurN;-#*XWAte10%`FsUn z<<@3TSMs{K?XSJDPaUZFa>YerA8WH~r{>^_CV*tFzluP0TQ_tcS_7)jhTK6GZq1WK zh>|>NOeSiS_=osS9Ng6D>*wi-?P--^^9NbdEVG}SJJinK6L1PvQ~5BFkwuFrn}H@l z+{%S_twtCr<$=ZjP@xNW_%nuMq8gSpy*G5=lq{#LR8<(ut^fc9{Md8=mC9+dvTJ@0 zPgMu2E9&S_CTcUP6DgQ^>AZ!QAzeaB*ILoW)-ahG>*(s0+8hV~vsSh%=FcQL?3^LtuPOjKA5x0F<`eb4)QU!e@Zj01CB&Zn7$j z=54KdR{GwRZ*9G;t)V&kQct%O))wQ(Yvt4hy9}6;?y_PClNZhy#oR`PQH@cETLx&> zoETXuxB*bgRD5I8fiQHzD7uV+O=#7|E!1!zg?jS3Vx3G%kh<4IAN01^by|pk2x}R2 zl7+WJN6lloX(@q3OQt+^#+>69#392fEczq71j4b%t37-w{O35V0r8LUvQ8{#;T47M2`2L2eZ62gf>tq5^Vvtl# zlol%qfe_2GXB>C}ltWQ4PDvOB>IBKr8mkmJO7Ksbl#q@%m25$zXJeQoWCNrymLIsp z{QMuUAC)yJby9mN_|T*x#Cl;q6fdQlb(WzxB_)<&x(OTVpUR$e8oaDF^%Wj3XYz#i%Oq)u&6eGD|v=BMEC$_jmb!bWh5 zSId?EIkIdyu$A>ZTAkq<#TZ9^P(piN;_ra1ZHZVu9CyjekYPGJEvsrII8xB{C~>$s zN6XXT&uk$+e`X40=tCury6d@qFUvF?ie%!wSaAS&!Q1#t>x@RZfL#1JpYvF!08-(G zgq=XjBMlPiqG1Tj;vvI{Z`^(={oF@}H=PWVsipzWzGIn1KDta+R=Kbj0y5=cFpr?b z_@HSvGTYgZNNpECM*(=lzF;i^B_b1W3)~8iHgd}ZBFlJr>}#79#zcWA2|=vB9wZy? z1?oqp%#ckw88AbuY(dI}fm{iO&q$D{uWjVk!gzsdd3iXIJJ6*iE|kmPM9xxnGg%Nn zI71-DcPan{2RfcQON%Q9V%#Z!j`BTNH}U((3gFCin+^vto+*@vgBVLK*i-{C##vms ze0DIPqhxW#fe8n0%@@F}53o9UAhNK--ND+%fm`c^FdR&(ft4J%s@*Tg!OF*1YoI5$ zBr8~4wPXA?)(_8}rNxy~JKfQA-|5D|N(UakSGe!ajT>PhwbpGRg_o@>YPasjO5)@H3bu-b;aFP>RHH)}KA_s`V;(y8&*oEsshP~eu{;(()H z9~;3NG^PQ%_eEOX=4)!5Ki~>fE+-*)7QR=6yDUADZ%e^la(iF~J~w*^er5S>l6NBj zlVnUIl?|obqjbi;^Kce~;Kjv=q^YqoY|2t81dI}Nc?mMnj|-zpvm(l4Ra`66!E$1H zKD-h2N&O=P>_WfTLVjFHfGub9DEdbbf31u!+EwLmRr?zYqQg>=MF)lNZP=NaZDU<6 zx;qAcZtg0-u07Mv)n8kFr+A3P(MNyaQ@+jS&zy!AUwH08>Lxoa2P^}!GO_I&b*M`2}Y2@YR<4Se9{ z+u+QplknU#PkHd>`WtVC>u&r2y!FOw@Y>5SLD%6<(=@)nOF&Qh#uT366Q8>^5UkI%Hq4*FijCAeF-{W_VEhJq(0}}*W zR#MyvVN+U=6;w1;6l85j5#47KI}L|a)8rc#`ufEi0x zL0TveHm>O9-h{P5?xt)4<0v@_aE@P=X>$R72qakXvhnl*uIs zzOgAU-`_3cI4Mlrxzo^2B^ulfY)#@P?)ay+D$@dp2G-~^e0RS7N5i@^&?X>aayfq? zzxxY+H_=$-3jgmFEVp(ki>s2`xIPwF2hA*8%fggE3}=OLFajOU#aqeJ=OG3Hz19L9 z?-Zz^y(OR}S<aNUcE6SXWAUw$M!LnX|-bdz}l0O zD5IgIxy2X)X%@!1TKw_ZE8sWwJ^+7t`}OeibBE!-*m*1br#o&ghCOh_!4`Czg=e4o zwg(pOxcfuC4R`O}3kMD!O5wI`-wsz^bv10?vD1S#J9dWk(DBgjoulpBcfz4752tyA zaoleg?}vW$Cqn%8x660;?mcih(CpkC{MhHd0B^tXIvhN781BCJez^Dk2jSB{@>#g< zh7Y80u3vuQ3qKDhP8^3FyLQ6^4}RQ-|A9~aFue8pYw)4_KML1edxHnaK6Kv$@W!hz z!)Jc5ddqD1a3CXa}k{dxO8*O!(ZO8L+1Y_$K#bL6REb*icvLr)F)fZ-g zIz*Wk$*S5L3V#-JNP1H44p^3p(#{WpPDcL@G|=Tr-qoVlIq`MG3Lb!C4an;yHYD-D z^-zh>eII_e*mJrhv9vc`x5NKn)tBXz>n~`Z?;PfmEfDvdb zwa8GE$|3Tg!DATMmSSloZG7e#bYFeO%vd=AQab@8GNV28x^4c~)BU131@utqeviGmB3HMPC!7!nh)?PJ?T;Bz$GCDoe-rG8Gq zgn0x5Z9U?G1_#6Vcm9clmceBgI<{q4rYG2?-{z&@E@g7=iPNW4k(^5%!%nNa@wy6| z!|L(c76?J$%2`~MfCHy6pN>1dQ@ocfR1USk)>w$odSxU1GHdX;1k^gqw|io_-B^Ea{p_vH+DDTVpT+w{~x5%l8kwcsjw2~t1{z#@gEbgdR#wZLOd0!$c`0$LB@q@SOhJ=D&( z#Rznw{A9AEq!b-QqrXN zEFHu0q&&zUOnR&eWl{b_5m$E!>py(K&x2Z?zg1;0Dd|)%16IV(8^}_V+Pob~gqDNY zXHW<`yKOt1d9S=KT;0yoU)*^M%qsV8KQ?<1{^r8>v$fU%VMmX=4fFH!Er7KH-aYb; zw}hIVn}wab_P{%DzX?l=3vk<=cf+yw-)}*nhu~L#`G19ved06l2fz1QE#PyL2Zx+z zpu<;P1552(z2k%Tdh4o>eC!i&^qsfi@YUD)&zZSxu&V`+?)}JvaO&i7AO27N=qs?Y z$vru&t**hBe(j%oj}ssN^pC(3k39_UzkAfT5qG1vy0QZQ{x^Ts*XO2NZ-zPg=>!1BBr( z_qG8OLC#hC!a~@`N(U)PZ-$dLg@|$TG)caswB$Pq!=F>wvJ4wTroD&q=lPM|5Bnd} zl>5|#bnrj}U8dBO4!R1Sf%pZ!-rx%!G(R+kC)r zBj&r?=2>Xr1Qn*~q=?T$3PlM~HN?b6j#zA1x;%L~xzI||ND>d+|08Z<$?qS5O1(65 zAEBoR3~GUK6ektB@8FjJQ;No42#9s}$&Cu_ZL$2ap|zDq%#d*!CJlh(Ix-X@#c_Qw zxLWK-(=)T1%H`H(A?J$B4nXUcByyj`1wlzAcO!glF2!-Dde&A4kZiM2(@am)ejxVP zNP!Qr>AM5SHdCA2!IbpQI;UiP;sAjr@=DGkrsOt`gHkn%D-L4REUrGn6#d^?8*g#- zSOvtmYf8EUHp4pzE;D7h2leN_W1Il$vAl1ktfA73@Fl7pU)RR9?dR@SWS zK0L$AoVW2zI|1+K)`NvGPAPrsG;`%yaB1mWbnC^d#L;TmNf>^r|}Nt4^-u3|tn(!1@NUOJ3$&2=|;pzG(q z_!nViX}JY)j>Fye+y~ot?(!B?J9q4aJMO**zWRH=4NrahTX5u^H$5=qfF4H&t~k_! zXYay8AODmu+pcIG=D?kuJ9f1I+af&k)Z;KcJq0g)_c?g?=sU1|`*zs7?*Kgh=);>H zAampn@XpR|gP;2OFTx|={8|h6z2(=X!-ubJL9SOt*tNBF`0>yG3>pap>NGG*u;KIhlMV0djw#>=4(cW?krmcgj>_}@SS4YZlb>73Su{v9Nb z5m}C$7iHg#RI_XSfsJcf`t)lB<3Y2fA|y%&sW_iS1r%#q%5#*S<*c`UVAW@h^mH~Hr0H%0clkfVr^1SFO%T7or(34;E! z0e%}9#Bw9kZL{&ig*}R&w*!@wCKYR3XI>f`*~Aq9CwUkfEl9RD06%?bs+snF(Fc;` zP8<&wc3YRYGK+uaC--uTvRXRRGt=U}lYuq|xs#xiWZ_rP>w4lt*a`ld$=aHOTaQ#h zDd~Q$L=Q0+ZqFCoC_3UGMjwl-68PXOuJ}Dz&sNIA>s7i3%Yhhpf0Mfls^pgNnpR24 zT|bVqxH{2-RxcI6HeMF@-nkvrbRBc2=d6Hg_h2D2Uc2M!BOA21sH}7~e!6xHSh=?at+<6$2_(Bqft95`=is0NS5Mk*u+jsXw!A-$ zbB*cfe&x=yG&WoteIVAq%i8S2EUjlN;OG4uY+OHgSBs9qJ`iP#s1OK;2XeP!?jV7a zWpY02a@v^s_P>(l02H zHLGs|xcH!f>a+Bn7lEUdCEbs1lfrN3-mrA20BNnj_d4nOA1%FJ4DVbge(eu_w*|7k z?SY?t2d;o;zw-oq>reg&o_^vnc>cMklYZdfm4{)W1;-9ud6fs#+=F3J*Z#oYJ@z~Q?%#N8G3RpdibGeyvG?AExw&oLdhEN;J`ErL)DOYsKv!LJ z9en<0|1><>0%UK!{;GfG__2Kl4#4qa$GjI4M^_%c3V!J7qug|>PjIEDDaEYpf~`TB?th^zq9~K*_FF@%$3lUMP{IZ2HLdb zJzkA07|m})a;!h<(79Vgb-k|OXK~G;!(f5;Gi)8hcRBwWa=^Ssf|cP&1mOspZ|>e- zO8m3|*bv}UUMuB0TZm)Eq}4Ys=*Y`f%EjN+!nflg0ZcrL2$Eo9)5atVYAHqn)TD`W z!NnoafJoI*02nuE)*Bd!C*h7VUPTwJd`eL=COEVVnCyg!%+4nFh@7uaLJiA3wV$bU z0b0jl4J^5Uq&ni+!jO=Opq~Tknx;v0F{}o_(hn1C1hV5TD^z%IM9E@ELj_5U3Wjs# zZU#%TzGRwk5$`~f%)l&eY2qjG9GS|_ti#pF#rN*(21~MmE-{tItK?PO$?Ww_1RQdU zt0&gRTV=ga02VZe@$CYr;y{c;CIC)-Ev`x+#&xYS8t*=HU_r?uje}Co_1Tevb)0i4 zhhWGX>&s<}tC@{iT-B`OxLd;Su9e+G3LtWAJn&ZoD?d23F^j8`J3(i0br&mh39NK| zbrS>jUK{0LlD4>dzT##QK~L9DZxlc&4putrxzfE|t}MGF=-CIXbmRDR!S&wtLxse)Z97;RR#UT{oI2$XsJ{N{_hGgLbsPwEum!=~Jz7^?eT}#DS~znWKJ`OC4!7U+A$YTW z?_37n@PS+4L-&0IUVrUnm_KvI>qb8I$7uj=SOUN4^Q0ogC2h;RhaS+u#h`|Iv^8yT}|lYq;0iHgjO$=YHzv zyvxaZKk_jzPuzXa{c!(-ABUBdW$&u;M?d!k_~1SF!SDUMf7^m;@3p|!9Q?!=e%9a1 z_Q!wld!6|&$MsKMBf`muHBq{ajjM@;i8(+zH9ZAu>JB$Y@-QU`V2e*;ZIzL?xe;Ns zD@6dVG$u=qQaMT_0Wt&9{V%3TSFFIG3mRyk%ZB`&WLCMq7HbH^&!`)ZaDX^p!!QTJ zP%tq|I();eSK~XiUg<*t34;JSWW@ougjKL*EMGG*V2!!N=QT!=hc7W^2K2h!9j}x( zkE2QFS&Ls|gmv1cTFzRwL>@1ckb|5CAHw6nufGl*1gTfdbQSn5cVTh6hjVwb| zN8SvP4?+XLHa5AjO46r3_#0b1MG~yLq7|8mH-y=;EP(CLFWLiSeqtW(aY!$;tBnrO zL;8TtPU*#uw7I*s8ilFQ#JX4=*szV=%1Mggmw)ElwPB6L+Rta$uy&0MK%9VfG@2MD z?p$fOcdJa}n9qT>2Jtnw>gsQ^kj%cT-H<3J3w%5uuQX9{4*!B&BPMFcv|1;n^p+;O#348wt$ms${`1a$PV zxVn>pgMBQn9_?XqRRTF2w{=IuLB?`<_+42guyTjGvuvEj)pF%dDra%U0k9I_a>LZN z1YDi*ciH9b!^`4;tv3olnj1F=dcNoYr^5Wu;9%+Au6w7)gO%JJVa?L&ff;@uS;abz zfk-uAnS+&2Rlv$Vt}#Qox$Dp}_;r7e`a2Nu=Gd>!D&@IRp4LHiA6X5s-3a+RL)QtY zCZ!gNK%Yt*6zi7eh`yPOq=^3x^cEL@F zE`^V>eph-1O1kT^K1IJXm3(!6rjoY^UufeJ8CBdu+lZe!KNeta+qM?4DX$%l-fzd% zUpe(1xNl}RY=o;C)o04da*4v1Pz1Sx12(V8`mL zuoJC_WrNsdOpd zSb1y%;a(yNXkoG#F&QD9O1H8-c`h+JD`9HMP=}a23R{*H44Di*lVf{hKHi08Ou%|^ zyInZU)TVMHwV6o(rUNDNCd>nPxMeAKsR&SVSHVx=$h$_2iW?Ph6XeqGa-rZZWpZ3# zmhacg!?}Cf96WI$$lZ-`^|jaeyE7jC`d9r$^}Bg?02+E z{F$iGad&Brv%cwLaa98`J}TTpmhVe?kh%DKyyD{TgA7!7p<;Ez%ly593rTHpRdP$H zEv}v`fE?3p+i~lzXDVRj-X^f(4y=5#;zDvqw2nL3f(+vNIVRkM=1ugASzeZb25#9dqC!O9vSbqA~0D}}qpG+0?1r+t802UsD9 zSOYa3^|3a)wgtNpsCHmv3A}TCwvD-od~hm+_j@&(n`SYLd`o{Os1^eR#AHCd^lRuMsl z$5-vl+a`-nVzmG6_@i;|_8kEGRUBVuN&4P1_uJhm<^Zx#9$Sbb_itU!qy{pADv1CRpPSdZ;o{JFm6vya1C(#=A<6 z#P@yV4Gbh4BfO(~!u0YU4$%@OL0@Pc;s!-zRZM_f0PZ>CR$^WFx`zBV)X4&LGmo6P z(!aa-d?>sxF|4MNm#L)NC;w9VvfTtjSuL;5$3&1UZYrqYPp93iOa_4`olp`EY|fI# zZU-?~kXdG%q9}IS;6S7wEYTX^X3i-GOX*uS2)s}>k}eV&sd~UDnt_|B3C5y_K0PozQH_*lL%F`tWBv-ArDu6Gu@|{}w?^y3ePo&(GiV2(b;}ZM?D>6T(que5ZyLU?%3TB3aCfR_ zZE&@?>BxaW>l3!dNdX=_zk!xy?wxasw7z~}#;S7@bn|Vu!ykS5ci^7;J_-j9T?OyF z^+so$J{DITl=@Z=@Zt4Q*@YB$;Z}1M$StlOIR}d??y~Va6)T>HSiK%!&(m?>#DVAv z&$&l@tdJMCxN-o-O9ddUkHytPtlqEr`>XOXqQT129aj#RnTp)r)9a^;7FQg+`A!9J z>SJ;B5dk=j2P?l<0eASFWiM1Mz?e(Wf_q43jdkZ3u+jmHH$)3MN6()nSn1}>o(NVh zwf$KF?HpK%K%~EqY*e1}eOzPS()K$7pEXd^(LH18?}%I5)!ZoZzCU00k&V1uKuTe` zm*=vg_s)R|PE!`B<=rxQ82w0}nssjGoNGGwyqRi>GB&p&b9W9ozTLgQ-|U399Z=oQ z`CZ%gk=h}#E+o-XVpae^m=|vetL5?}16x*_sNeu5%kg|t82(Hu0#I?29~;)vG;af* zFXZWEY2^75>1SF4P)d{A*LCF~>(G@a)dfVFwdbWal4Y0WE$1IT-QliFMaSNM4+fHS zA!P^$k{vzzs(8jN$ijE>oPic)(j8aXo5ofp4Jz8IZ0k#=W z4#3#HV>c`=obDf|?SO4Nc7bjAl+EM{e>0P7vyHa%Rv~9myq>Ns!bJxF1cw&Z9lnO^ z#ewU*=(}2D!hK3H3@}hlaE?*mAFpc?+XRK>hCJ!5SnEImX9cD>BUAa!%W1}hucfco z+ZvC#5vrB9RM)OL%X~dIXW~XhR#0j~Fmi*zK_W9YSr)}A+Su(@HZD`CMuwRfR1toTzA0e~*|M+v9`0=W!X&KYA<8Ku}| zsOHQn!>}|{spI5mOvBnWRzB93x3e*}AV7_PPTrsenN5x2?;~3qfS*1z)hb!gNBKZR zP6=TL@NmnMzMvYvTeZpa^*0CALb&OfX;@sG%o9zUncPXxh55-_<2ZwA7*FJ_9-VdF z1zO*3_`uEZ#%r(m@9s{L(fCnU-&vYa0^7yu7{1!Z<+TbPGy6-~KtZ z!fQL)Fd)NRZD%~#-~gq?Hq42g+hDhy5@D`r>*Or4+}|;?2FG{Jwdu@>FgKa)sVoj0 zZ1(Ji-KyT#Sr*2u!0etqFss5`V|S-8&$Rte3Uiy;pTc~@oGG^PwPsHW^JG)*himMv z6y{Hw#bTJfW*hZ+VO%%|<1?*Tkot3W4R+7u={S}V!#q1X%ECB4a<=US>hr0#ANHxT z%)q-XAh^6X@^{(2y>m7TvmdC>S6klo-9nhF+nkPgYsqB~2EXaXml_v$0@eF?3sf%e z+0~}AU4+@UK1=0o$MML80ZDfO^~2Nc2rKoc8+*svJifjfEJdE!ww{e;U;ojL6z2JM zM3?$&XA8(V3$wS{G3a*46T8~+Jj!K`dzu63`}e2U%6-q;;CGkLU77Co?bTIhMTUZY zO{fj;oC1QZU-}~T0~W3y>b&@ehp5@ zELAykU8)sgAQKZwx55f+Gui9nkZiO3_qg!kA=GsXXHgzUM(Y+#ci6sZZ=|l{;%|i9 zy`-ay*R2CxVp{jg_q8O$=&{4)p@hj8sYERu6x^!h0J70&&F=$TaZGCf0b5q+x{#~@ z)5ztyVSS)wO&*u7is5X<} zsA{H~XsO!+@M`;DZrcv8cbb&>bv`KQs%`&v-a_O&UagPfyw%e-KDL72Wrwy9D}Y?* z#XTei{XFgqw1yDhoAa9l$k%ynwwgj(ckp^A#c%O=bs7hTm7dkY*1~LrsWg@FC2)^KO+qeG!ynFP>uQ=3(Am_yb8(Q!_BXa3Z?qF-ef;ic6vve4UwP zZnq6n5(9A8WZdhA{4PIhv~%Y!xb@DvVR2y|UVQ$U@Q?|ZCjA!D5|<>2H0zPQj!Fmx z%B08z0lLP`l&tal@l@lVZ-lhccwE?X$*+{xM$#M?w)DR5vvK(XR^0Fs@gNB+A2;=W*8I?LY z{tlmUOEmVTpm@&L9=`A7>w*>O@O8Rr_d~S4>5^F;m^M8<6|Jxb+9)|Uor??Ob!@Y9 z!HwmhKR7#TT99mUezL5|cJJ8>OU}ww16N@5nJG_c{v#jR7)XXdTqDo1lMpe(6SOrg zEj!)&gTxCe0G}!^QHfX2F_D~d{G&TQ&!_f%TwZ7UzAH{w-0*JN#tt=H_+V`)6`C#p zf-7_fRswenC0*(y8%G&gbg`n~Zz)g6Dr9LI`B-gQakR1&$nuQ9ETBQE23MLGOxOvS zQ+OKODzXhW)sym169dPtp+POHgO`+=lsBejfun?$z5;JQYEWu33A900QedrTla(4j z;e!C(u+j9R!QXM2&Q)+9X!BBCprH5qBn`REup$i%>s&34hIMD4OHP*YK7r(T4tr&D z0hhNoUVQ~V_NmYKQ+4j}7F^L)t_T~;Kea@6v5mSm?-jkok3=<+A$YVp*m_r&^x>p-wrq5}YO zxESDi8NL>5b()=-g_RZOPMRx^<)M5>{JA527$3ypHL2$k`oHkB5SMg(kQVlRy{(WGwIzlsX`pHKTJ|qQj0=H zzBzH=ja(Q)3@d(94GA!_vJI?Pdc^^R<+3cVI3Pz1^b^f)XfSFt7y&XH1+O$Ic*n$q zxLK!RZ6?6RSSnzQgB{s`wQ0#RBnrCqQrQf1bBRns``>7|OR5){bYI>;oJ`}~T@CHB z6^RQa-AWz*uM!B$C-&S&e+2<9=&8oA~Do21X%TMe}J$=ySH^2E`koaF15 zR7662ro9qardxxFpx~{+-S#U6EuV&0hu&kQU#tLk$VU z0LG{0z<)|J>i&IH0lHfWu!AKC0&>1L;Q^7sECchT+ehqx;~n|h$e;6kK!w-wArE7C zGI~8OeXp(6mGnD-GpNJ?^=Ze3Yf=$eUZSyWEWQZ|aL<<}{Tsj)&KShtnS5bEZDtt* zYCv0fh0Yx%a4T0xh0&8XT3%(#84$7zBPSdAurREQMzxOtKJaZyGYEiKR#iO32yuZ= zWEul|kSm~dv1)l|8jzbiV3>sbfy@;27kOpraPL+|7t+dN zpi562=qi2cRdzIzo0~qp>&RVxejzX19_Z|-X{IM|KhS%qd^SBbeZdcsARsr;Km!f5 z8E7lIhBVg>#3~NxmB7=w<|xKDP_)(mgcKT zEoq88H&-x|@;ihHa*<(sU9P)pysR+jh|ZQ=dyaa5jPCx^L0&pHnl$4G@4YAjg9&?J zDl7pNMLj!Ts%(r$I(yEO8i6GsA1sF`VIMrtI&VyoF&zVJxNq>!ikO3yN#5hq70J4~(`>TAA*pmYHGA1Fg zymQDxiSp8w5FPE4YQ+17Y2A%Tm!)kW3q!w6wgv0={2hX3BCG|_ie9Xh%e#q)F$bH& zBWznHEL!^Gr;Vi4r%I05p{+7< z%%kaHB0tdOMg5fsT0o>X`otb?>@zdd(JjY7n~B^>(8*B*X=V(GGpE6Q%5XShpn(RO z6mrVGl@)gfBPs)=D=MP+zM1xi|G0I4R3=yMs}{Tg|CI7#2{=gzCK}= zWDQ>Nq1I-$UW=J)NoCHo=%9^a61X3M1jJGhD=6`9j9-6%Ra4oru8~qZPV^s$jZyh-&g}%`JTJV;+q$Z3=}-V-DTFw zYU)i566^*d|8xQb^oT|9$tECm(i*P>wz1g#iAfkN$@)>) zm@N#H6D|5f`)n1`;22jbl-vR70}=UHpwli+m{=Vw$p+d4B;{#5Axez%u&xa>&_I(! z?$qtdigTOA54j*ez(cxc4NNr+(0#pp4XptzlBdA$S|BEcLWq;@Z^(nv0~2J;k~a}u z@)|$y6(&NkWiLvak1W2l1{+6xz$eq8H0f&%H7>u6P%Y1Kb>E1~#u{LFHs#m*cvl+w zaF?UCwH5EOY2OuB4u@v8FgZDYb#)oudGq^#icSgOa|-KU2xro#8$a%_x3#9vaH(AhXKU7uQytWN+3cOJ-2m=E8L(Bi@=*tu&j zthK_$FrKy+=~H+7^lc81(Pot^A%c>NPV@}pWS~n&d=J-35dQ4!n9G3%8fc))lf0sM zWm!H;au*67c$(V=H&g3tj4!}&#ncOHYp!hYDKkup?sO<69n0k8BvgFVfHE6oE)d5r zA%#m`J9rSTtla=WRys^1O5Fi4bv>*7uI00lvi7C(0bq@5A0DQwoV91XJR6BuE6a)Z zk9zB&;5mcbx%q1hyiQ>xenZq}c>My{a^0amQ_6?XAk~X;+rY0;0Bd`t+Z9IVIkunR z{BTOr!iXzd%DL$>@jF~ht8`ymUC9a;^^;o;r+GQg3 z2PSGPxwxdsMT5Ywnc^m5@W0xmJj0t2l^-V0FYVb9Ep!8w$hFOxGbdqgZoBv8KG5Y) zT!@xJH514|ZbNBJ1HL6OWmWrrdS+_4+hG%u6LQzrCea0^WVrY;KQ%Qw?2!WvG|)uR zDBiz9q!pC%oiRD^Mas^S5){&RAv0xZ$0tf&$`!4)7BvsX%0-6=>9r6qQ5NQcX9cw2 zW!2xu0Sr2P33M67m7;YTUVLRrK}qnxB2_1VKNe|Dp3hUY1XH`RhUb1G~(?p z(^pd)0BZ9v0A=ngu6d=yfcf{WuRCzA+7}k+U`2UNmpU?RQ~yS+>q@T$wKa&34^VlV z!q{edNLxD0Ak*j1r4pK#5uZ=NaP7poQJ;h8Q|&lgA7rv~B0GWik$Hm<_N;SHi)+y+ z>GnqnWQUB;jnCNvB=z_su`bAb(K~`o`9`HbLTYJU^vI26Ya5G0n2XTH0aSsdjqK$* zo~?X0D!eT`=fvadvI68~2gu8BAy2r#GckIg1sd6Pq0F`>wyUN3xU#IT4Vz6Lnwp*-Tx^V^ zcJMAQExS6A5Z3mc2oD|Owr8s;I3E^q%={!*P#^qgp52pjXu`Wqzjr&7P(}9Ge;m-PVB0CyCU!1&Shbv;v zi7cG`dVV>QvjiRSJ(ztG2qg)z27}(*=xO*S)+(F$Ny+_|tXb(ft$(pJ5isMrdjQR5 zs(mUgK^%+GdN=?m_PMP*m-)%Crt%I7?|HngylZ99dDvsl9dP#gg9Xf%z$BO@0 zD%E`ee9K^hiG(MOT7Ra*7iu_eaFy_U8 zX3l}*hCq8DV}$UzwV?UNz?6l-A2!vHW@BP*SdVmakvdiigC=dt)Bq+;R1UE5_yWo1 z1ItDL&smpwQ8u)*6Kq$8O}!UQwF>0r<;n8lJJ3LSt>vFw7y^(kQb>S+Owe|hV$YvB z4Fhd1@+U#(7hy68g?OzTlY;Q{^en9UyLmPTx$-{nu}{Jk2d{+R`O>e!-S^xV54)_v z_g{Pg78hxcnwgnx!+rw3`Nv-sY21F-2jPuZUWU`BPr*O~4RrCz&DneI|0rB{{f+Q@ zzx8k7(3Mxg!7C5L{)30$>2E&@$KHQ8g>`d$&%S-|&98kGE(W>75(|rNf0nMqa@jEK z_3nPr(P+e;Y1vUKMWrGhMVXS7hY)F?KQ0jELZ3;LCBf8XYyCXdlU^C#0Im4OHi=pZ zdIAe)3!II6zY(joQk)uaG|uX)1iaOr)zYh#q4um)myOhWBYhC`6r5MUF<@1ia(GBy zS%#-~R{aKm0&te|+OnCrL1(^a*0T@ORF# zXMI$5|EJe7Jk5`a%b7c$CC;57UVf3`-^NG99l=`@JF<+!y z94J_;Y%cJ|$#mPc?SiScy_ zG3>eK2Mq0e1`-HwMR?l3$aON`OF;1+z`!-O|EYD5RalW`el>q$3ZGr^Y~dXg;`8S) z=2^EaQQ`;kJZ;CjS(zc zQHqke6arCJ;yB;|%V;H&7`~)@0tOZ)NALv-P(4{>AY&jCSU2L#m&`ZaB^FC(g|KDQ zGdu-JV3)G?vmoQ~^wT5vJ)+=lqqn2@)uj8_CT+1iTXGxoKm$z{X}2WwsRddeItn#X zn4mQazdHe`4>LT_Ko^qAdNt`fY$M9Ii$UAB?|_%S`y3oU_MR`>m4~l_GpA3(OD{ez z05V5=_wR4tor2r$yc_1W&9%VVA-Mj=n_<_kJ)VEN<+eL~xO?t<00tUppo>S2pZwkn z&%s*Df4jZ#x)0n8CypP3?>+wvoH}(Ph1<4$JM7-G2c}yg-_7?M+Hkve?}42=ceV5P zPT05q06h4KAB6iq`U7z1hdvDFgPbyLc}d>CVl%}6$zJY`(Y}h{5_l4&PNry3GF;aZ zZ0iqPo89-o55WHY2mQgEkA3Qg;Qj|c4m)@4jv<3A=6+v&&GkZRbv()qAGiez>iX_h$=YjRUVVpvFJXmdf&d?&2*E z0|oGgho$FOjc}J4y69^Fd5w@>lkyFJ;k^T0WIH!89ZZAD;}5>ZJb-~Y^bGT9L|yTY zHF6^u%8fb^T`nps)+^@a`H`z(@7}$BeY@tm>*4x#4sF}EJ*DgNy5i8`cKzC!(#CS& z{Fh_Ru=<+peaM^2fpx|2qxF%B$H%E|bJ;gd)2RN<`9j$@plEaPju(=gX9IU18K0xr zr;gJ8(e4#HckhE8yY_m8vjd+TxVEyg(#BtFpEd3Nw%>yec^X!&Z+!ni%H1gD@hCm{ zEMI@ZSelCNhs9gaw3&27t}MIv9%$QoKiGCWJ3hm;vHxq^dDOP^-UC;*{KZb#EadJr z4R--{(`J&%9Iv!@{~?&$vD=#;IIjS%jaS`YJ0DCl1N*PI%6kdeEab+sb3r>vrXuuHuZ>;&7GV|jbo%gXcFgZunq6R+spiv2MJL9k#6u^kEG^I8itJEGu-0ZQ zp#`!G)5UV%n;PR?2pcZh!-2}vF_}PG^hLw3bkR~8R$}zJSB~MizDftWpmNO!aVHQu?vp9 z|DON-;tS8isT0TH(?9aLEbO5cKzsMyBXIbtYg?uFGF)}-^)NplEI5}}mf*m_E8*7L z?}E49cpU~BXrPNnPU*I7+ctQ=ou5}6y0TR+ANH1=x8HS7D@)M2^UxQ?c*yu1WgUVTlg>{^C9KX@-Z@+V(w(>V%@^Yd`NNCGGzl;ZJe`sS2dnm;B*JqTrZ z4lM9ECB7mLN9h!cgF>orBL{%F_HqE?cb|J2o_O@(WW|oM(v??V3+r|ruDkvwANRT& zKH%fJ5Z6bb?8cjKEtH|o!_+{QaX`>Gu&FCm8VC*V~ zR`?Tml|ryQxg2gt4`MhULB9#$As~i>WB5KiZ#>_ObCAzR4fas};S+%#Js7)!42*2iz}zI6JAxtX#ZTTcBia`z}9L^gJbnany*RQcH~Sd|eA* zn-zcfOp?sc>&n`>=fE4<$MjwZBF?2IXEnBG-$4&Ju610e;@q=u+qnnkw(Wq;KnNyu zlY!0A$_^NwYuouyJMKpX5H*mik89_h?YMV*(&nJaux>>{pnHAY%Jn!d(1bDghwRe? zWC3|l!}rfXmLHxnG7UT|F2l1CEV_W{^{wP-c+ui{Es>y+KUJDWrLXrps;eXePz9f$ zBdmT7PzL4z3QT)P`aGPiyzg2WYH>Vvqm)4@ye@F~sZq|<;R;5r6`K%F4w~6w)vO3l zAviLMzeRIrsHus08K4al3S=^1&j4dQMd54)y0NT%yaZrbs>{e)(FSRbHEiI=&nEgv zHtebIuMyszM)~4~o|wbLeeg_J-3&`JE{aw*#c(G{PvUp)4K&c?kWGKqDh2~cNGwkc zikD(IA$f+}atyS2$O*aYYb!7*#J5lm1Oq$hduet_~zWo-=%+2~e?7$TVVX+0-oI-nfX$fZM=DZuX_uo4T0}V9L z#id=l_rlw6y$O5w?1$%{{SKTydBQ7-S60F)-z%@W8dg_V+Rtme1*u!39YF3*?7O*r z;`njzPRY&nn{K-U-aYyboDUj}!hK|<;N*8l=Za&ghz?|vj0qizVk?xW^r;Va<_VaR zZd*lhYot@gE-fv30P&jZJ^(-b6Mrfk)B)md4!7;>4jLT3`fC5=>g#WS-Fx@8&))ao z*v{R1d|!+jc0usyhNWi0LXAJ@q$SBt|*_TLYEl2GMtUP(y!kF>@!X%K} zhnyu?AOs5Wt?>ZCj&==2Ycm45xRx>Ks$6tuk+WmxKA^Uwy@dKky7e#5O)3LE<9#T} zg51MGp6e~YjP8Un554?&5Ew2!xw}hu@4do0NT_;xcpuRce%53M=;RlB6rGjGXg>vk~lcVzbEEtW^Pli z`-=+;ts-d&_U_#e_uTiO2fUvA_QUDDJB{sJ9liSf@A*0C?kl_Rfd^sX%o%?|`?Z%} z_TikXwx=I|6b2e-po>oqi1}^{jyb;np-+AWuDIe5eCNq;r}x+0cr!fujX&~y`ttIk zcU!hFe+KUR=*RqeHGle)pVRk#J{bNM#!t?w-C*|#6wd-rGy zM(%{wR;j;t?*Vw>J5RyV;v(FB=ZD~l#~vP=e+}^AN_EW>mA-3tVKs10r@av>rCXzM z_3BHtdT*3!W1&{2uC^>aA6HJ~Z{0h0&@}K5QQwecbka-syGLw^&%pFC9xpR57wI%) zS@UvgT?x)z(xU)qr5vAkeBR1=kNkhb>LC?xF6`XgHV-JcHRR3LUxk})xy^@jYuwHj z7~8pPmp{a_W9Kdpl(|CyJ9g~wK-#WdyW#COUWYw<_qFTVd;}IDt1IeCc$;7z*zQg- zI$}DRCfyg`RN59;{dNEFGH8&6);E5i)ufS=>rNbZaveXcj^oY3_7+fBUmsD!w$E?f zz6LX1yA}HR#ic1&kIG2Y{^4C`T*=G*V3Z}chycgN;zJ8xH(FYVpSeYW>0cfjQmUlHTRfOBKH(ROy;05-(OTp${4qWjS< z1~qXn2s&|~tqjyN+CCB{5WX9x%cpcn*A-q`kBM;HfQPpQ{;vc|CDa4(>L-bDj38g< z2*BW&2m=XNUPe8W{6$Wsv}9Q|A0XeGN_v`1rHp1w92k?H8I!kxX$cip^ME)A5OGaug^pxwnkbfK1x!lTm`6y8;&b<1q8a&si)a%KT50uQ@ZSiK z5%fpz6MAdtPB2W1PX^rot+4V+NdxB{O?(j$W}^yZC=6(Kk-WyCY{+b+HZasH9vHJ| zm4@yW4V$3^G`c75LfYx6rfMQQkffZ~ z&$M&t%%x?<2g=C_c?#CZw?>O@M6%`lbhcC-rl#THa_ zRtXP%{L^r(ZKF3{eL0oo_Pg(Gm9SIr*6Xjefa7Vn``-KE;FX8r=sR!0z5@qCXFDj!+3)yL@S%BoM#-3500 zT_5rmoK7k0!Z>%&FFyZ_4|nsecliTI&KiE-z60=Hv}V8g*4yFWp{wBAEe}(2ca7~- z8nd##PMN+M-MeF*A!{RwCvs8k4H+<|6?sBo3S6HCTb>BW;_EfF>FnH&s2`)oI5cD7 z|8wn0`2O-VthGw$JGZaGUw-)joLa|81F+WipY!IxJ&)kH=6x>@&||pLI-G-;G{%L7 zQ?3CCoXhW6Lz-&!X_p$jarcXH7Qihht*Q@xX7?KWwSCK}?(es4{KdC+z) z8sQRxWDXF&Tn=e&-?7{C6eZffe;@qc|H@y0LkF+$ZWe#>m;Qh0o!7hi``9ntA>qrZ zozE9Z9u+hznLSVVfafivk%=iEfJkdy1Tnn9PfW}h)WzH4x(E!>K>a@DkC+Pb15y8P zr1e?Qxj_e&cy3$xZJ^G#%d*O6UGZz*ZI9njDEBy?toB~YG5Wi?{^t9VnzPoHyuo?G z8cgDa=cs0C9?m$Wgvqp876Lc1Mln287E!JkmybzZX|Ci-Wyj5~$gpq*4+`xfTa6Fi z1VY=e8R_V${Hg45u=B{Q9Pxj#$z${em`SL$DJpMg1H>4Fsl`D>oO~2!wq-ufoH_}Y z`c%W^K-;$Of~CbXFwj7gMcRs2Z(aagd4{KHIccSYbHno9yGMp~XOoe0xv?;R3MPj% z(~G={NzCf*J*}X#bpG!7*-W&3#}02LG0ek(2D*G{_ntjo`Qj|h&c|GK_mdnw@|ypy z4-mv}z=h1&*==;F5^{HB_zdHsqQGPa_@Dp+^;0&Rak6vB#iu{A4A655cYjzgSpJ0f zl+jh!Tn|@Yb1gjn=r^!*Dr!G~(7R zqo}mP&m^^jREDJ#0l;pkK2q5>ZoZdzc3XJYk7U`$lW_pmXuUHY2N`d=U43#STokaJDHL-353S*}&}wJkiSaFfDYZQs7#yY4>i^+^Oq zV&6LJCO1#`LjKbSmi_xj&dk6KbL;StovZNWQ`_LhrRfC7HtqYh)uonC4F{Apu+7H? zDUbQ@(!8!8M9}+?d*>AFt843RIhND2(%f-6B0IXY;Dd9sIAX=x-S)%oDGUGT@B-{; zEd1t~S@?JhM&2|tf`?w+oj@|*MlB#Yf951yDste_;?ly{gZrDIo%bHNGP~<-_wHTr z7ykU8f&b_ie$E4Bj=ul>SK%kW@Czx7KZttzIIKo@+Lwa*w)0jZcQ5VgXe2D?{OZjC zC)DAK`5$%r?pZ_6BwxzGFphl}lpHi(2SAbm>f>l>V8lS_SkB@Yxxp12$6 z@+2b`OOrMS=-AUO6W&3rn;3W6nZ36R?y&9*bg3y{qS*ck#tRc$*~PAN**MTZ16|&9 z`qcS7*szxFr9_#dB*@b{rwDiJq)8jSsVK#zqM5>!mE26U8B2YX_xhe|tke4X2nfKi zLTT#mYJBhL+r{+ySRZwPFEv0W2MSH+=SHY+8M^3v0BIXZW1RIHes|Ort_vVT8rMFg z7x1C|zYY)}C6M!q%M@re>RFwTt&~uO#73nItRa8kKMQwxmNT5yDr^MjP zG2A^V1vunC8{bAAfF9Z8CNV!4ZQ$)UU-x&K9ew8=2yPL%^%_@5O5GCX%hScY!#gSt z^^f&d6&%RqUER2g9i`5*S_{m_*eh>H(}47-Ei|w zH;TAUmwTzLxcm&5Fn5a%=w8;Af2gN75*)K79XwO!qj8X4V+=4|SKJ>6Q{X%9>R33ei;osFwz}jv z%Tu9U#x8>M{~Yf?GocR~=Yk+k%+Ub+^db^s2CC6i%LLDE+a5%c2@wpoI&oL8rSJGV ze#!SvHU{w9jPu(*xOm-kSywaK|Bj`JCkfhB&&-$S_x?id(opn(RuSQOSgDO95J z5e0J26PEyp5T+#Hl7c%|C<6!?lRfLhPx3=K>AQPwpeRyHr2;QI<+qU&-(7%L4z$$o zX5(SzO z%m~P1&Qwer%cb2T(mT`w7?)jm1ZCE}f@I#YH{G4f;O#j5&6@a%jyP|>#F{q!Re&Fpd*D$T@?7MDl z1q!a(gR4Hhjt6&_@`%0*b8M}Fg;4{4`S3ivzd8lKe_|WFxzY%ImTO<`YEiBQz~*pW zM?<`Rc@5)bF0Ts+f*TP>W@m(4d@0E3V6;;Gtu+Im+P)5dY2OkYUkl~CVP*vXDbMH z&ifEJ!cHf*guvcg;3sAXbi(2*AqvxszkDoX)S6dm$Oyk$Ick9wiDD<=Cxpi``S)ya zS<4t`U`;LtY)q30fCy{>%a`_iS!Ox#QwCHn6U%9(Vp(y$)DH#-Y%{E$j7dvvWFXCU zdBI;SA9ZkQw2;=i|JJljg}V%Vpz-9CrJM0yn$1G9bKAou$!!}Au{pkAc7R&Q5SgK7Qru1^CLsObX*_vl%>Q^f|Qe?oz(=a;k(P=jLYN zfBDD148QuXf782Qbk<~d-EkW{|NM*a#FO7i;haab)s;(s7rUJ>EuA|ok)SO$XAS>t z3}j0+#~n=6w42gSM*)>;zp!`ceZi`IEb98xFI(J0Fu7d!X4EHsx9Srr-*p&J>C{NS zvmN1U@5TXi`ng<>>vh&tSj+KFGM)^AL;NHKXA-y|k&-k4#A)J4(eI&J94j_I8a&dK zAu6gsl+6M^m4urvr6xqV+7jh z+LB-DN39nAPmp7%hhz9gHYKi4=m0X3mf9dKimZ$??PjyIFkiiVav-9)xgD3>6n(Rj zyT8JZ*1;-q%TY<#;P0eDB&=at(ZB_8N4s|K_U@quplox|WZg$58P(Ev_ql8Lepp#v zgnXqkwIZ@~HyHpa9ZL#JI4{a( zu2dkBiPiw6zBCT7>0<@9QBbMGlhqW$XPZZ@d^IJs4%ZcTqj`0O>jDbTroLSuCF&f) zcM&V;C}`~F{BtS2nr;Ncb*EF&LG&04JpC980Blyaysnft*WJi>(YueenJj>LmCGfq z<;ql7#5vGnrBz4=E2O+0C7A{50ZO-naFg%d_{yW8W@?w!2!%m04vI)Sti$&YEZ+DDp3u3Rc zH3K)a@L}Q|ieXVVcx*NSWByem_os|EX1G9lBKGC{-~^>Xdznm!)-%3_Q97kPP?n)< zpVWDGlMbi%IlaG|LOlIWrw<)znjYmE7Y-n=L%fp=nKgo3f?_*akzo|8g%jyu%XbpX z5BDumEjADkR$|x{AaY6@4KVO4MoI%gn;)8DC225WT9Ro?gW59SOU9&fFaeJP2uyAejZ&ZiNNcoG`Lr@^RBc15U#*QJ9|YW@3+u)ddWLj8+65%$gJlob zQjCDRP{cN&wD_TDBknKDsot+nHeFnt2Yr`VUjJ|}nS37dC-4QtdWB`d-@HG=`*U2h zE;Di<%bJ(zuwAG>u?_t_m$9LE8?Lll$Lc7K>&Bq!&wHj>S~y(*$mE)iV}?_C&69H) zzjLsZk6A3EE5};AZ!-s}xoq3OW;iIky0Qo**OR02cIWH2vNV550kTw%)$y*4-CVuY zYD+&REBr%^oIBDpEf9Gr0WwE!Y^<$M4nXF}-)m@dPY8bZi~Cx5NAo7=&P{L*Zb8le zsH0C<1X~BZ(F+Iwi}D1u&PX2E$B!6=AVd2qF9T!;21FzvK)?WG;1U0A3eTY9S?#?* zB`WbvC7vn#wuN}5eEOshAln2)o}r&3aAZ`Z(v;PVAjUvohyMjI$g21;W)hb0H*JDA z@I>_tOOLe?KYhr{$Qd-uH_zLM_a-tuyu=7*ai%meMKK}=tElN|LXBcz!^;gU4fj2F zR+`F*gWbft!>B-NM3?E^rzg-I*0 z_@_S*!2U=;$^{l&@}{Dzgkjy;eAE~NlR}y)4SPK*H^ScU1b^r1WuSou8fa2zlw3w} zYq0P{%2uNos!9Cucn~DS!0#mc;Abw7pDn8(iB*0;lKOj zxe+=WU}+raHZFb_Z6uB!YiE;RiTbo5&ySx>m-B>cNia^6Kpz*@DSQJU6XFxdWa8aj zhQ({xZ%Uj0=4oM`JRJWFz>pDjkuDZZ$`ivH6rpxzEwaLawcXVw+)`%YJJjPl)mkttY&$*x%IFlSl5L1OiE+P5IgzWW~k#)BZkc zM;v4Y3KsQP*54ttwz}lKI1nJobe2}`C4BBdI(!cT%+vrU{|=zX8KvtK?9Qs1l+*yF zem2eK===FIC);+O?G@HtBjP}{h50jZsmbe5$KEw&Hq8v1KXt-ehV>yg?w96I=9ZL~ zfc*V{qsj960Cqai!PahIYlkCTzx?C0tP^l!;tS#@BN@U;@PR%g&UpkQ@-->V zWH^KC8&Db3x@D-Wb)LnfGE1_R=cW>__TCiU8x|J|zsqZG84xR#hv%~qe%Dk!LmEx~ z$WXViPUGRkGrj?V1ciX77YCC*tpRC+8Ie+o3L`euIv_?HVJLT_OPliNW!D2pbOla? z2r?xQFfvY@?->=8zZi#3iBVf1!`YZJ%F7un>~Li4Qk%t-VA3Maf{+{|!=}@wQ!RYr z)BR|p!989t8mtM*(xz1PRL#Daf)v%QOU}j zTXRoM%?|fa4m8j}6GLwAURiPb0GAfIbqJSPq~e?u0yUx9)N)Nq2U!;SzCr9KOHYeT zGOQ_n5AkeA9tQfCXM9+cBhNJ*O3#k{y^-`T1(n*P)I=Kr2m1!?0z~Oxm<~_#L4sV6 zJ`pIA3VsP*At>o1B%*+UlCp zg9XB8?jXg&>Ej+SFj4Vl)c)Y)LkB!KKw)`t9srD*hb*+A^uwndpCL@Y^)2ZnE%hG< z*uo(Y-k-TXZ?haS9JTWG>67pId$MZvcjFp?8wXx)3hLUVBYCU!O#<+^yTuk-Kyr3= zt{TRHGgDKIcV)S}v`O6dn~m+4mpi#W2>UhTDJ|h3VC4KqB32fGE0cbw_n?Mtf6YlUpe?2EL9VKp|MU5h#6Lne43lWZ&vvN56}&y*-99Ie6K5g*8o_b@mC6CI)2+i zKKR@~y$<2sbmhSjR$4eg_mWoBlNjol znxWd*G;VdriAI3vWHmG{Hdj;vI)-<3Wv~G1LkV8D!XiZot^|ptWxsZ4dq#SpC730lNNt2rF7blRg8i{h(D|KCG`tb2$foeH`Q?v z#wS@sQF*v7qtw<2MCsv;=}GG)*2}%hD?G|MW>pMVrcC z3;Gz+l+bVP(uzPn%hIKOz%r0rq3dr{{bD-tFdnu+_x#~ymaeR%d#$on8J2aD6wjLc zT}#K80WJ8X+f8bF=Vt%Rsbes=eOIu;@j5E^e&pqkwUuRGC+> zGAQpuZeb?p5}*6@9mgK1F`{WRfj5rUR#)Ko`$zme(=#oI;}!KL9GqWo-#P2C(+ij0 zdW_Sk$MkXcpKd0d)AG`SKU}(V*WOlMob}hT_|e>!(YYU8oImBkw9Q15c1YRv3F-X( zzmVK0;v8pt7OnpwLR>KtlAsNC5DQ7(^o(DDfOss0e^|Pb3Gl7jHqnyIig+>Y$Xjqc z1Tqjv^DDK<#rH;2iLbxc!q(!I%2RsRCycFxEj`0{n)fP~Ynn%O9XevCBz$yic#O+F zi63!+MuAaDuZd9ZVi(Q^Q36#uY;BW^LQm;ybj9b#Fe*sdcBgUq{)>q^)S$pU*F90HYn#S zpKI>|JiLxtORu{u)DB$HU7|981J!u_`^9wT%fp3q1274xP=|XaVD9_VmWz>04_tlrilIO>HHJML{ho4ieZ0cO~@p#=t z%D2*??mWH~x}>BZg1(E?M#64x;s@-c%!nbRGS?~TmljUJVmONdU56;-yeY3gXw|9L zVkx_l-Yb<#3}`;qWjRI=b%IJK$@_1!fj5pEXg7cQMEb44_02?K4IO_V(Hk>tGFO4Y za_?CBz4_aDvOI`6*RAL^EzIp;JR;|EVZDj}niSC#c*M9a#P429Z|Q&vPbtK;Vti0~ zaxL;{8NGX}aTTMsaU zlK2V$F2mL2%&vD`#82az4JJ?uPrOlgeqHHsFC(=$7lJbHCgM3Mr^g+f;_+nJHL#=W zRcagPO#f`&^`WyL3rx3A84KgObEA20bbO2tE`bOhr*B^Uf|)GM8W>eex0X-1M`{(c zmkX*#t`x;^`cun1;y}2Nk2cZ|TZgxFclWM&nU3awY$FgrCSN}!A5QY424(5+yc{#y zBZLgk$wCRdp!JOFF)8hEn0!suDevnhx^&yjw3*9iOuuUwrY-}W)8=mHX5v6Hw-+Fu zK;ph&aO6A4_o1NE$M3eV9}>O-3|rwmfaa-4=daeJ=*AqZ=Dn@N2(0ACcnW3Wz*J3F z*R_w8^2zz0Jgg35#yl_OTUvWBPLpk1n2+?)$pfGOCgaGG8YcXe046a3vVxk_27o77Ai!9L<(b-!#i4l< z!s2~yaq5zQ$xo+X`E=Xj#52Ks8lTCsQhuSFk&76G{B64-4NAa%G`JKjQ9GiB@iS3` zLW3hN#DvfCD$h?9I^WRFEz_{>Y(Cm7{`4;nah`z2rzJKg-p?_N(}4yWXfnvjLu;!` z>^Ff&VS6a8n~gf~Xe!F*T$Yo0!v=)?JZ>!x)j|H@yWrMN#?#?S&-8l=X9UlqiSoehdd3FAxU3=EIJot={k5X8j*7$UJo9BI09y8r##JJ@+rq~}6T-g}e!hP$dGQk!Ct1cBe zcYgW7N3xcrw$|g66t-Ns+{Y3}?iH3j<5q~aGoH|G0;qi~yboaOS}G@0l*`R>p77FbJy1<>$(fPlT54&mOv9dn{5F@@p}izJ(1Ex+@t|+-3owML1`~5 z;27zRbiZ8&(=eYAgF-1KnMyeb8qPkQU-Fh@YpZG9D;*LDeL&WH+_Frs^EH5s zto1N`1CS2?ldh5*0)%*wrAsav4d^{XSbr3+l%O(TxzBCHUV1uL%iHrpV}a2rfI;VU z&NNAfKM^1sSzEv@9N992kUye`7yX2OH+a3Kh&D^WNq{2Y%}2wjeiM8h|E&VLUG@ic#Vc(>9!5WAp|$ zRlU%tKJf#amB7UI0wwL3^t;3v$0QSH!QQ3k_{adcKx<;!jZ8JRzmsdj>6n4Wk-MW| zeQj_Lr>U8m8SW$7;#2~?=y`sxLW$9)Q#Zjk^vcR)onpEi$bn>&1YQbWz#@M^cTD*4 z>ReI`2P6g>XrKuo=Q?|3WicL>;DDACTD4*z+{H8%-}!$lignYe6wq>_RHoRiQ$N?Bgar7Q+}lyEK03ujn(M-BMtqON@L zeSIu(#Yd^Uki9RL-E64LJgs~T$vHGGKL6CbiVhcll~RJPcF+Jqjp}2)6egcXT*p!d z@=9rKb}r?clDy60Y~fs3F1%nw!H{lLdR0ejoAeJNbks<4@xyES*K9Cpz*CDW10pm(7<%)v;)n;y<{SJ$bm(w zp9M%KYY6lU>4x-TTiTExhJkcKhLth?u-SwhVXD9~1O(AWgGEO#nrfzDd36B>lGGGW zSPisQsOw}IS&}geRgi0Ui8+{>o`SW70dU@IzlZ?wOn032V%S56Njde3n8n-TVY?KRWxc zw(`7`rmZ~hP6uFf?IC^JYJ51m!RH&xcjLh5`Do|!+gInxKGc9R_O$1-^81YfW%V$& z@@``daP|P1vxc36rNz^bAMmqcT^d-r^Ft2!T3rbTE6RY9fsZ`!QF!^~mtg0vT^@va z_?v$M4?grUSYBR+E3P;Q^YdrgJ!D%8I(!&j`reE1%+pW7%E~I-a_epI*rVT~lzhMG zdJPan+ZvZ$O#R+SaYF88B#e=P}A4{kVemWvk~yxF^VFYIam_U_#W+qZ9Tfw70+ ztvBC*D-IrPfwLci?|=U#xc?&`X@6e<-+lghIDFOBFw=rer%s)M0|yTHHg~QhuW13Y z@3n32`eA8l3630j$M?-6-+CA>7I{9Rhdy$8YU-lvoObNk*|yQOe!RE?^Pm0f=iuRo zzX5mM^+9;(V?O}Lj~#>iA9w&(+Ohol8?VE4*Iws=s1JVV-nK1|z>Occ30B*8M~)tW z>#x57-e|+@-@m{8e!Xw|=bn8AE+$Rd)iDmhCXZKyfoPmYU<(l&Ap9y{XYeH&xu91$ z1E~MX*CL~I2_+uXpw1r1LJWa>&Wq>YZDn86WlyC65CB$P-&ZCDcvSPz?{qub!t<^? zYw7lR&fjBt^u0+ZC(_FpyuvLAv+48eNefpTgtg9}s#Iy=fw;o0naILXJ?VVi}e^unjRbT{{1 zKhQuIm$+3rkrm(FI9_Uj!^`2K=z#_rXrQwpcVN!lDRb=ox1s`tgjor6Sr$hg#9J`0@8WxaGh^2QKd0 zw+~)<`4#xq!{3Cf4qxTR{U80|SK+%aJO}sQ`{5QqUV$BL+a5pmKJ0D7I!`*gckhM! z?*GU|2gn>Ky1qVHmSj$T4_@jVNxzn1t@|}8X$v0JR}3qwb%Gh$5dW<<&|T@f8h&1*)kNn zvgg~j&H0m5U37iRWV?IQ934D(g+E0#(0G!k^hhw_-}Nax?!JPjf#iZaX2mh+!@9Hi zs4)g6iS#LT+LxswWp!oA9|mZe0Vo@2pniw?&SnO5<$ z)bd)h2`CFBg;=wJJ%+Ex0}V9LKwae476FB1LZ-IaDEB_4s;LE??%I({{n>ptqaDHLl>+qaQMN~|mJb406ojeJjZh?vI z+jqcQZ@!uG!99puRg^`^-1CFBAS)e?OS(N4&VdTSJ)Kr2s{`p5*)6+k$0P5&1ONJ0 z{{_7C(u>{-+yOGTw?NL~q5~Qacwp!IFMZDgXD@&MC9lif(Sl{)f9WMyTVM6>UHiIy z|JrM>gV$ew4c>e2U3lV&$KlR9?}m#>P0NFI3pjoocJ1B+ zH{Em#eDaf@_7;z>Jzsn6HMrxBJK#ru{Il?A3p_g4mCiNe8*jYP0%|9G-#qi3r{JD@ z?}HO3PIw^r%{O0ffwh-=>A=n>HSSLMwaL2ff&Z+^!?@6+}ESYoHfHGnP*!s)}pU=$Bc&78j@#8Si<{>BK zx)X(td7li*I3HpC&EMfr-nna^AIDAsGl0AU4K&c@Oipp&c({f6Q?RgjGKmzygT2vW zkO0ZJ!0C7~eCGC$*=;+(`OgS<_}WbA!0&;PoFh0+e^^mMa!T3w>-2j zy-V>hC7D!Pp_SxY=epDFkz5B@QZnz{wI_kImx@X6ZR*<7yYw5460jPq>tz`4S*&R;sUFF>1zngw4Ub3@7lXsxpW=+mTM#BZ*^hW=?a~#xLbxtXO>u_2p(ZP1fp2yaquaH zQ6~>=$`#{S0h)#U$=@dk=Er6gpkO%Y8#>i8VuL-U5jTf;_m{=dh;6}69$_6aU@z7q z-A4xbU=K3~l2sXwdJ`Lo>zO%_<@}kZmzHndAwKp4YZR70zjqFSIP}A6{X)$zSskcO z&IfT2_y^+T8G#L2*xhi$_3+*A2Jq>|8*hN;pMM_y>R+bk4D3C*aOI?`VOw{}+7y>)(Vw{ilBp{?6a|d+=jF_M`C5J4fKY z`|gFm_!s{iJo@Oj;b(s4r(59d&wHTEo$zsP1b*tLJ`dmc#>0LNIP0^&`*;64|NF;( z{6|{w><|2@s~`NqPrwT=e6LOG9-oc_=pK3G(f0e}ZQB14yz^^`|B`C zG>+*mg?FUEGF+x+S_aLz8W?DEQMhz_876}a$OAZXpC`fH0N!EY=*;O8USOV^+YTGC zh!|*~fd<+vsi*Vw^QJ}jF_`QsQ$jb(ZXIv)YAevJIEiKHq3ZogAo!jPR zup}uVSY}W<3ChuwF_mEzr!-pCzibgmgN9Z zIXn-;(=4qS2D*VWJEm+UfKBIF$^$CT0AMUIC%;eY$MhQ=B$_PS@P%1WVF$;5vTSg$ z0W&^Si*UxABv4IN$N&@K8t>lCmf{0sCrgCu!-xWh5!s~3Xswl{1vEI*L`tPHv9-b{ zf{9|V$NDr_&XkX3&s~`;!C7g-QvE}HM%4Z$f^?~XrGbGx%G-vO1;WG~4fm1tqN!#Y zmRA>GAW6<_+pcd6Xua>g55vO`hf8=LeDDGI(wF{y3s8Lu{>I<<&)~iH-iHr;=!5X5 z{?zB-$tRzNfA|mo5&XnY{5X8@gLlDy@}K;5_{CrR&%G7dz4v~o1=n8iAlX0u$NwAr z^iThkpH~MC>~8_DdAQ<=D?CVc`|Y=SpzHMMGi{nb>3wkj!Y_QW1W``I7!t{Q*om;O_D>ZzxF*!}zW!X!~iU?`pF z3-A5EnLtEw!?UUBDOg(=0O!p{&Yj@;(qyc0TH%Xi)j*T= z1IM<^Ta7q_h)lE$3wRGH9-aX!4~M04$`i0!86kKhylj~9CL%qfSkDsgsM;;#_4pUw zwmb>;I$7(}M+jh5WKb-vE%0OjpFm*0hSD>Iw%~!p(Sg{*DzKEN?m8aFasU zdW$>(#6YDoMP9ft@Z@->$_m973sjmz;uCnm*qGyG1pZvg7P-tKg=HGsvbA^_cv#u? z`S`Gw%TR18wCl_$-m!w^f=q@8aY>c}&<6vgI4IvaivnlWL5c$m+kl(}R7d>I+s2kA z3FO{AyYdd$(P9a z2qGQsUQzGS@u}dCIJhRQ&#X#=U0nilEY@5Q^Rl@+*+y%_q4RU08i2=X+UuMKz2&)( zJ&XPRaweyz^hPWYc=DuiPrLzMs}$xmVgh_0GZhw!^W_lJH)2bnHASyyDP5iqg#NJw z9tOjbC%GE`fGP1$s;m4B>bFj?G*(Q$iDQfHv?bSW+hy&Nc90J<^8(A^<+!womIfYq9JdFTKrXC>yofApgt z0XJ6N9U0eMcZ~Z`BA)mI<(VV!l@@BQAF;pLZK zg=5E#!7H!4;`92*NA7Ra|4s{(JqEx2>;D4&_y7H$dH>HJ|M-Kjyu1uw_`>Jl*M9BS zTTtx)y#D$dZMm-VE*Kr%dFSo$$AA2d7Qp*t8}FaOCqD5ppU0$7$s()OzAn^eI%8UR=n47xN?QJ zO9m=f8Ha}{QC{YH7^&o^ek$e7%T!ONoR<;&CV;iF9cz6-@3Cy<_oZ}nIeDA&XF5z* z_!{Z3yv%vs={t@KeBLym=A4Y%r>;6oZ9GvtDW~YV=r~#dNW8twyPQ|O>@rV1kI_0- z%O84NFqzO$7q$^3BCAzJaKuEuMH&tBnJ)Td@2D7q_`-RKkqM@ z9|*-qxhyFq7*Az+Po|OQMP;G3<-fzh5F9&s+es@7zHgTLmcro}l<8TOW?o*oPsueF zz!c{s=0#;FwUrU!dIjrCA1>!XvBttxUBx z)@=B+|Xocb^aM)Li0ppBCQh*tfk`A9rgX6mF^1E@jYeXQ$~7TSuvQuLX=h7)JzIJ2 zU_(2fHC<{~kC%d+&S~Ab!34b?6nHh`SA_JF?`_uDgp#B+gs)M!{)pUjaGuNAAp}bo zBws1_K};{MMYgnu*Y@@LeqZAcyPsp4r9B-W=ihDRw@#-ky;6C`{k9#?O8i5sf8M+Q zs{gVp(IRVSq_BbfQ+Q`2^NgQ{7^F0)lHkRKEp{4{GfkkW-pPK@lp0y&N$K!?T6Bly z%rFD_fN$13EM1i6el^VU0$tRzJsY^DJC- z)#3K@Ie7Qocm4fjk3asn&;RFt{%5_F+1I}Ib(jeDazu?abR06G%-VM}G_pEz!6%25hyI?G>bFP(<|T`Cif7b+k2i^6OP4)`w&h z*>6ata$sEEHnsjRT^$VhnCH(m=%LHU%gw`=`%;#tRxf_0i`Rwn8bL|Xj&q3SwJuAe z%5TJ)L+hq)(}wX1;k|4Folgj>-|KjC9LhL+Okf)PP$h2@U7va$GN1fi9;V-ODo=M< z3{XpBWBHcmHh)+8>`JRI(O$;n{lc1|!%#Srjgfrbk85k3LpE!NzG;jbbCgfHPeM3Z zKZ?i0l@v<=rSZ^}pDc5(ci?rXQQtj}=W9$?8}c&axPa=OqJdTYUYC=nR~qNt{X0+} z+P-6_zmCFz9N5=n;#`2j3I&xx(M`zSnsIOE>IqG%vzKuV7zW zi@-vCJ(!u>mb-Kts5iNLvR0NC$A+8r?L2^FXG?B8FZXEYtweL}m|3@UNWxKe$j5~F zZ`k}dmWB2Ia}X8w&4?N|W!= zrVIwr;I;H2H0dS=E!Eqk1VF??(@vkK6G**~ z7=orM*zk{yb-{F`62`K2jo)H%1TxL)$z21DxG)^^0~<~g7`qM&5lk4UPHy3J3gndu z+gQetyYStCTBCCW4?q9;&%vHOd*Gk{^M45gZ7$-11P8o0=~I8Xg&D<}nVD(F%`}{7 zLCb+Q54rmU9DupJyaba$+9eAVm2{k;4g3RuJ zwh7NEZmCUmUOX)of_=BpMVyz{KnsqEFfZ{Pjco!?`8@6Fi`u;4<$+55^Kp~+O`cYs zm*VEdIF{qSBuDZ3^YKITM*~%SEi={hC=L%}QhWrV=%g%&^l_d`WdVf|Enwt)=TsU` zeZ$qL6d#|X-ZKD(wzEI`=7r_EP_&V{pYMEWT|a+y9G6yC|8=iJ{nOeA<$DTjIM0oy zvC*=f&oukc`O2?vU+Z^BnlBi){|q#qt~huQPMEI0EaPE;@zrrZ1#bKzy}`LJ zMgTHeZY;^&dX3?7r;iOL-IvCR)>z0uDyW2&YiJ&CTzmki9^k3v)sn7<`&BZ#eA^N+>(s*fq6TX>WwsFYat{6fKzBg>>r!@U!Sh# z|>q}PZNt3Tu_=6j<*5t3*Huj-%r179H%8fkJ^;iH;l>Lbvl8c zyq!tFq_pM!LrQoF*5Nqf<4FS4a$FIW+eSW@?Ipti>pv@ma4H+9bpTS^=rO2;-cV0e z4pO+$NFN@|=Qe#Gfdr>YVP&0p9Yg;&Yz;GoH3G|<17xMOL4u!_g~f94G(n6}{anj@ zd6{^=P$&x&iLVR#Fc2?OjdU12r)silpR{Xv;IlquDdjP)92+TjpFH|dEe(8E%fHn2 zVAdl}nEU-OjY$ z4Ro&Lmog$x-lvl9%*O!dEhG;LA`L0a z<`dSKsUr6~P=B&L7T)RESy&&e$j*r-ZN&?2Q1vF?{uz>0NJg=7dOM~GC}X_jsOudI#jX5yR#@qdrJR>my4QD+`4NQ17h@%b!Cf9aH&U3Saup z%hB~*r>D!!!<6#UVN1^_{f4qJSwxcnGGO0g2U^xqDgT&C;mRfpP!up~l**;0p!l+3 z!d)t_VJEgFv=u?4@CMW6!eknNESxD-gm3&Nq=SH+X>^$^b#0mis&fswas*2!%F`xc zQ%Fenp2c)Sd|&~vU>5Z0a{6sjTk+Nz4fm1tqN!$jaJ5(<=Yp~iV>6Dv``z!si4!Ma zpv_BS?O@+Y(D84?TE+zsBG?_d@H)yr0BIqm-!~~OIX5spNb@Nl55|YX@f+HP`k#+a z-lw`=Jd7sZMxu00Bl5(sG#*N0n!6mNIl||k9@Bgs#NT?J$Z}FVIZjNPLvo(;wU*K! zM|`c+#Mf3TTOPhVj?2$^J^5!>93BSCTZ>!{mLt{s?%T$^;>{NUa|=SH(FaIqS%?a23;@?6m}B=O|5&vD&e2uJTIo=mfr z5AB6{pHn=`@~1t|T_?eTvY5L_!`;a?fH&txb~JuIPPv2GgWmF-Xf$CiL7kp*l=M<@ zEi&A)3*tN693bEz#;;0v^iAxs2u=}y@Bj4~a4?MwY;sGn?)}KBvdO(pzoR&MeX_+k zl1$;dDSYq2tYzuyIc+P?0mhe^*UhT(^(l+~ZVGvYGBlR`@ZYQqVnuKSn?`{6jPI}% zmkmCM8%~Uk`wl**yySpL0}qf1vf?@BX;pa*%O9VljXC{;&w0MIA(Pk_YAOM#Qhl*L z^gEqM#(xc~odueVi5Xz7mI}hM1uOc|Fae&sQpETOV1}Ra9d>~0KaB5RwMv#ryS(vi z$utcNl#{b08)$1&uArceN($Jf7@o!S|2luzs{=?j&?P5ZRDL<)JP3ju_>3z7q*BIa zX<}M=x>A9|(*XvOP?<{4=(#Kt@lG84kZ}wvlLowu2uF7k ziNb|e)Jrf2`$wMu#`GGH;EpT@2Pr~W%7>pU&H)X>Tt60gH#H6rkjT?=@AA{oSU=rI zyj`*0x-EJCONEmab))dW$_>SG5~yp0pjQKXBG_-I59+&(d175b)r-PmT}ZhJS-Qn81ihZ-d6dGI(yqlTm3v$qe6REA zlSe*J^Jn^ZS6T3Vt^IgDi0Z;slU4V$Q1X?y!@pyca?J^RBChnJfAn+>FDy7 z`k*!@_;dU##jEAtm2Ox6>avd;GhO2iKkH?cO31GA=(Nkg2j2(lb9SI}CkGHYD>4lv zX}(s@f9Zt;l%kUFrIPeofci8@>F|9}z60@GrX$1F4*zoAm($c#Gk`beK#m6-4ItwM zC*RH!cHn=C9RNkK1XOpRomZS8cbDn4U zS*o!5ti|EsY$09;1JId|t>k6Kq*IDpdTv1PA?5I<;~k_lrcn^j1O%W?$cvb}WJ&KM zcN6;GLPEPtaD4*6tkVq7mz@apAY2rRV%X$P#9yWdpuw|{E(%^&)`JQTT;Qg%*d(km z8!f;pq(ROSb)}$t+d?CR@|ig4*yORIQNtI5aSW@E%_d6Y(C5(zxO)?fZ=w*(JHZ;& z7r=i9hS9`wxD+4lUU?4?yxQsO?L#|c_+LFWt3a$hU@BF_2kiX+`xnk9sy*rD{ zVci*MGmr$m_;dP1WjTi7F3!R;V)o>z*IZFU&+ETqs(^d}{w^zm^15*4Iw>cln?Wph zZO-zvu?;Y-8k4QT9+?kh%zjy^D%TQY%8WdfiMyJxqA%#vWM!fJx%(WGDImFJehGY# z<;bmO#|tw&oqF3~SxWs=Y9Fm=r1SwKxF-7(>yG@W3`gHNuS#=7mzSQCi}TXhH--Gm z{azEQN^O>pFO%(A;km8kr}NIslIKg$0lHi`Sv99*K1mJ`7KV8}_4<&nEupKcO5F%WsK8@mFOELmurGJ@^{FFl%dWVE)PTmR%)6_NYxU*j;w}v9dslZl zeQ4ZR;NwxQ)iP{p%<^!hG1O=LjGJ#8or_&<$&DRKW1&yk^S0UGgczt7c~^_^jwrUB zd(Tg9-^FdLc#y@!UBRHIC=g-z=ZN1|B4kgB!^gPJGrTYD_m<@;<2jjiZEYPSxMoD0 zK(3M(Ur#iicR4${*mK1lxL#fv@9rPn*x4kRcZYYypNT85C4>WFqa{WlEj*13`0YN#!N{x%G_qx@*2qKhY8bx*75Yvn*sb3~g*7!-ke`E1TNH3rlT4 z*Bm3DN#pBjL2$d4%^GgziRiY)aP5B$xI5#5C7&o);&zRiJOo%up*PmBeLjK#_~}D# zQywhta&o7~Mgw@brAeL&)XYIxNlTk{u6z&A9D_E@rOih(vvaV%HktRt@jWv>N#Et& zP4bgJCq9N93NmFSIw^l8Gs=}#2x-i+TtZ|=X$-z zDgHSBM(<6!e`Z{o7@iAie5~=Zhu>Dzohz&<52N-5{XTs1xH&+n%bvTX%)^&~m0Ddf z4H0;;2<9({J93U&5NbtFoS64Y@+x4kOxjuPWHE&Z2(0`8FI+R9?OW0m$X;$P(6 zCuLau41mg1;!jNDK(fV*U((b}IYm5N6msq3+If0r?!tKUX?Y~)?PYak!5`MY800j# zp9$W!cszy zIS-W9CgP7ZiKWCKxFzoZ<_A~9Qb-;-0IY(8*!pDYPBXo?VY)nzoJ`?2R=6~#tqQjh z;%Nh94V&d-3h^vt8^YK;Yw4Drm)>g`#=~5p;r%hr=uk?r+p&W*T0UIyaQt`%>)dQXf-ylJjAq`ZJ??W!p*fCjhg|r+ZorbfG zKvzu6q`?|;$rNms04oc!y);7%v3)(h*tSUmv~Xe=o8t4jWHxcBc`R=fZ%MYgI^40< zho+{dTPA6652wldh91o0w=ChNTeIqr!i3y_a$qeypKj;U%F1MdF`Jp3P`lbP>XS{( zsvV$Hv89#BQt5;jjfaz^Tpl5XA&5NCr6Z>2(m*8uS5gvVjN#~T45pncgJl^3Og49^ z946iQ1fZ>dWV;Y3C>dJI89pevmoQ9OK}x^8jY1hPA8aQqmuw4Q@g=9n-}6(zd~L!q z^1HTzQlGpH@H*!8_IUBHd^z9vTX~GVng9x?#QOJqoG~Yb)BL_;@bW35n9R zVjl84@Z2-9EFyQ6e9SNz81glzG;XLLiL7WRuH-AXGj9g~-S+95DTNPf5$6N6Wup}Q zWx4^N)_L;xkky&iV>u9$9Az;ah%~gNBUfon%K>T+;p?ET50x?3Mdeh^TZiXsGhcTHI{)M>$=2KbZ`+PNzI#m4 zLK(4T`LDP~8m2VH=Ro5$%~7VGbD+g^`{(49<;7E=`9RJWl@!$YTaw&+we0Gik4E_% z&}kSb4%YKdQ*B$%ZQl(S0<=lg@<<*WYV%rLIJIf?Jgz(!3*ecV-3BvrJ1%HDJALx( z-1Zh^o`uDEH=Zwi-SB|Lq>$4&IWSUl!o;haxCG!rg~mFlO(#PiPI}+-Ds}^irHM63 z@{aN|-OBuPDardakoTrFOyd|jkv8T?+$KbJ%5 z<&))TFo^%NBbkj&Lq#$j={*iOTNGF+yliAsC{WlK6e@3hZY1Gr(LSDl#Hu zm;hGiPm?DJdWw4{P>s0tI7ET*jo!khz}xy(u=GPRge(+bxom7lE6V_p`3RPFhLyvl zl#Hl&Ob;h$)92L2K#rV0TRT`xWn`wNCTg>tM5+lET!7#kHwnbK654&8nx2BS;XblW zN5Ku|r0)m)m^H41lS*G4>y|OB`hF)0&%=P=waRmj;zN2*jB=BO$9tPF&tP?ARM~kx zvJ8m_%HD-M(S4)76O8I;#COaK*NgDJfyj zWLRvMkQSAh=M`K8mdapLep~qyg zY2f$)R_1a)sBY-UV1IlVe@k8e#@WJcn)nx;cQl4-eyz>P;um(&cpICVzM+!&-1#J)@S}4 zDq--sE#zCu2Luo!^M|ZX6d$rO)cej<(lx5gy6!d$qvKI~>NIRNE_nImUM}a2a{^l7F_eBQQBWeoMc# zj@^H?AP(uIeKV#@Tf71CCL_zju@Xv;?f2>5`ncn|H^~dwLOk660VJqoRQQ}f$-mo< zurMY*&o|Yi61OY;uJlUpB?cuwO(oCpe%fzlxCtc;#$?GMAcXFJ0)Q4qN7%GfbGyMb z3L{8vOs2}F#2kR9M1T(hdHHEFs!n8>SQ*p%#BGHUiJ+KCf_ei+_X*_eLAbmklj4=t8+TL5vxz57VZG19DAI-!>gnP_FxF(*uu&E{eN%450 z{h$;b=v*kc&Ks-|w;E~25CJg$DFh+VfS43^NPw{(a9$livVk@wktGqGtZu?7G`;UD zUWD^5@|}g!No-7mTTnUP#k=)jOsqu)3l#x?{1CD=HZky=kRP%b&`LfB9RX+h#>r{Ql z+K1X4TLB7nm;7&@zI!rKzgY|e40z%pLfUu|GRkg+K8bOVr!1G(i5&M_n84PG{U@4ou^GCcMraVuQ zi~-Q#nxPC*I#Ln9iPv5~%UZ^KN11b@c0gAQA(6F#n`*VQJ))u`~kt84&c#{%2C zWcYF8p*Ci^%GD=b9bT2Sn#V@QrRnhrm9j%e+5q+Xk4vwXf2nv>pzaqpr?} zX+fyfwvW@k*uHC~XEGi^6W>QTZ!5#_J*Ua!*Y)+NLo;;?9OrGwUSNHiQ})k#z$z!- z&MPZ0i|t$qgI-*wy?3Ow&M-*MYOkyA=YzbQwKiUt}+z&fX$IAP`A)hNX)- zc)kyDepdFeRV5-UfR{t=ZC0ei^>gF*W0`07`w|aQ`(FB8+Q)0}$MIAc-gbo3X_WE; zDDzJ;&NOyBWSvC`g$_YPR2C*X0m79?1%*80i!<(r-bE|fI6f(e1Ym`aoCX#s^uG8YHY_6Asy*{DxKDv%|bwl1@PMq z0MUBQ(5Y;%XyE0IN(%p^-OvZ-u^;tWawd(u;$s*;6Gxhf&_kd!BnTi2pz5&hY(5(L zgoyZ(5;%-uat0fiQZg{b@PD%R9)NZp)t&g6`|hiH>XOxqWm}fJ+~<<5W3%r`S<&dhi3 zmEM!|{Ow)4!?bH|LBa1gzE=7k276ar4{JrRQbbfawc{-K0}X^eJvyp*dij z{9YiRk7gIwVLoViix`XindjWhROmN!T6!Ld;bn0IC626sZmIywiP{*Q zT>ygv2h~_T4)q1VbbR7%$j>zuCFJbsnV|*Qc<-o``H)h^^Z;rtqd>b$t+D$1_d8Q; zwlCy$?U9GkqVflLth{OF%$ab)i6_A37hhCkP*sgR zO_Z6>v_`b`<251ad{=QAV)4NZKeq<*xg!KL|L5g<9&_i+g;P#F1)h248NJ8eyLXTB z+X4N3{d(NDc|7NwbKvpEABTPW_Q55WTmrY>eml&aI~Vrv->=DLjOVm7PJ?^zxi==t zkW?Eza@QnazDGuf8~Vfkex%R#cXV|p7g<<8=bU>s+<*TAFl*K<*s*hmCU5)t`k=SB zSIaiKyL;e-6Hb7Q8#n5Dz38HgbUn{g^}KK2el4T5@%-?Iw}!Ib!UDsg?&}T(*nY;w zhoF_95A(|!+xuCQua*b#BpX?oNz|4gOJ%OL9H!+&p^ zHFxnxT(V>{q=h>GEK~fOiO36$%0h(x>s4s9!3NjN3b%CQwN(~Wt=lQs2AhEJdTNp8 z1hCW4q+y2*zF?7EL-!lm!l!d}r<5zcJT#q(>pkG=)pZ}+R)q*UpszGZQ-|amkhUPj zJ1Z{c%%~4hXx-KF-CF^w?H%TRzHEka+95QjBAKu&_DkmgyFuaFXE*@iW(t1~4Yk%H zZK?xp&*OZMwL&et0GFC#E7xwI3$b_+OHY1rVBL4Lcj~&gbBqvtK^iX{EeTil-3z9} z1+6jTm-0`|4+{6pmq9u+bksc*D3~}M>PuyI>K98HIR_n+kiLH)W3*V=TvrD;?usk{pa--(SQonIcOC3$(h`8-ry z+HqSj7n5WDJCx)fg=Aqr5#Tq1@%w~mVXt0I0vN?p{5=jE)TFJxs>51J1qX zphOM26u~^ENnn}Dv7?CInY~KzUUNccoNCTJ?_B7a(F1FaU!&gzYB?b>(5c9qfq_9d zdELoy<{4)wLT4|WbmB>{Z22 zq*&}p)&FCPSdlfmM)Y$}xNofhC(iu(CO&jT=OrYEaO{*`%^Xr|j`q&ZBYsy_ry9%o z9{kEHuY{i79ys^hbM(F%37adfxKa}_gM))`$|)zq<(FTf2*`tqusjh?J@r(0QIVF* zmMw!NOP0VqRoADTb}B4izFfz1&e>G)}{gizIi&rMTbJ8uH&tO{^3Up-DMN?V#0s`~IZN%8(gf<@Q;)Dud$s!Ut$mC|f zB78yVX3cJsLsCn)JObIoamYmZA;^k!n@rs?q|dL>&RTAE7U`b;% zeP!x?1c1%obb(C;==QhG4_!ouUDV!z1w=s2)@DKkLUekX*2Zt+t+-Q;;QZNeJa6>W zT#6jxq=UbYgpN4^(gY7DgJ>C2q=SguJ=qtQKlCeD-G%wKYeHK$Az2_<`NO*K`Q~I* zTsPKlSU0>)$f*20K3gd%<&{^o zX4uSGGZi7TOl#mEp@2lqk8ZmSwr|@8OBOGIS68ZMHM3T&TBS`{9z1wJ5j4x-o8SBNr#1$5pbQ6;qLB)pXM4)mhD#5^BH9WEc`rJcyN|6XUya0T{FugT z>qWA%|uK!qN{cP!`CwLvpcO8Q=9*aU;ks{JiPEi?SDmhU5L3TVeaYfHrt z#pIJQ{Scd&6VWq-KPVxSL#uBe=CiHZW^B)AOeq*Mn0Y=ZLrD5~_mmLV&J|o3Pd{-j z(ca#v=a$;|XkxJ(3dm#92@-;Ly6_XxZ%WF_jI29m_zGW6m{i4<98Mc32EA48&8)LfD@zX zGSSnu_1lyS5%rZ;0q&2{Oc2h^7UA3ze&_Y1?^ID0p0&d>S_OD`qOHB1jXy0qfE*Rln3gIZwco^uYMGFV^V zL3m~BE3jk74n6*DRm53Ujei$iZ~;8Caid#^Te%i$+B&&ff%HDqe~;%;6PNudiEPgL zPZKjf(xXA%fDsG^F51+ns?)2kx=L$@?LV*|)~`QHo3cE3@SrBZaBYS4iS>Q$wb!W6 zaV`6M?z!h-*X~`~&;EV;T|6oB#%gCCNz|H%Uf)-D#1Cf2?-A!I%(EQnhm(6@3hD%U5gZUNCj4Z23N>)>RUa(AYsJA}2Q7vE`CHqSA# zz6zAZVQho8`ifG=4g&Rp?U_Y9=`v12>z) zLj#ZzqNjH@jOP=o(-L;9O^?42JmZr+Kh5XHMTOaO=EBY$+w-_H#V|wl<^I0?kWr2_ ziDF4HZa>`4x3aWjl|Y>rl95T3T>>GSnj z*_tRE3#k9{^kdld6LE>cSU+^k;hUQBdg1Q%R>9_z=ZU6~8XuGE#l-J0{ZtvDLEQkv zb?M`aO$_mJ`gp^9LqK$-)8KUt&JBhB7($!wk?Ht--i50>6b7NWMti`bUfrbQOEvyf zUBrIlvPkwFAby`T-LT#8J^|6L$*1ef!uxpK4!z&df7n*Tu_y)p-h6x_ir*7nVVIbB zE(-$y@s6!IVL}T4wT#DWqcAe;g=b-%r0Wgu|3Pz&t!7p!Bg0xn7zqTWg6_;dqm4-%68+1f6Ie@54W{$9j*O&x|Si#xR+Ooc0pn}-QY z6{o}frP52em!(-2f4%429bDQ~{j;b~(;kY=mY`+?{he8H*EJ?TQbZYl?a`K!OiGex z(Ix0_)%O021_plfY8$50MiWJPlExP{D4V}Z&`E+OZT!}JoZvcGQ5uohoJwDxcJ6oD zVo)p6HXdrE!-fk80YHBP`7Izp0GhXCDLyy2W7%rs#X#T}ExOFwhIjl%Gh!Uwsq)nU zO(^H~Gp&)b-A-Z0Wb4dLRCs^p(`YM=<#A^UBEOSz*oAP)Jc~bk;}_ILD6n%eKk)Q$4NYXS+{FTx? zgz-{$-Uexz1*CUBHlLM}=V2Ogdr!G@w>X}#tphaZf-LUxcj@b=o_|TwCou$LnJgU_ z;_TktYTbEsGenBmZjEq(TY8o4}?)n!%-oYPHw6}NYyX_-_ zOwjdlfnp-2!e}dxvnWK6MLfbiq=$pFmd?oC#o%1+ zHJ4tcA|z!9H=g;27AvBn2Fa4sCL9ocye%Zm4c zA@O;%fW*eo;L)h(&{TOV01xJkQ+X5+j=~N$nk%5=g&CBDeGUNBnjYO#n8(umFMzmP z89@y~iwjns;K?k${58o6La2eu8&99Qh4&_=_Z8`9ew|)_&g3ICbx*DPp~NkE9%_6 zPDUO|maZrLiVl=`$=F%kf}rTYKo$+PY(B6l;G~kxki}?28|1kSO>5K>T&0E3VK}-l zuv!GUFHJq50D62Z3)ITs55oA(HzmyqUl6QCTv!>AGZ?I`LQVLF3sbu2<%>GEE)m?E z9YDB1hSe6ePr+*&q5$Sr4hfn2GCftC;5A1oPvX`Zo@>5p6 zdhrRCKT(nnB;K$2j5kq~Oc4o!%;zEAklXiBN&1i9vvldC%Szut@l5zO(nuaa^Ig&X zCC+QQJiIMRh&7_i+6^SWr_=Lg=f5SS>mj^LIgA$)d9RlrDBe?}_Q%VZdY0`{qA+P%IpPAhjEt!WDP=<3mB*ALg=)18 zhKKsKNj|DMhOh_1-ArKD!vYGSbRi!L1YpI7G`IZl!%jXrohA)2} z&S|)3MXf~dE&-Cl)T5)_H8wJ=|BePw^JZvZ|4}j5TWPB_m5zX;Q_rKrgGX&oJg(Z; zVE_K3a{UdGxvjR>$HUn*N*=i(imyAva6(c)elHatm<2r~pzPlt5HMjZK}PS_ro2J< zQddIyu&m2nn7++K^82A8wPsK4l~Vgb?w`j?{qg)tNE2R-;-&ck7H8_YED0kbx2h#; z93|r>r*twlB2(026X%E^5fEWzTRi73g!5;gP*p`KA!K`rJI|LPfkcsa@4-yQA~-#w z;|m(6*PgQqjzNA4qD^l|F*cN_ zKsI3%{vCz&O6xkVH_(+gaoZjv|Tz+ z*>XwtOayfoYM%*`Z;J}V1SHpH<63bk%{Cvme-BiXGtLWbPhsCly+5BH-Un@3K5qX! z?i;|K%cy^ZV@@2-xCg(2ckcxV(v3&q_{r{iXkj4Xh1z5g?WhA^#i#L8ZR=?25Nbxo zbcCq15rMm3XJkx1@DMp__l%)c1obyQKC1T*#{XKe!`xJ4V7vk5xypo?Geg z3=(9rAQJ*jvEsR1`WiR7*@;%A;Me-#;}OzFRIFG1THRZXpnC`!-sPb#q+7rH^}oM< zf$k4HL^2+}R*d(yz~bQkY*m2! z0uHic`QEJv;wYIH$T;@kLiccyMYUld@aMyuNxiMA`qDrqoTnP_6lB)$YYu#~ z9fAtz3m3PE_X{-?BAEGC1VZ9q(H;G^@p$2SEJ*f(fmFV!KOunmwa@9IzMj9d`Ludk zA>nr$S6HWI{sGG3Eh{Vigt~bT-vhAcar|)}e3)j+QbscHIxMTxIR9m+K+60iuOIFn z{wC|tXbCG=yYlWl9a|?xpf*b4;qM55za#7~_TE2BD#a!X(`BePFE#6rl11T$)Rdi; zBP>@~e>`qqpDFW;A@SBYT)KUQ;lsSpcpE>r-$Q>?APLFwCmtv4c7)fPeeUChqbWO@ zlBlS6JgV2(sdk+fbX42hvu1ck%R=`VeSkCU7X~dppiDB_t7bm8<8=*5EcG`g_+cQw zHVzM6fIG;;$Fmf%6&@lA*B&A172o@rp4WMac$_r|*Y)xGUkl=o@}UGI3&*F?;q7J) zb+oB@t#*_TW}|lG*fg3;TkY_SmYrLXx$XW$PS4445|VrsK^X5$#)@L-a*TxY7v2TT z*TOU{L9cIuFs{^k*dJ8ngIK(d4`UT2&n5H6!_av7z9YSVNaq0(afv4K!1F3toYXzs zgT(tQStox!ZfEG+d3Se!(afbUkaH7^r21EduObRE)i|QfJ}(Y}6n^an6g#nRjg`V5 z)l_qnl%Ulj!D^Bf(Rr~{V52i#5i)uP%w3RlyqB6i@n{`|4Du9C=&7DkgtQrU?&Rc( z3>N{WYARZNG}`o&&8p`u!`@{V8d)fsF%h7t)7*llH|U8v3Mw=-{_4l$g`HJxyFMf1 z)r8>iOx?yV0)JE>z=fEj+GI+&4xvJWl7(dEnZ2Aw*N|^~$b&3(<5v94_jYgXZz@Gg0{FHBd|X~*U7cOw0tf9LNx zd?uoBG=8)SD*BLKco>b=JM9m4F42cxAS0tSVfqa2Gg1RdIJaa>47ipx zb#2$Nf{L4pv78GiArLT!-@`e=J`Xj=0K8^JI0pK)b2#7lHF-$bxu;|eLQ!K{WU1x9 zzIq~C)j4c5E05F`IL5R5U?OO>cB)M+76-X00p)*7fFwU)o@wSmru_J@dh~Mp92<9N zO(|U0k~xTS8M4r2BV?Hw^J41_CjNNL1gM`^sLO@WbtJIwJYG>JtwyL9j?T~aJN?}V zG+(K7%IYCqPD7Fj5ehv8M4QxPg7&2gV#cuWibNMbb?LJpNsFS%n1)fQ6y|~?z0Hem z*vMpt=~e`IQz9(a1q00IHIuB5lM-3fmOCwz&YQ5R-^Nz5{_QAa8K)twy18&(dq_6LrB8uCv*W}l2&dth}Ir1-kKrNYTlHI)qv9g&pq<|; zK=9p{HB7To3C%FZX?Zuk2Bz_cb!dgtd~+23PHC9&lhQ$MWw_XRO9#SQugN^2Hv_E8tZ^4ZpPZ8U&V%WQ;J^fNqn`%hc;6zp7%6x@=BNPVkMWJAXKxqD%3#>!I02P`8aDl(?i-P4N z9l!ZrN%)0?f5FnHn~%^;V;VkQDlq3KiNRgY9hSvB7eRXEY1r`e88;;Au6=;&x?!Po)2c zZ8BYs=n2sJjs5ZX1bfEaiYL;)=X{{X?wc(_qTYVe{-aM$XMt@-3qzK!%>-mjE~?cw z7$oBj5k(chW2+;vTfDxO2|=-00}GN)co2jlb*PiBxxxdUe4S)~d)ATBVV6H{X4%KB zNV2TEd)TP7DcQhK)(|_=Kn>e*ZN;H=fPFY12CWR=Nz>^*Cxq_p!pQdp@U^+VVaA3h#egP7PD32e<+4m$4Au`k~9uoPMNGNk;a_gu}zD@*bw z>xAWg1*G>P0I9mebFW&n$nr*(+;RadV`+m@K`4??HA@-^7dFUhv5~cnEmh?B6|juj z%>ekkStgj~HK_W+4rv@U@g<3#T9HqhFV}Qx^hJ;d;LSct%UfB3%=#-nM4=rgK?Zpc zMOlEJo*@^MyNd=%#*!O+y5NA~)Vd&(I;jlY){nK=X@bKAl0jqB$nNuGL0`(7?<1SG z;F}1J_*5NT2*e~CK5JKfX=EhdlQGqR_x(&Ko9jmkAz{(bcktbi0j7W8$y;;k)cc_V z0iK3;E7oUtAFH4mE+X&~r!AcS&`&BH^$YB~{qu`<9!Hpeo<^8w|BR+pFMS@jcT3e< z>N$UhA^D&F)*p~`!#d%0UR9R-FY4J^44!NWpxY8 zKXDbDXpQS@GWtJ#m;AlaFudHkBz(ZeLll5_8zp1!-Ell*6*LFZB}XZ1;GSi+kUG+_t#1#Rs;gNR;A;JeP+lr z?ZpcB$rwd7#AvL>&HOgwg-^?h`Tbtsj#zwd@&p+*Ngm1wd>mn^g3u#*a1*-cPNYuS%M3F}Z=ymv9Lrw^}|epq(PzScr;nMU7|DI!pMngu#5?xsZd$llt`EWipSc z-|6&aax*~v()DBMr&NTrdAGo9b`dn=2-2nGKA%hL8!-mXMxe#-KV z>#5Pvk?7s=c4*tX4ud3_9Eax0m)fL>lKPCx+~}SAHFUV?YW(if^?N97iI*>K*Awsm zaTLBUhT~6#`4=p1AJz*oIpVT#AwsK9OStbGO%PsQNE1C#^9$bJm)BVttqDEHM3xcw z_>a`r{>Yje zfM}5cq}KLG-sILaF~}yY61BCr!+1XYF(JrWYgvE7xqz41_FgxBFn+>*R>*o*$S{om zP8Yp)EFsJR8;1h8p(M30pk@|B)9&;)&ohfSQEEZ_aM*AHVp6FrPRTxjxk17$6=%wC zDu1aw@wCdy*k}!q&QB%sE}(SdDtR6QM?0~QMg+wR29}k?`*ANjNW%Q8720ZK3f5*1 z4Y5^BWI(Ni~g>LqKEWlRM5M9=g`eBzEj_rkVd%wm(fnG=jg zK-MJ7cy+?AFt|oW2;Wu0MH^jH;YsJ3))p5feM=N!yw+HFT2?T>Q1V+O!f=fm9M(%2_qn#4`|?4NyG_>a-^Tt|6Z^B2KHny*BYw#nbx{V`GqF)QY-kF(s{tPk0e>80&ZULa|Dq6gLlU}1*A-+0g3$Za+H+|z_)d1x@=zitirF^mvm!B|p+Bk|Izx7>q&9>(M4Zsw04Dy)B~xtT??NTl6pF9O8B zD0wdGeCP4l@i*l+9GByLOo{*#klz15NjM%~x=a-s$axQ5rYDw)sipXogj_Q2`o-7G zOAf<$5-9l^tT2`2Ly~W9@&n&UDz23#G#4Pzh^&w)Xl(Q)B#0*Pldf;1!kC#X0$37| zYHN{V`7{M7nE=-bdAD*M)CrztamqrHNEwk=)SV>HYD8!aZjpliWY!`(1T-_;v>Kdt zV#c%v)g-gO!%YSR8xZP`ejlV+5Hv7%ETzJijj6QXrG(7k0?`Wc zLt%uEhvtoc`aA)N+sA3+wZeKDpWi^(XO%=eVLoWy_zE#BGZoNRqCDEPXt_CY6y}5G zyAtKWjA^m9j4huK^tT-+0mAoS>&e$oY78}~kaAQ=9RTol;p5@IQ}0qF(hT2Sm`>aV zd0r{0Mc+;Mo*>E#Z9{=Qe}EvrzK!wxS0E&6MB+UIYa?OVd6{V1aa~hVEPRJyJFNtD z6ut)t@{uZMsxPM6c>HeoxG*{WpT4`eou<>~?<-C}-M0Mt0bDxNyjF|JbRy6b_VGJN zS579$GFln_dW`4^WK1s5bT}S*Nx=)CJyB-e>m7ighb)O}Vvh3hL^3)dqC=X^TpvL9 zyxMH%*eHZ%9WB_}snsW{2>>l?j5cBJKg*mZhDuwz>Z`3~6$=m8jTf3^UJ)f8Ut$yR z25vo?*e_7o7lff~tS&q~_!Vn?r3jxee|Alt8fN@HgYg0^SD`y6i)daXbE_9V)hAPB zYW5jGNQ&7sBnvMR;mYDGs{>Rc}?Pe1Erjl;xZD}N_yEgTH z#VaS0%{Sk+A8>!fN8tyYJ0;5aBHH^!e||ADciwzhyY>{AHG8(+2yA)jMRHL>ze$@+S5N$C16C#VqGDm}yVAt1mT#tAdDc?ty(b5p9 z!6PMr%Y)2BQLVPY;6U0Oto`J3rT;C7AOAZ%bmZ65MT|BUh}XtpI^KV{FHP-lflA?u z{NR6PZxp7*$7DRnP^q8^^}N45RA`x~s=sCq?&G{x5%tN=j5KWjYBdE3yh@^0GfF19 z4#-#$NZSSN*Tq_1ihzXo<44V{c|GVjVv zLQM!toRz`!6(l94nt%P`8z8k%w9m?f|4WyzfS-To`=FzvBY1YpSHB34Jam5)X8wW& zFmvW?=l>;o%{eH-Ekogbc#q;D8RZ ze8nm)9O>&j2)lRfa&awPwj8!?eMOtc#yDoqngz!lw-|Qr*aim<9E9$kZdkNviGH?! z|9;q~((LT&QsGv>f&F`RzEWi^+Z6lFN4z%l;n)fvX~Oj{USPi_hgL;;iiiU zfa3DR?>`R5H$(iMsQPtOzkEQ-QSPVyuAl;qHacd*I_AO)0SzGZDPzB}FWZ^W`bfX) zOD??v)}3~y{{G`7r-l9Uef)m zOZi#6WU2O#earg=XjHeUGN+&OzQQ+>sdk-?2Li#OAnuS9Aow)O@&bXtv(;r`T9bjS znZh~4BJ2~Uzf8{B{P^Qn!#mz_Gn{e8X{v3H!ov?g3V-nz|5ttY@vmC75`OOI-VW>5 zovho-6Hhz^pZ@ee!Hyj}gLvNi-gm=EC!MGTop;@JFMQ$?pHy?v0AyrLCbT)<L=zo8LR9%%?cywx{V(U;Ri6vG>cP*SLz+`Oda6#`SqG= z_|c|hKZ64YNgU<#Djxpq=;(orLj%@ro0_i%`VTbaANzIBj9IF_hajVQU_GN28MfzE zf+=@fp%mf?E6U(Y@PvnOa&yW{=zoL#QR)C_xW0||jGi!aNf$(2s39B2XZ?q3ag!gq zH%NWAzqxzaehwPA^E4>Al!~KXobjF`4Ou5%UM3o6DlJIlnIn#`ZT8&79|8AMu>6=e zX$hBl(8-E0`c(FvU;3QK9n?!aF>&uYetYti6<)g~-0ic}>xoZr#+yG~HP$b23-cvh z-hfTmHXU0xHa;F!v)QStx5S#G;fj(lA+=4zoW_+}lME-DT8mxacsM|fseA!;jCLhJ zf~-k4tzlKqgRv_39tv&3Q!?Sk2FIoD?k*S_9L$=TQw$xdFK11%=8-aOVAcmIp?|#a z?a(BdH=i7nU?~%3bj@SF;DzbKBSVUG>rnk_0Jd%0s)Yadz*A2==FFPt3h) z55vi)oCXVzTcm{io3;Dv-*l5EsWv|Iv?ei@E?*AkoOdDY+O-4r?%AbDxSQYc9^H2_ z4b)V){x7mE*rp_O567vL zyN@%hr|_A7?w?WrlB8enT|)3qOUyoNB{!6(Kcy_8d5A?K(K`f=l3{i!ayh z83`_$W_x=T-txAeRefL=Tz=)X@Z7UcE7Gh(5y;2Eg_m3o+qZAk1n>D5UINP$S&etH zTz2_Y@brc!VBx|=aM7h#DgvNSg}nxzc-)Y27pZVJyzb3#?>#@!&F0k8&VZBGovQoJ z4X?Wq9(v$jIN`*T;P^Es!N6d@cE^6i-;K><>OH0EfVXQNHf%fLIOgjZ67QR~bs7eu zd_vjYOVTj(nP_=}4AEBH-$(aqab1PKJG;8o_&RZt?DESmQ$*JPD+sbNSiO1`oPYkg zdR=$#z4tpm|L_lg2WOpihHkH`R;_@GF1i4&y6Q^!@|VA&$8!ArsZV`Ok!WjmKf!p= z4dc1{?t394V={qvWQ~rDG>~ry$e1`fR9#oqTsbsoNDE^|+|L~HF49t zW|$F@w&OvNT+dCx*K^+?)bsQ}Rqc`SZ=9~5$iKk(j>63i36#JhYhe9EQp*`u5r)dV zd|ZAHM&i-VYsUMDyuaZ3jNUzhwu`x}G$&&9htSre#qx5*ZWnlnHn4E+k zs1sK@zN&j9M3_xswYW?ZNS|?yGe##z&tZCh^tlB!wHV~H_z}G-351n3PbwmjM?p+F zIu^=gfKIeBH9?aC(TUpMLFPjPq+g{gE1j^5P_DDl$ByatzIFU0Vpk7Vd&B)pAX#S> z(&ZEDX)K#tYzkVNFe3uCp}a(CEu>H5nG@uxjSma01*9V*S(7Z|)eYYd{6g11bKms8 zet~SCnSMY?$<)bM?>}5<(ysM}8{Y=|_UwT>Zu_D3ykyBTI9HKd4?TDf08kPKg{>8> z$@1vK55nV*J_K*R>8G{(Nhhy^J&K@OxoWi*GN9Jj?p-@If%f!MPw03qzU(Tv`zLom z?~Gm@XHQSB+H?ukmq%gS)~zrw(694#{zaFS@EeJr?J z=vO2+U9xVz{H6(jzH{L=U0zEoBqI#y2}Lfmj#s?g-R9p%q)+*e z9%OR_Czr#$0&a3+5s{}M2OfA(k!7dDKmF4u;EF3Qhrjx(|EK+Z_`@H9-rgDTfe-v=_|cDUhq-g- zz<0m<4OqT>sp=oyFf=p_zxR8;qy4-?k<|C!{{Y-{)0^Or|M(9S!FDP9pa1jMkdZN& zz`3%yyN~lYGg06iIyP2=wrZOn!^;Gffp|~EkKH5;Wa1?Od$gArG-@l{h*M=J27x5=fdz6vUrY( z_;AmdI>c9Ji418E{K-DHIXSh!hr8#jnV3_${R?sHj*CO>lLS+PNL4Wsa(tsxeI zr0`YIM#LJe74qr{Q5M9nZ?xLU~&8v9FvRU7kV zfuQ1CO%;gt-WSVWGz-?+D;{aN1?zq*S;2>efDWB@JBKN34>Lu z*TCi%pVwj09Ng(=tcNEbf5e!Y`|<6tWa%>4zi+?R3`IdG`dfSQDX?tWa=m^!c;JA} z-%Fb}!L2{|E}VJRIk4*ZHHK)LITLzRS{?13u=SOfb)LR)%a^rg4{FwY>lWQi{~C0WAuPyN&QD=h7Bv&l(ilfJK~m}oWxGHQ&u*!5c61ljb$b1r^+ zCTeJC5We{Nf7WgCv@_0vZ+-nM+7D`3ZhU5g{yswq{`c?O>+;yqZp@xy|2S^ZVnv#* zgMa??$8~?Qefq6J&_zpMODrB5{UTxpIZ-SBv49XEthr3^A^RmpCu%Q*C?i-hJ9c>4!e_ zyV}(53omTaevBzzaN1}Y8IuWFYj*s|G}Wb~ z9EXW&G>wgoz*yf%QO|A71e<{`bI_*{^1WLT&;+Gcb#L(rczVOXTRj}rtN@bu zAn%`!#o?H2{8S1vTNzUe#xzYfwRorq$*X$WWaUEY!j;C#+`Qo1hPS}GjV`?SGI;3z zdtlF=J=fM5<-38A) z{S?feJy!|ryVT~h4;C(3qD{YH*h??J3cmVppM$=Geek9m-=^L0o~D8RK7GI0ekBY= za_y}3=fY<{^J%EIRp6>?Z_wp@`_I1{9>ct-KzRQc5(3)Xo?3sP78=&sYu|7q?AozI zx5Iq};Xnl-AyFlgg8uUN13?^q=@(|Bo`HGqWRtBee_f+~}S?+G}64V9vaG zN)Ttr1N2f@W`cwL2Vn1>-E3Y1c*C3Ds_)jr!$8>9?en>F=R^NN^SiIFPZ46v;ndU5 zgmvpqQzY>1IxoGwv*2@|{S@5vwzuo@q81wl_|Xr(4`-aU9u_ZN2Aem(0IS!W1X~nQ zJZH{4xbL33b-LYMJ$ijU!c0=ut7ErkNQ^7IT<)oe+j*K0Gj$%e4@-{myL-%Skv{zg&^Q2x>{=`s=ULcjj%`vQ_^^5^VeS9dN=4Yv9dq zeuEn055T+M{SMt{e((4GQ2QAe7=T9}c}(?*Uic6H;b&m=>ecWwKl4_2`Q$c=MMlN)&ip@%Hp-54Cbj& zh@4tq1B7cTK3_?;?&QB41M`F=MaGeZspl-C%Sc0O)fej_*O!6qVv?he77Mw*qu_8a4Nf>5Fizg9H&EgUwEvaLg_ky1RRn;BQ0; z9Qz?->Y%H;7lw!Wq18{E9WLr^rc-MYyx*(Z-g%h!T>1q@yCRkFUa*suaK2|oH}v-p zz^3P)g&*DeeJ%9om_L6$%$hw%n>$4fE_++p&F{)`mfoaoC@?Zh1-NrBiFw>{VnPZc308*tK&9^z_WogdE;owsXfe zO~RphI$Y`W9XJ5HcJ0)f1{fcjvfJ|VW?QSIy!Ln5A~v7iwN&nJ`@>x|b|l0k5cb-`96gpUPjhVx^85 zP2`{^W_rVy`VLUPtx$i)FTYda(BhQPD7_RBr$e&u8EK$tQaq%GCU6m{`Gf=aEGW31 z=$&L|pM4g5`qQ7#aou_6PjuV7_~HxnvyXrLQ}E}1{+IguZ~fM&FXpL#Xf`w{5`BM71 zNNIo%#>M#n%JGb7;Lan1K50(2R_XsS4cl4k%f7u=dp7NM9Er z!9t{5;I5ex=>xGeHVNhXJwJBwJtIe$7l3%(T)qZOt;w6&-=&`MG5|E*8>Gh2!`VO7 zi-(WJsl8xXe9i2=(_sinW+yay2N#qQQ^2!U{NwHb17N35MM4}&G{ctfB%4~8(K`qF`}RS`L=l_6OD$%*dwSJ_@j55M8sShD!iO5? zp~Tbd!t`+Rk$A$!lX$T^k#w4g<525nqVEIX(DO+B)%yfEwEWd;b7dQlI1O_r*TDle*WighIhQfc}a$}RAPFMJ7R&6)`x{pcTPt+DsN|AT=!#o4oGYx9g3TyP%z`mg^gY}&L5 zUjO>HKt{%7qP?RNh6V=`rrpcN&5XkZ9{B2+F#~q(+@5^S4~&&*n0eu^)c4}j=k&c% zv*so&U(?vMDuLfHoc2Z1P30*nN70;=BitJcMJG%M=(bGMU&LrPkH)*wtvC=F1pAEAvwpZ#^8!9<1KJk^WAN zx%KvNvW}m6`GsVhRsE9*IGwkGeBv{QdDq-7r-_he(KQYdZ$WDn-$a-lM+S+4JR*}F z@hE{MU|K4v8Xs?wRbvaCOx#{$&3yG_APFRdHqD|>!WLm`mfQmGF1@N6STl*n1MNIE ze9h%BY$DR-U9tuu$xma>62D7VPhb}sBtBy!x>nSe$rI)^6J*VSni|RQz=iC1R<4`Y zh)?&4;InLE;TsY=br=C@Cdj55vX<;*fc6t01ehRh<~f?88XG;l`PalF>ZX5q5bX1C z^O1_vqM3!ZsFP+{9uH;F3x^O#qcDyAmJy}RhHvDSj$btSNl~A$Ng}H z!N^a&lajd6_2ys?^*uH7-Tpq*jUbIj)OjB6b0&hR)c+BD6Yuv>G1Bg~elk)(bML8p zTtQHSsB?0{>py++?hcITZxhQ}V;4==p%0=(~izX*#KEz+hNhlYkABV)3F zvXSz;j}K>z&nN?$$mS;W(+4RHxMr7`FJ$t7B>*+QD@pwJz8@~ol>tFkW&y?L#fM{0 z^c)+`ak<@OWW3s-6>LBTTm_Zer@OQaW%gE{PsR{>U!mJOk?2A~oy2Q72`m2>)ZHg& z?{+lV_ID!2!bRxGM7ocuM^=>)c5xZY_l>e7JogJwPK?Qtv;fj18h=jR z&2P;Fgr{_QcH&);WSMnB)Z!mbtV+U~6-_9NT~ggA8KokLXF(!O3r}Q04B5OHr|^^t zklkM44`LWCHsck^v6>|Xi$CiQL5Hx>qPz4Si%YJNd=WtwY~6YDlI|6e-r;Jf=(slD z;VD~MXEm@~Al}D-vDET?WKHAn1YFY_dUD7M#%T*mhSl5b*w1(qBLYA8OcMiR`989# z2CH?PF;Uq5K<5m)s4iRtK$*FigmdJU>W`=E;nrMUn|1g3Ja+RF zt=q$0KOAbE97=K1?_NZH(qTnuoXx-z@-z>0Bbkop(B9?Yzxw9Nb|~$!Uc5YPGx#7o6WnskmtgJMleF8FS6&X+ zTyrIS=R4om_e-95;)&XQn3(NfuwVgPdg&$l`$G>s0;ivTI{fed{U`9@4}VAzW}Vvo zl1nav*|TTCh7HeTf-GawQU5-^lrSvgaDgURhlYnD0W$yYWn5lX$L|qM-BV^^$2>1o z2I5abXq6$fcoNS+R8AJ}TLDB#-er*%WMpK#3V`>sju*T_OqNRs^Wi?`6aljhB*LBFeS* zCldbar7IK9De9GpmyPCCmc)~uXVT$~pQ;b&UzpPjb7c&7Mdk&n1&O`YPWZIliBR&x z{T70Hb(>^+hZz*#fixgm9RP$lvXh}p!`na(8?pW7b+qW_To&aixHU(v0bzp$d4}3p z-UOqs9+&Nc#4?Ir6<3WC{3g>l7N=jx3kmNhvjIuxC=w9CD-C)L@o36xJ6juGVwkna zngX8Utc~Zo;%KY32j)OCrVnCmu^6G*#j;I}2>iBH+oBVP8OI)Y64YyHWK0~X1sf1y zfOOi)+&($=TP6%oxyM4%I82IcvqA@|y+i$`Hw5Xtq<+(Mcp7Elyt@^CgiD%wd7^G* zX{6FimAA|<^-tehnb4Y>El;JBO0%pkZJYpcdugU@Wp$Bm2mT%SvdQS(roQtyeFU)| zmSgS7hAq?N=lP{+*Q;M2KD_576|aqtqfsAe)PLi8DewP{+HNY3N4EdVAl|a~NXNUf z{@=`dYIR7q$uE1K7AO>|PZBhlu1e$wKe!d%`Ocf+^Pm3=?Ao;(mMvQfFTM0KeDtG# zs{K6s?6WX3GO9?ii{Xo3{1@1|bt_zS(FHJb=1lmjzxrF)vgH-%@9&2lJ9cU_i?`kO zJw>h^(BF|*`|yYVCuC$yHfp5<3!OIwWK10P?!%NReolIYV^$$ybMu1L-m?2oA|oSf zkhC=uKi|+e&G$0GOaytbe*OAG==@MOC>6YBWMoW5;Nk3XvL3QzmLs18gq%VFv-RQE zMunQMG(IcA_gb!gJP8jF`0*}UliRexUl$ec>--q!!RInb+ywj0!-V5#I-b%$FNy>EbAmXyL386JQ#9K60 zZF+;7zd%r7Z@do`K{)%}j*lIkoiM7#ozYB`O(}GAbSsi9pXQz%h?39ZmoWXn9xmbw zU?a2^34uTu2anVK#qJ{bT_#-Rr`6K&$8j~v2QLrzYrj*!<}b`EcT1Ncojwhp@*A3j zEnf|W!WqBjvhi@Tz?WSH;dvfXX{5?#*WO`0l)v9}J=8BJf1Zl7+4QOZ;+NV_v_Va6 zSaJOsJ!A3O`mCz8h9=6$T$E}bh*VyA9h8+T{uEI;!ged7csb&{h~RU&^?&-ADi8OY zQ6FfUbX@P%!h?GC-er47SMhw}>+}2WyI+xDChdLu_Q5T;d;>o8p$}_wiwM*vLv1l6 zy^cSAwf=nk@h9N-e(w+T9c752p<(#`_kW=8G{d%l{p2*U9B#m*ykE{W%9`aT7ThsSHy zY`}!G;hN6G5ss}QD2vDwSVqRH0$trozM*8@!Mc?EtG`9(@c4eQ0@SP`Ukisn__!jI z{`vafxr0^VLGrD!MF1bQPnVV>{DhL<)=jXu%KY&-c-n%+$^XjY5hZDt`QgvX(w2}; zKNVMbU5OQI)+fcD@!m-SwfRd;YVicp;hO-)U2KdcNms{+4XP5RYnfLwXO^1?3-ZP% zVhE@wUw!0@jo02kmP$pCFZ$GYF|o^{TsEFi(*nqMB3SX&;mYdnI^&hgc1_x+r0VQ7 z)#WNsZL7f0K!3iItO;~h1+u%k5{nfop%o>gm9Qz9}sO!9KNb=$+XM z2M-*`calvp%;=p1{eAl&V=_>0;b_p^(_5VMuSJ4@)Uu_XK)PA~b#vT=|5SR7!g1k$ z>U)|0iK1Q_h*UY6t%qjvemL)v=c`^khnhd`CzV#S;miCr6BY@tVYQwbW0z>tr7M3I z*k4qK(d1gQ_1sK;oAoo%Hd7Y&WVD%AOaIR}JXEXLUj~wUwX*uf`Fw0NA9~4XO|*A( z!r(w3I|OVy%3({SG7{+M=ujlt4A`}6JJ_`@m%VYK$~-n}<9H4<@28oAOJ#GCk#(iR z$&!OM)<2cA0fhdjyCwQEGBTzvP^-SXX9f(9jm8Jhfb@R=pcd%ta{=yWLT(R?NMqrJ z9dA6*l^W}KJcUmZkC?zZ-^T+b@(4&A8u0ExiV)7D_575@Q0Msdr{E+QQB4G|sF+#~ z36eoR@zJt^3tOmwv-s?%(Jm_j**XDlauGx7Iv~%%bqb$5+JQs$&6>}U&Vbi6^JP~= z9DWKJ){7|2EII;F6nPVwAZrq3rhZx-`eN{`NH*=jNij~EQMabv<8r<}_cyeaqe!n%GuWoX8KSst1VQ}+E(;x;9(SJnqSSx74lK_tQ*$P3Qifad<#; z?{u%$9HE&jKBIMkLdn=lPBQ|&j6(&QY9Ci}Iy^K>;rD&!FujpQh0h&`>?@X2(!FT- zn4%#TMjye0W7?z4=T zcWg?s=?a?N@QDb&(|o7Gr$Oh!GGdF9PBd=npQn|Irx8TryG%TTI{B#Q*S$fA;}r=% z^tWeysx%qhxTJL2Ri1iEWmQm)D5%d$CBAe{xCztW!eyTYg|d^3U}@RhoRys#?P89kIS#0P-{|GPBq%WmV@01l^FVemX zTK=MgLd}0o*v!XyI79aUAh?`E! zlfXCIlq@1eC5_lUa}06ekF`LXH{bZpXC)xztcIMA*Je%#l6O&(zmQHYPTG(>6f|B< z)+pEI`9gA;U{p_*fD|F|2g2J?&3BPC2Ry}D8_ybd9BoxRJ(k7%M0T|;-($7>c&R$dZh_q9U(bp?`Linon14OT&|+! za=D%x!_@N#bar;P$VgWm{*ZfU=@C=5NtM<;M3oJX^X*C~g# zwstkfWfPc_1G<1q_Ze-TCLg@WXhGnHm7cKX(@JW;S8cCqAzVgAtD&L~7Wo4#w11Sz zyReVt{*uwEz&~d1p)vXl)8Dgp7`k0oUI0kO_IAND6;R%z+>87W$D=GU2gI z=EIvuD;YFNUTu=NPU+CZ0uip4kgM3{P>U>EXgYLAwHLyAZU%VQAl`nG4}lyya2?Uv zWIazO;P_M{{on9bd=6kFi?E!5d1S7Aib;7yg=oqM5;fIgjlmBHu)_rjrXx+N@%b!8 zAjuN9vI7GpbrNY=$%G#sA1BAk$gUJQRpu|`JHk9u|Eb@i#1DHnBpIE!{L7IA z*&@vkpocvCyd#52knlx}Tmv_`*@kEvE>*y?4VpF%+Q0)%GWr}mIpzen^m|Z#N>s%a zCm7{hu@i0a4lBiXTCNx}AkR$Qv6o<F2&(=}nc-q`! zp3Iwr@I*j{M>e%My&;5%HXD4?VFy9{iYEk9`wu!E;)%noNjCLRsbo!!$wmFT#1pDn zJ2|5jVeaDdbAUhj4UwBgdwW;zFBvU~3f`?$3){XuUs*O~+0&MOU!1J1GPSJUDymd6iJq4mxl-4rkkwi=>nV!Y=19PehJ+QX}TnSw4zW* z>IY*5czLKKaZ^n%Z?e_<3dyv3q)j+R`Ek&Gmk^UXWyBEwi)x_cyI`N3n3IVx0FWfG zWFoI+gt87`_XtYOx|j)+=j<0$U;^Y8@NI>z6w8Bt(2hB@zf;kNu+F~ z41wUFh?h>@!V`(!0RR##sEOaChj|>!8XZjm1;`mOvbnJ7jg*N+3PHwd<6pbFXEqKR zACdzjBY7i{F`Yp-*Xc15P1R;nGNToN+Qjsr1n&l9N$kU95WL#xb_$&zCwG;qV)8g^@Gpb^SxJ766U_2tSLKr5Wzw=i9D%fv?x+z4Ly}f zzx(I)Hd7fH(--AtuFYq(M6?DcT>UH8Bxms|uRBcpKt{SUyQ;`$q|gY(Zj58A42aK{}#hFgF5BRCSc;KK9a z-h1wYtFOKiwr$%EPd&8(GG5&%KTyFB59f8*MA6>f0mDOsL;xJm*G9l>HOFLe@YqPs zyzrS4Rw58eJF8P3TvNaU?vet`L>&qYc8QhAYe z!W1MKC1;HGRPj>56JJi_t00k#vo-N2m_G=(#e#2(AQM@Xu8|gTOPiPQ<)mI!m|qc* zVbpA)Cag5G1ws9o{e~}yePp-#f-uUCn{stlxLM-Luwz6!EwriZ76&dmd+!((WJ;2b zuuP)u(uG^Ca4+sIBNeVEq_M27+zjx9P$q(6pe95nTBk2U;y(QJkYo;^leLWEK_IEx zNXU|L^x;o}W=tGqi!Kio5M-f$MyrBv3{yh>@OjoE%V=RVX#3$~)Yk8ul>1sPxZr&F z+rRmH*s)^={O<4mwsyPh@=M{|bI*ah@4g4_x%*zYQW0sVo_Y#w*zh#mcH14W@VJF= z)>&u5ul(|V)N>rJEgpREA$Zf9-w2Br9jD^j30+-X&^xmi{`FrzuLW2?{WEWaj*bra z^r!w2hK9@`s&mdg8|KZM3xD)Sf1>Bh_q^xbaJ!2C>T9lo(@r}Te)5yM;l6wCgBxCZ zJuF+cMAyNmKlM*=#TA$7JS>_8=r-fPC5}@_qx}@i!Z(iU;EnE;We+h7UrtF%%8tN z<@s}3W94mcdy5{p{^=h-1H;4FGQw0teRFJ7z?U&mpb7m!C3yE*VD62hm|rODa$jFj~W)DYkq^)?q^kC1-2GRHYMlW*io@ z45q~_h_&JUl;f0H03+0QTBT&yE-3M3`+CvqD^_)fj$=i1BoZfwx9&j4E@0ZV5Rw!n zM3dbE@x4+^kO2!1P)-8zGzCB@d6e=G5R*ty=Xb#BB;29IO(x=#iM*D@mGUPbEu#^M zFmYTJmz400#C)2Cg|u$cl0IS9-9$pd+Ljg+t!N~v>{>#O#^&NC&w~6x`2fm^x@0;c zG#^GApiD$y^KQtlxS@(7u(T{0__%qgbmuDAZaxvXJP8uQ=3DwwdxMb$0as*DxMwzH z*`z6gjA~m)9oy!ui?(W2EedlRnr`4GX{}pKl-bGK2r;Qi3vRB$#DQc?HTR_{h_*IG zl4V=^lL%4wX*C}($Y@dE<@V!;xJgGrd#jy(&B#Dte;FMOweRWjEG3B6C#NT&zbsfV zA9{Lv;G&Bzgk8ILEAs0sMJla;&wu`l@cP%k7G}(t0bSkQ@Wn5F8Q%ED*Td{NbMzso zEnBw2Bab`=k39US)+C!TqZiISXFc3<%QxUgMNs|ZCwFPW4D*iU7ix(0_4UCemtNx1 zezPLgzW9ZI)8FyFnvZ|{AK*GgR?VI@Q){Zd^{qF;EcG4p@r|z}onv&IZQF&z#&*)M zL1WvtlZK6LHMY&hw(Z8Y?M&=U?Btv0{eI7nS!>oc_kCXH-uu{o2nt%Q$UMBfE&^9Q z*TP)xbtua<{AhOFFXmY3u7Z5`vp*a_xWitZ?OQYX@U7cso!w|wg)sR{j=pTScibGm zD-W)(_dA1|#36@vGKe0KNY{sFo>Q{#eR*E9;+WSmIj&B->vQdg^4|tNBxc4&ZKi|7 z*b025@z70lNk7x{JO1ontxTfA;m%o{PNp2C}cA);(4Mi?PFaVS!a^q#AQW zua#LAcupidiG%9H(SPPxGzHC99vL=j>$CsVQ;@z}?&g2}>flt|k^WWI6fVL%w>Za{ ztbCi8ygPM>UTZV{Sx=$~?nqCfN|=o9?}0k`X0+E3e*r%Dm1_LXVvV^bA6oJRlOQ-a z`IPK(Q!L{CYzbP>MF?6-7Yh&E!oe0NV83ZyeeN{a2m%H#)YWI=NJE>me2Ru=M_jYC zguZ$?vm8v4Lq-v^Agbd{CiI1K?JomuigzQF{%m&9%ukBPEC-zow=~9X8}$CBp=eYx zdyW$JGHG}ys&N&J7;lnC|5&K)daKbD=U?@_{hiKmA=%WiPMe zqQ}(7N191xh>x6{D;2@AOC#w(7La)e;b=M=GRbhA;l~eXOkfc*TO`lK^<(Tb9C3f| zV;uP^o_SV@RK9+&-}4|9V3=SBwu{x=3gSFjqotor+$EoKd8Yfrd^eA*eYsi(0Y&hg zsYaj0@3L;w?|!&39+cN+)`ClTG2#H0@cp z=VVaI5vtAfMWzC2JK>53hKMqUj zb{EMD(o=PY+N?2k9IIGy;vp%9a9+3)#3Dy!xb6&wunYrhwjq|dmB~9bQQHp0#p`c! zP>)4PAy9G5E02eUM9N)xG^TyonhQIFd6v`iUtC=nEL{Te#GXwSn>_4d{Mpo>L=eki z=hl%$o*eEm6;yN^k?4KHHV#Xl;Gl?R+i<|i284;&p^TBK@bq3HXc%^8X2*#j&4J$= z{!m2~-sLWB%PX_ zn}m&@3X%6KVjJgsKKX8^pn`8{`-ig@G@(J8M$to7hh$2RMPrNUurE@!OlYnXKF>p} zR3^>o$Ire_?Yy(M9j5pNUHg4y0tbkFaXxPuzi>e5jKvpW4140&SVr!}ZQr09oW`&>7XvO7Pl( zqJ3}@mgU1@lH$Pap=|TFs>+dh!O0ePLii4MrZb9VS+~YeuVWK~apS%1(M!u{Eo z{{cIE^wQL zN{8ik)^6g*_Fb{? zq9fQvfZ`1qbwybB`m~dBJr;h0!|Q4}1Ekn!KMU;=J%x(&IMoBaj`?|gegphR`x zFNmnhHe&fCrHJqFDjM$|hcq=58DTY)Hb=k4nzb zGte$Z9EBv=RAoNy?~&Rj?%`n2=y<9yT)Aq>4*VI%L1O_wU#{ln=91Y#DPMH=6AKe^ z4r0l#=bYxoO7s2<=ATVp9X)Tf^ag&PFUNop!OsZnv|4??60+WZfMp%~1z&-?bVVz` z`+qUDIQ~a2(A21wWHiJ7)JX{eA`v49+(h(*fOP4BEw`OY_Cm#9{a*--onW7b`T{t` zZ#hrzf!G&}x@}+_HtyfL@3OCjB_tY!oTGmH5WRAfIhkx-%l`cv}e855aG1-RL&H+xV~Ok*ZOH7_|T-fJI(7?wb0OZoZ|&J_+xE&Qy{)B z_ao6lQQ+loHww~N^EGW^O=Ba5-e!~ZL!a_t3&AUL2G?8`SxNh!^Isotpy_DV$3AKt zC(&wEgIF~yC z>ecw)UqNnI)?0US&&gQonsDc+;PeDZ7Pr7 zSN~efoH#=>E|_K|_$8!^J!g`Y1)6Xb`}X8mIR2Br@_X_XGSJ8G$T93t2dRElam%Kt z3n*^4Bh*q*ycDT=pB=Bh9vI3|@z8N1s22sbR|nIC1B%R_$&%W`Ly@@neGAkZXT8b3 zDITq{(f&33w%*j=F9DVQKyljNr~iI@mY6ct1*NmG+(Y-t7`*H{XV6v2HM<$}oj4?) zuF4LUEh^+;=o-r6kJ{2V{OhGLgp^a58YHuX?xaaU+Dyi(FJub;K@u1gBLC=e$jx1V z*O>99iSVLd#Zl6BdSf!Gxzq8^)s>x31JTX>!psTAHOM)IwDhQOa=lU8qbi*KF~x3D z*8>vHilH1atY?1y{8}s(_y)>dqI78LUYUHn z0m6twc0RV^PCDY1FfO*PeW~8(h(D;`?*zYSy)UixgO@5b24DoAbFt=Jap<%fG_8~J z<3BU3^-5u5fOX&*)o+D@ui=!(pU-h$g3qOXuXH9RYzS=Z>yobsOZ`$)>}?F!7iZI9 zdMw)5?sb3idbS0Ea)oBNbSL%ez>tYnYmZeo&y^d4Qoa`!VSeW8LO&7y)aesOLWu@+ zY7r2J%x3k3VL5EL|17#6B;Z%l3x=uy#|~@uIO?CGBS6Tz>~baXStz$c)jNjNPei-lF!1?zz$UTfeWIYOj-vm$&|#V0z!L#M55NL4y5^*qqG5EcoD` znuUV$AUbT4w_Pxux2~5Br1p#b?>Y{O77YMPIJ@+|eBU;9$`xNhs7;DpI6qJAv?SwA z!hjD`7Pe&^M!f<-eRlvf{j6w~(>TwE$A)d|`3w?4&M%W?dGblJwu=T?gPm@l@fpJP z%cR_Qsx7|+5>ZVfe0FsS^kuyGD!ta}qM&seJiIB0w}}(Ysy|xZQLv^2l$oF77V5j6 zuHJMQgOZT$7KBsjq!(}&z zTzLDVx4+aZ$TV?5ixGZKK+2X#^-;QF6Bw81j&@P6rk_EnFcJ_}e4TxUSe#4C!9i705%R+(a;G5Qil&d-8$y5 zFdsUlHJCS$`(ccn ziL%jeg!5z2LHt^k9MDT4FM$h42~k5`8ic?@v)L{sEn|y=>Agh)2b@^$C_zrCRYf8F zWIyU3iyUjEobX0xph}_pK~di$j^<3CWFp_!wA2YW$UAT!z8Cq?Fk#PDmHElJ?ys~l z@w{on)ezBM9x79moz3hKjsvi@f@DuG!M=goto=Nzbjc(74$In51pY~!kp9u3-QvGr-^>(01DU{0OsEg3z2M#jh1zpC?Doo1giWduP;0h z40o`dgHD3A8w046ql> zQNbGpq8nf;gi@IH{*VH01}2Sc;D(rsuxY696|Vo@oGc)Ix;u zm>Qy&MK!k$wwXpyWpT9Pzl?@RegL%Vxq2}I6WOZCu2a}p6|i#O_9$QhrMPPJ#53et zs%chK8YS>F3BNa^PhovWG`SqDSNcnzjQbSN^LtB^Z4AwuXih}va|A1vTBJA1c6Gl3 zP&!e3Z*X?t^k3&Snl_wg_)CMuwBERl&%oJdU%nfp_G5dGiBECLL#66@qD`hTiy|-r zk;%wMft)#DM5ae!pk|hQxGE4^K|YvNYlzu?oA0?%@U1NJ9O^mD@0soWM6#7?LEM%- z8libE-l0(l;%XuH6Swna%3h6p^UMFK`)Nzt`4V)pXZ~9ce*4^G{6ze3twU1yhZOxO z%pqo?oThGSlnWa*VO9z?iQ-J*|(=^!FMlzvnbw+al_dWoED2D^E8isv%E1-kJIu-8iQ znl25#j6MHF_wvO5hC1&hRNJ2Qm~Pe#!5Rsf$*_HxVta#A{H#3$mIZ1&t3cGOe~0}f z!d@g$REiuPc%)reKXOCP<+?Giaxts~N37c> zVs>_RfFE1A`^STQ@Ym;#9}1{j5Axb$h7oE;`R)Ar>$4UxPRke;=W~Gp1ev6FQcAi! zA7nl(*@x%^-T^zIUw3|=+Gr+zP}knaUIypO)ed|A74uCo_6dIO3l4NWZKLqIUIa%k zi;vqFIgYMf6GHpttQ_H0M|r};8%2rWVF-J9g^}q<1bSqln>~Xo5ewYkXL=;^Sw9@EJzSU;(A)>zs6_@%_1tE^^`7TIcCPk!@3&I5sH1V8L z@i8mpXz#R^`o;L42?J9nwS~^19kmx}1rasjW@?9+T$_T{k9@es*p792w8^d?RIA`l zY(uMaOOUGI)kWf=LNPts%r#0BxZ7VrL6RYxTVIa>)LN$B!8$)>`(j`fx?hfSqGd67 z$b>ECn4`&Dk|M6D_rl&n&;{A_sS~9|YQn zHdc<2BDql6MyXti=Hb$dy<6t=@XR@GKo;sbd_9XCOvS9vMa3>?yEXtju({R;vil~+-cs=6 zBfp#?dcV~7tQwg6xd7AjxCYAdT=#-(ij8*b=PS9zg2W(M<(R|m>O0rx^Ad2?IBwuv z-!CZkuBPKEv{*Lv43fg)%<<#(0Z8R{YaX9qNV-ati6B$4G+m-_2%6(f~ojiW;bq_)*!xjh!P=gOs-q)oh%Rd?WL`8E7< zH#XoVuk?u|!$b5mAZ%?NKa=s$tZ}gif&>$^N+^DxQT+ zwv2rOs-rggm5~f*h>#}ns=-pYsFhO&!?m`NB+6aSL%U(r-JM6GVTBffWfBUtsz%wl z^2kdG5N7vYOu2q9O+c97@Phg`%Vj(2URn`hJ3f2W2LN0sEQK{ z!$db|@NSA|0nt0a1a1=q7k#d>oR`nd8GAaRL1sk!`@@SrawEkY!BR5v5`Oh}_>Y-7 z_FeKxM%P|DjAz{NaPpXNE2t5ycJyOlK!y`j)l2?zTO zZ}yO~N~g>f^gh`5L}8hVG=V&RzG`Mi+f#v>48tXRTxKo+*I`bBg9@bh(8aD(i;VIceB{p_!eh( z)apFvYhZ`!9dpBS(ntDk_h*7D88o4?2}8*{_CE>h{w%zcWG$QZdkTaau~r=eup5sG zBZM3Lb~CgSy-^Gg&xcm`k-;?Q5&U%uFvutks#v0_?kGHtobV3B{^171-=Ri({k4d? zyN>w&rBiooDurgnSM#?=?OClGs%VTYXNApCD|Zruj!uYMTC-LTWKa9*vMPu`uxuKI zH=0b;H9?1Kz;)7z6=HehMfei-6_3x}?dL(S?XZ`t!(p5nB*e_k!KEf+zVW1I@q>^U z)V5+c19r0$_rQU6l7#9jRaiMEMHl$|5jq&AAsiW`-N8S0`zJ9^VdkL>cjT0X2>dss z*nMxME06q>v^m7Fe=vb(Fjp&?RfO3w^u~nvewTkK4%P;VY#C*0G_zKexUt_)#!0%$ zDis17EJt2-?!|@=vS{xkTM3Uz`U6GZ0Z)h zApW|+Sg)?FMftqC7AP4#dHb`<*$HS~@A{pvMf|?|_WONx#rJtY2f%;rk=i|gI7LY& z-D1$^t@+P|`M+E%XdSrwUMPgH@NwSriBMhr2+AVE_yU7;upFQ4o@c&ZQVqX8eKNjJ zKxv&rZ2aU05a$ZT&TR)|05Gl@@$hOT@;s{R`#djm5r$ciaW1cXmCekGtt{YakM;$Bju`?z1!>mMDCJ-7IX29mP z36+AAv?1-hZR!A@qZTK<%+OXB0Aa$gX)Vv%8yw=n=2(Ac1zj+|+x9SFB5w*d=>{!XEa4X18m=#{X3D`927u7c&-W98%%Hkqqt*Ik z3ad4jD8jrx_C<$zCvDOs7#WceN_~2BA$khs>LtvvtF4b@dGPcU-3||<(Wp0QDGo_x ziXYUfP?&AA05`ZB@6;5~ z_Tq&B1;PQx#)vrTO6&~R!lNeh!8nnqX=e3?S)Ru3=!2!Sh2Ff0^7HSn!wL%sw^~3s zchOAB;>d3baCE|*rzAt<_Kk+Oa!!ZgBDH8oQi8DM(%G?f4`C}18Rp3+Vj*ltIMU|9 zBJP)P!bu4-AV~$^G+4M2a$|?oMD@zIE zJc5!uwqiWFPO}yC#dg=oheSS~Ro`S5w<^M>vZ(1s%O!}xlAH&fHrPbFLbh+m6Rqu~ zI4rY2MwJ_w`+1tHDz>6t=X5B;<**C3>GR~1@!mjHck@}BY5xfg>Sle2bkM8$;CtR3 zc#UNm3`J5LV0`cQO1k-x&cVi3b&WH?jRME1N>na&9(Ts(dbv&*{F3VT!siV@&|f}x zr}gKb4nUDG={N9-opX(9)nNjf_?Sb6`N$GduBiF4{j6yLv5aT-9QsOjS5FZNuk)G{Rr`PDJ@E0EN>xl z`${J6tcT3V%4n&IoZzLny z$reJZ&}%j&D&@esaHD|%(3VHij3hhWS&q%BdoiH>m!I&Gj7W_KnZoQ3j{cz&9#)># z4Egm462>y)RaL$8ADKC@Q`Ez-BPOhY#n_O;wRmF=0le!*R-d)spp%GyvYvrJH?gAqz`+>yjl4tPp?qfXp%H{GdBl$5Mvj$-iIkFU&b%KyV2-H3O)<;dhjm>`VzE-IVDi+zmu6Acef5C z7M89cPq&p%AQ|p=xs6=rte!{ct)?;d&A#$CX~t(7e(OXk<-xSp*P}_Liy^{QuJWkD ze=32;$U>}u<(o=jR5Lr+^ZG{D=FHCXcgLM`Bj;>)5-aF(AP9V9YV=!H9@8Y+p!Cju z_GY%rUarFbvy#6MPMG9fZkSjE|NB_e4&?lLXS-Nug%bU-@9-X}*Y=ek!z4E<&B!T5rqq!i<_Uq z=x4z72$#&kEHe!vLVU*lxNqs`k1Gb5oCz^q^s_jMtWF5*loT|QX>+`GN)q`;@QI|K zH;U&~bYINEnn;aCi*LI7@u9)>@T%fT5LUx=bXFt2Sl?A6JDuEOu&U6DGn;ToW#C6M z;7GT?o@oz~Y|wI2NoR}l6y}F)**k6U$je)I^_a5T_)1u{d1)h@k(h($$DGt(* zF4QIalIPV5$52zsBCP-(s@s_Blznu|E>O#|%VJqMKUuqk7#TTA?@j8`{1cHP30WJ< zhsxnPiKDDsP2@0r9kbD2iN{nwEnLx{pWP+3B!<<*BI8SCJruG`tJ9)?NmK`Om-vKw zmjB|V1XVmnM{CepAt|<`Tx+l(BUw1L^?Z>y=8Kq?kNvQuih_4ViFBug)l9| zn!CAWRl?%}bCuOne;exi{1C$>oai2Z%-O6e=)sU`I2JQIDP9t~UgUU5nPY|b5qx7# z3ENGJ3l=iCtM{Y2SiOhpd`#t_Y0ve)s^N&|bq)Bwe%zT?G9|R5$Cc9iq-rff8F832 zqDd5%;;_!^6$rVvq2Ebx^_@T>qWbfrf8j^nesM>TgRLzV*Qy(8EQO1g9rIc(kyrTO z&cw+Fz)k=w+z10*_d)F76CBTMgzBpiNJSXuf4PyUckkc+6Z3a})>^nxL3E<^XFM3H zmT2TNoXnK3XoNo8ET&~nWNTJxzOg$G2<1>A8Jhe;3j$UurnEu+O|t8b9RzVVOuL{% zWXXX2u(UkonAHPeNkiF+yG?cE5u$akMfhfvb_P&sJtI*WM$u$@hd(K$e8g`?|B!DKVl#?_q`4f3L{&fQ?ue?)oJe0S)%`#&$>Idmbp1}`xsuBBRxpN6N zjooNGJpUew*R&SM#LV4LYQ{;7JxTvSaI@8?al!onQz>PAvFya_Vl}XEK>Y>-1EO$% zF?taZorV2k>2q+2*K-Dil1`#>M;h1WqOnEA;ktpda}HzBmw~oyXl>srTQr>g#w@sj zpZzPpA9=+kOV1cpcL#kWhU0Nk!c9-tX(|0Mqb%h zAfpGuTl`fRiY_lyZsVy*eq?kwL?m9aGp;PSDX&Q6U-t@dr3lG)_T>kJmcV*>n)f|3 zcUxm@40nde8lIp|s%ChJzZqKO5yw(E@H1DL^o(pD?9YkLMC;+Mm~^qXOW`Pp>&G7G z^()gZ8)cD)>DxL8OCeO|iJ*+UGShYnMu#S$T23#a3MI8gulOlnpU9+!?+@@ zBWj%jqeJfqaMIbwN`Br;P-B=RK`Gy!=7Xdba5D)6h?NRzdYl?8Q9tuQxb7>#H|=OX>rFJ1 z`sGw|2rCE6b>2~t3Ax8v-YLa3y^%0C2CSu&VabR(UZmX|AI+g*HE|zZ_OLdBkRLGj-R*c5&VKtpMzTm2JcMJ$v3WP`uF3D5T=hR)daxq~ z_Q>|;0(b1Z`#20u^aNtlc5mLLy{jV{`80sgf8Xi^%F@LX#-$461Q-ohsaIH=X*}9Xm5Q8C9cqITVZDV@(EowEHsag+W!yTQuV9IqAbi_Y^1TWQtLZJJKZQg9i)zS%|$kUL8MH}l-OiH^y(eW7+9`r{uPYAz8`p7|}#~~#R@)Dv^ zMX*4zWQ&Yfs>_hif2Y7qbegIM?s}!+_^sv;D{uy?0D}Lr)KP})h~84tqt?iwanH@p z`e!hP{^4HxW#vmXD845RxHf{vv?WoRr%p7x+#Y`#xS1-( z___GZ;^2phCWFpJ3ogAEjUoG(grU2bJ%R%FRqj2<=6@JBqGd0jm|#y`fJnk1s^w|w z0g*z9ui1?a$cYgv0+~Eufg+(2DKr|V9h`{ zSMcu`-#Og1(iHBAY|YEX4^zuqYVX9LC-qP-8x`2QUA8Tj;U>(nM3QQk)}1jKD7rjY zptJ-`SLqt)8ll?tN+?bsXu8UGeXXS3d{>376Jox<$y&3D;Ocy6sk+{xG6>wgCnNy+ zLcY5;N~JWTfh&!{II(DBHl*YTolVjH|6H`hMiEOf2^xxW)XKs3dH7y}?R;RK`c_Zk zw-E|jDsxt7kAURcQJW>c$d8vneV@SXlKXC!ZRcC20HrLFMK;!#J3v2MH8eG&c{Fsn zYDA~-{pC*O<2qzUo-jJbIo^|p?Q3g=8>!*$t{(0Q?<2kmb~ELpwDu3{ip}Qo^?`t{ z4y-w@s&yyzR&e9;$wk%{b8vR?*vntR>-Ak>(FIFaG~(iT6C}7&1@WqF=fbj3P9D++ zXUp&TgsN3*VhX#wC1kU=1(soN1co7>S4v5FRy?~Xguw^jsk0SzoH!LwL!98gM&MWt z0H)I3<@aFdVv1yh;HYR8iHAS1^l7#*;fC*MF+B1uMalFNho%Nzyfr|zmFzi9De6OI zc4rc#^IE|C5bL-UT_+o>kThMWnM>GA272^T%duc-IMPJrJM~~3U`R|Px^0CC*&k^T zI!t)GJeSP1&QpiMtb+TOJ2uDHF0BGK0z7G8rEPEVMtfVI60v$j5$FjNdwz>LCS3~cSXq@P_|gVXrD6TV|ppCyd zgM$BJ=y>&{e?H}P2P5*>)w6Js@w|G6{wIG4`n}nvbMRQzyrWlZ^As- zM?{4z;FW!U$?V|~AD>Qpth`{<{_rE<;(e#R`jx5O%Tv3AKk=<8%RLfpcl8kqqvSe$ zxC6ER1raG)Zj8UV{CJtQIoxN}30uNKZ*-~nt2$R&F_K{IUviIZAtPq=k4JnW@NJta z#Z+GudL}K-_vzzu1GhnUcwV!c4|KvFuJWW;8!=39XW4)e^~WkY-7}Bzo}Uq_%MrZ% z5+lBry39IQ!|CwHAHV!_R^!>qm`XRr`0}CENu_>~Tl29Klk#Z5GDDLs>P9tCPUdMn z(%5(!ZqsQU>^Fhh*>j-gP6_}YPcn`-X$BsZuo=iXKMa!3nl^(gVMml8qv-P1;n5X5 zTkx;_?+Cj{`k}^pCYtUmcKemw*A|VOEh^O-J=)NBi$`Au&+f%!yy)24%X*l<3hcOS zT}eO|av0s!(rf!sE|=LMCr=wO6&3_$R&BJOm;^skYwnP8{}lFYP)eVC z1^2vl#0|VQ&IBec=Rgs^UhV{gmgiOhTg@waNFWwuY));gj?4Efr!yX|heg#qH#0_E zzmGq4j|a^>MBctjOB(&_&DMZH48>VHs zUl8JgJP@!?+=BNnK>qWl9#h(1eHBYo7EctisW?<;ynlB>)@>g$k__sdB(v&2b-BLw zCh|K|J(jZ@0$ zEEkPgXc^>Ew`wLlRVKlaw_Pj|a($}P_|8Z^h5OE&Ko3bp=EF&JmPVkPP^*4?+x(|? zhL9rW=83vRoXCI!B$Hk~aTuT9ESkT`kB+1gd_Whjp?)L+XiB!hA<8!4n-O6v(8j-TS9$K z_`N9Bna}8f;!+3(AFqwO{5{VM^8Q`-^Ao`3)=gLth!GKF>}3?GC6fg$`%wmRw!AvdWo_y2X4&f$Jf<@xj}*ldRj* zd^!|?p&jDizm9yJhYqaD*f8kGL3~1@0B6R3h>us>&>H$*-?qLfXnMg62ZYQ)9;S*fno6dvcxR!ANdCg5~-xN|pHey%hv@Di)-U|C= z&xx#7J=3$XGH-qp8whA@9m zV;{sJz^rumx27W8cShFG zG4sb$N2v#04z;iiNbny&Rlet1t!Czbo(GIv#F!DqrFT{uK*O<<@(|0%+-w&wtH@fj3ZU4c|-b zzZBS_D`e|A4w(W!^*tFo|BI=7eclO%98RQCe&lI6WH!CDM;C?-$)@xruXGV9 zaDULXea6@aK#vSP#O30^L@vKmOJDrM0(p`im(`xjJq6i|!3B2NVf)-rv z_X(1KlFV(WyW^QK))~Hq1PVM!n8xGDkW{SvkP-~@shrA<3r#~AqUOPGFyETS?vHcU zzzA~O)e`h)Xvu8AbsaB}9G(aT0}p96&TrgLZ3(8gqTZkmhN0ASoXF($Egu>=mN7D=`GUr z3HUzf{rt&Ego0E2BA|YKNzS=6k~l`?XLP7V9hHb}V-+dCW7B+qX2(hkWn~C#gv*b} zCou&JI7LqiEVRVSVMfyFV8RVKT@FI+CGSnR6+6-d;qHlB@rC>upaRQzG~;Bt1|k&& z9GpnNyWGP>9h&shV^FB^3pt(yt)*{qJHeDy4%~Rf&01V@XC4|)7>QLTFHX$QahXgu z*jqsVY${l+EjGC#r2w8O2K4wpTSX97`pd47Nb|hk8BO-S>Y?>tu5{?LcuRKlw6n;ZWl}l zQemo!;)R4^R7wY@u%;#T$t+(3TH!@w2JJI3O5R;}~|NTY3ze2sT348taZ~}z6eS^4IZ%5b$g$Atv^IL9PNO63(xSiJ@J+QyC ze*?F!eNY}Rwh?Om2F?wZC)0ud(V~kxFt%@EGao1q2zK5%_&!(nmtzjQS#7hjhz933j+1O|*_~WA(e{snN8(;b*_5-CAd|Jb z8UE^zD#0g_4~4mdO;$w#a2!3?Vxs@?P~jdq2ikFTD?*+!_1v*t?KVo}$MV0-bD7;J z0IcN5sAaa!U;J)XM&Qy=i;;bNn|J#g21}rE;wtN<&iq&*4fYIJI^g-QE@@j)5!F|j@`gJz&`O?u-yvf=7R$W@TY9( zHgGdiJOBBsO0(v5M#g=BKp&;&Nzhk6fofwnSMW~jzpT)O+Q-lR6R;=o=V{PaHbD{j0Da}13U*Z01--7)ss4Oz6pvOXseciioCn#0>U>6s zJ;0W;nvjt%Hq5VC=2jLSeJ8QqEhHqo=yz7WVHbqIP5dOs^gNZV9WHlT zVH9-TBH=q=&1ed2gdU0`{1KYkmZ5M4S3So@E!0Q7!Jf;&QAl>%tRH=rlVb$|U5lKZ zj}J^m?}FvaG+fAD4u(`7Dm*!B?zCviM=EanML0@21<`TUx+Is#?-Q^6i-o4!u8$Yo z4pYr5r_FnWtve;lyPpbEpiI{J=AS2*fkpyO4#MO4;)(mdoS~@H-n$t=m=XB>{h0G> z&CK$i(~{P+j%p&m3*{3~Gm-NmzAxxPf=nIDZROM8(AO`D%&BG3{5I-9s3G+VSs*~E z&sP<_)6VM)2@5woprl&E;t+L9-g%g_I7*3YXpVxt`Zg2o4RRp9KU2sW9hqPu>Bmi? zqb6DX{hN5<#vkk~>d~eq;NA{ZG%*gUm@*ze%4%qU_?zHr+jz|I8SYAx9v*0;^oRB~ zt3;6?Hm5h7@l6M6W{-}*h%P~4&%L6KN?BYNtw2vF^43`Hhl+?S`Poi}#(k|G6Sg*2 zNt(GV=8RD3AtO8+)c5)*?TdI9NvIt_Q4vBQmtS%}Wi`KTx-zmZnAIM8QY2CUBv(u2 z&HK~Y7XiV_Q8jR(Ta~;`i7R;jn?Pm4_5PXa8^N8grB3h8&*-5Wi;8tId-Yw@0rqC$ z|IF|rLTiC&IHQDw*%%zH;cnzUAZ2%9CzVmZ=2ZiW!`2fm$Imcn*@_zkz(-%b3K}8y zQ?c&4*ytd3{h2>loT>-Wy5kDdsgUr^??b~60Yw0ax(SLS1G?Xc{HGZ0mTz{qWSz}s zmM230ON`cmQs~dcpcf^`3h35b^P3mYFu}M`LX?2|e5TQZ%xLRdUaUYx#IRh$OPJ&H z3fHB4sdliR#eHXRPRlru!{33)yL`AJ%tWvfc&2Tm_iYYEVO*V4VoM3&9!w`srj@ zJ3S-j@0NJ;W~6d%fPg6^AL=oGx#8ApUDNYzT7!HQbbjF!?cF7�wqzBSr=keZ5=l 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 literal 0 HcmV?d00001 diff --git a/public/images/integrations/digitalocean-logo.svg b/public/images/integrations/digitalocean-logo.svg new file mode 100755 index 000000000..10f3f8759 --- /dev/null +++ b/public/images/integrations/digitalocean-logo.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/integrations/gitpod-logo.svg b/public/images/integrations/gitpod-logo.svg new file mode 100644 index 000000000..9d9ea09c7 --- /dev/null +++ b/public/images/integrations/gitpod-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/sponsorship.svg b/public/images/sponsorship.svg new file mode 100644 index 000000000..f1a7e6749 --- /dev/null +++ b/public/images/sponsorship.svg @@ -0,0 +1,29 @@ + + + + + + + + + + SPONSORED BY + THE OPEN-SOURCE BACKEND AS A SERVICE + \ No newline at end of file From 8faa46de9bfb91c78afb7a85d05b098c204dfb53 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 16 Nov 2022 10:26:00 +0100 Subject: [PATCH 2/6] fix: remove unused github-logo --- public/images/github-logo.png | Bin 37397 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/images/github-logo.png diff --git a/public/images/github-logo.png b/public/images/github-logo.png deleted file mode 100644 index 7927c24e98d7b7df564efd4e44cd537c6eb1a4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37397 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