node-appwrite 17.2.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +67 -2
  2. package/dist/client.js +3 -3
  3. package/dist/client.js.map +1 -1
  4. package/dist/client.mjs +3 -3
  5. package/dist/client.mjs.map +1 -1
  6. package/dist/enums/{v-c-s-deployment-type.js → vcs-deployment-type.js} +1 -1
  7. package/dist/enums/vcs-deployment-type.js.map +1 -0
  8. package/dist/enums/{v-c-s-deployment-type.mjs → vcs-deployment-type.mjs} +2 -2
  9. package/dist/enums/vcs-deployment-type.mjs.map +1 -0
  10. package/dist/index.d.mts +2 -1
  11. package/dist/index.d.ts +2 -1
  12. package/dist/index.js +7 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +2 -1
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/models.d.mts +717 -58
  17. package/dist/models.d.ts +717 -58
  18. package/dist/query.d.mts +70 -0
  19. package/dist/query.d.ts +70 -0
  20. package/dist/query.js +70 -0
  21. package/dist/query.js.map +1 -1
  22. package/dist/query.mjs +70 -0
  23. package/dist/query.mjs.map +1 -1
  24. package/dist/services/account.d.mts +625 -70
  25. package/dist/services/account.d.ts +625 -70
  26. package/dist/services/account.js +592 -292
  27. package/dist/services/account.js.map +1 -1
  28. package/dist/services/account.mjs +592 -292
  29. package/dist/services/account.mjs.map +1 -1
  30. package/dist/services/avatars.d.mts +157 -26
  31. package/dist/services/avatars.d.ts +157 -26
  32. package/dist/services/avatars.js +104 -93
  33. package/dist/services/avatars.js.map +1 -1
  34. package/dist/services/avatars.mjs +104 -93
  35. package/dist/services/avatars.mjs.map +1 -1
  36. package/dist/services/databases.d.mts +1224 -248
  37. package/dist/services/databases.d.ts +1224 -248
  38. package/dist/services/databases.js +877 -611
  39. package/dist/services/databases.js.map +1 -1
  40. package/dist/services/databases.mjs +877 -611
  41. package/dist/services/databases.mjs.map +1 -1
  42. package/dist/services/functions.d.mts +530 -107
  43. package/dist/services/functions.d.ts +530 -107
  44. package/dist/services/functions.js +393 -276
  45. package/dist/services/functions.js.map +1 -1
  46. package/dist/services/functions.mjs +393 -276
  47. package/dist/services/functions.mjs.map +1 -1
  48. package/dist/services/graphql.d.mts +24 -2
  49. package/dist/services/graphql.d.ts +24 -2
  50. package/dist/services/graphql.js +20 -16
  51. package/dist/services/graphql.js.map +1 -1
  52. package/dist/services/graphql.mjs +20 -16
  53. package/dist/services/graphql.mjs.map +1 -1
  54. package/dist/services/health.d.mts +175 -16
  55. package/dist/services/health.d.ts +175 -16
  56. package/dist/services/health.js +144 -115
  57. package/dist/services/health.js.map +1 -1
  58. package/dist/services/health.mjs +144 -115
  59. package/dist/services/health.mjs.map +1 -1
  60. package/dist/services/locale.js.map +1 -1
  61. package/dist/services/locale.mjs.map +1 -1
  62. package/dist/services/messaging.d.mts +1544 -262
  63. package/dist/services/messaging.d.ts +1544 -262
  64. package/dist/services/messaging.js +1417 -592
  65. package/dist/services/messaging.js.map +1 -1
  66. package/dist/services/messaging.mjs +1417 -592
  67. package/dist/services/messaging.mjs.map +1 -1
  68. package/dist/services/sites.d.mts +495 -99
  69. package/dist/services/sites.d.ts +495 -99
  70. package/dist/services/sites.js +371 -258
  71. package/dist/services/sites.js.map +1 -1
  72. package/dist/services/sites.mjs +371 -258
  73. package/dist/services/sites.mjs.map +1 -1
  74. package/dist/services/storage.d.mts +306 -63
  75. package/dist/services/storage.d.ts +306 -63
  76. package/dist/services/storage.js +225 -158
  77. package/dist/services/storage.js.map +1 -1
  78. package/dist/services/storage.mjs +225 -158
  79. package/dist/services/storage.mjs.map +1 -1
  80. package/dist/services/tables-db.d.mts +1549 -0
  81. package/dist/services/tables-db.d.ts +1549 -0
  82. package/dist/services/tables-db.js +2374 -0
  83. package/dist/services/tables-db.js.map +1 -0
  84. package/dist/services/tables-db.mjs +2373 -0
  85. package/dist/services/tables-db.mjs.map +1 -0
  86. package/dist/services/teams.d.mts +233 -39
  87. package/dist/services/teams.d.ts +233 -39
  88. package/dist/services/teams.js +170 -135
  89. package/dist/services/teams.js.map +1 -1
  90. package/dist/services/teams.mjs +170 -135
  91. package/dist/services/teams.mjs.map +1 -1
  92. package/dist/services/tokens.d.mts +76 -11
  93. package/dist/services/tokens.d.ts +76 -11
  94. package/dist/services/tokens.js +60 -45
  95. package/dist/services/tokens.js.map +1 -1
  96. package/dist/services/tokens.mjs +60 -45
  97. package/dist/services/tokens.mjs.map +1 -1
  98. package/dist/services/users.d.mts +842 -115
  99. package/dist/services/users.d.ts +842 -115
  100. package/dist/services/users.js +719 -408
  101. package/dist/services/users.js.map +1 -1
  102. package/dist/services/users.mjs +719 -408
  103. package/dist/services/users.mjs.map +1 -1
  104. package/package.json +1 -1
  105. package/dist/enums/v-c-s-deployment-type.js.map +0 -1
  106. package/dist/enums/v-c-s-deployment-type.mjs.map +0 -1
  107. /package/dist/enums/{v-c-s-deployment-type.d.mts → vcs-deployment-type.d.mts} +0 -0
  108. /package/dist/enums/{v-c-s-deployment-type.d.ts → vcs-deployment-type.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/databases.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { RelationshipType } from '../enums/relationship-type';\nimport { RelationMutate } from '../enums/relation-mutate';\nimport { IndexType } from '../enums/index-type';\n\nexport class Databases {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise<Models.DatabaseList>}\n */\n list(queries?: string[], search?: string): Promise<Models.DatabaseList> {\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a new Database.\n * \n *\n * @param {string} databaseId\n * @param {string} name\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n */\n create(databaseId: string, name: string, enabled?: boolean): Promise<Models.Database> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof databaseId !== 'undefined') {\n payload['databaseId'] = databaseId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.\n *\n * @param {string} databaseId\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n */\n get(databaseId: string): Promise<Models.Database> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a database by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} name\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n */\n update(databaseId: string, name: string, enabled?: boolean): Promise<Models.Database> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.\n *\n * @param {string} databaseId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n delete(databaseId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.\n *\n * @param {string} databaseId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise<Models.CollectionList>}\n */\n listCollections(databaseId: string, queries?: string[], search?: string): Promise<Models.CollectionList> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} documentSecurity\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n */\n createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof collectionId !== 'undefined') {\n payload['collectionId'] = collectionId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n */\n getCollection(databaseId: string, collectionId: string): Promise<Models.Collection> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a collection by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} documentSecurity\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n */\n updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n deleteCollection(databaseId: string, collectionId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * List attributes in the collection.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeList>}\n */\n listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.AttributeList> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a boolean attribute.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {boolean} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeBoolean>}\n */\n createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise<Models.AttributeBoolean> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a boolean attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {boolean} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeBoolean>}\n */\n updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string): Promise<Models.AttributeBoolean> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a date time attribute according to the ISO 8601 standard.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeDatetime>}\n */\n createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeDatetime> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a date time attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeDatetime>}\n */\n updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeDatetime> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create an email attribute.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEmail>}\n */\n createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeEmail> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an email attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEmail>}\n */\n updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeEmail> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {string[]} elements\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEnum>}\n */\n createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeEnum> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an enum attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {string[]} elements\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEnum>}\n */\n updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeEnum> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a float attribute. Optionally, minimum and maximum values can be provided.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeFloat>}\n */\n createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<Models.AttributeFloat> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a float attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} xdefault\n * @param {number} min\n * @param {number} max\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeFloat>}\n */\n updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string): Promise<Models.AttributeFloat> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create an integer attribute. Optionally, minimum and maximum values can be provided.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeInteger>}\n */\n createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<Models.AttributeInteger> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an integer attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} xdefault\n * @param {number} min\n * @param {number} max\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeInteger>}\n */\n updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string): Promise<Models.AttributeInteger> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create IP address attribute.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeIp>}\n */\n createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeIp> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an ip attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeIp>}\n */\n updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeIp> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} relatedCollectionId\n * @param {RelationshipType} type\n * @param {boolean} twoWay\n * @param {string} key\n * @param {string} twoWayKey\n * @param {RelationMutate} onDelete\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeRelationship>}\n */\n createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise<Models.AttributeRelationship> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof relatedCollectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"relatedCollectionId\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof relatedCollectionId !== 'undefined') {\n payload['relatedCollectionId'] = relatedCollectionId;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof twoWay !== 'undefined') {\n payload['twoWay'] = twoWay;\n }\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof twoWayKey !== 'undefined') {\n payload['twoWayKey'] = twoWayKey;\n }\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a string attribute.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {number} size\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @param {boolean} encrypt\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeString>}\n */\n createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise<Models.AttributeString> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof size === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"size\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n if (typeof encrypt !== 'undefined') {\n payload['encrypt'] = encrypt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a string attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {number} size\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeString>}\n */\n updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string): Promise<Models.AttributeString> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a URL attribute.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeUrl>}\n */\n createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeUrl> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an url attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeUrl>}\n */\n updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeUrl> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get attribute by ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Deletes an attribute.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {RelationMutate} onDelete\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeRelationship>}\n */\n updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string): Promise<Models.AttributeRelationship> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a list of all the user&#039;s documents in a given collection. You can use the query params to filter your results.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n */\n listDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.DocumentList<Document>> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {Document extends Models.DefaultDocument ? Models.DataWithoutDocumentKeys : Omit<Document, keyof Models.Document>} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n */\n createDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Models.DataWithoutDocumentKeys : Omit<Document, keyof Models.Document>, permissions?: string[]): Promise<Document> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof data === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"data\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documentId !== 'undefined') {\n payload['documentId'] = documentId;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * **WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n * \n * Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {object[]} documents\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n */\n createDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documents: object[]): Promise<Models.DocumentList<Document>> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documents === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documents\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documents !== 'undefined') {\n payload['documents'] = documents;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * **WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n * \n * Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n * \n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {object[]} documents\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n */\n upsertDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documents: object[]): Promise<Models.DocumentList<Document>> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documents === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documents\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documents !== 'undefined') {\n payload['documents'] = documents;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * **WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n * \n * Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {object} data\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n */\n updateDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, data?: object, queries?: string[]): Promise<Models.DocumentList<Document>> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * **WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n * \n * Bulk delete documents using queries, if no queries are passed then all documents are deleted.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n */\n deleteDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.DocumentList<Document>> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a document by its unique ID. This endpoint response returns a JSON object with the document data.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n */\n getDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise<Document> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * **WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n * \n * Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {object} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n */\n upsertDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, data: object, permissions?: string[]): Promise<Document> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof data === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"data\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {Partial<Document extends Models.DefaultDocument ? Models.DataWithoutDocumentKeys : Omit<Document, keyof Models.Document>>} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n */\n updateDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, data?: Partial<Document extends Models.DefaultDocument ? Models.DataWithoutDocumentKeys : Omit<Document, keyof Models.Document>>, permissions?: string[]): Promise<Document> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete a document by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Decrement a specific attribute of a document by a given value.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {string} attribute\n * @param {number} value\n * @param {number} min\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n */\n decrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, min?: number): Promise<Document> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof attribute === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attribute\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/decrement'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId).replace('{attribute}', attribute);\n const payload: Payload = {};\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Increment a specific attribute of a document by a given value.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {string} attribute\n * @param {number} value\n * @param {number} max\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n */\n incrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, max?: number): Promise<Document> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof attribute === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attribute\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/increment'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId).replace('{attribute}', attribute);\n const payload: Payload = {};\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * List indexes in the collection.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise<Models.IndexList>}\n */\n listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.IndexList> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\n * Attributes can be `key`, `fulltext`, and `unique`.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {IndexType} type\n * @param {string[]} attributes\n * @param {string[]} orders\n * @param {number[]} lengths\n * @throws {AppwriteException}\n * @returns {Promise<Models.Index>}\n */\n createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[], lengths?: number[]): Promise<Models.Index> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n if (typeof attributes === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attributes\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof attributes !== 'undefined') {\n payload['attributes'] = attributes;\n }\n if (typeof orders !== 'undefined') {\n payload['orders'] = orders;\n }\n if (typeof lengths !== 'undefined') {\n payload['lengths'] = lengths;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get index by ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<Models.Index>}\n */\n getIndex(databaseId: string, collectionId: string, key: string): Promise<Models.Index> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete an index.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/services/databases.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nimport { RelationshipType } from '../enums/relationship-type';\nimport { RelationMutate } from '../enums/relation-mutate';\nimport { IndexType } from '../enums/index-type';\n\nexport class Databases {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.\n *\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name\n * @param {string} params.search - Search term to filter your list results. Max length: 256 chars.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DatabaseList>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.list` instead.\n */\n list(params?: { queries?: string[], search?: string }): Promise<Models.DatabaseList>;\n /**\n * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.\n *\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name\n * @param {string} search - Search term to filter your list results. Max length: 256 chars.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DatabaseList>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n list(queries?: string[], search?: string): Promise<Models.DatabaseList>;\n list(\n paramsOrFirst?: { queries?: string[], search?: string } | string[],\n ...rest: [(string)?] \n ): Promise<Models.DatabaseList> {\n let params: { queries?: string[], search?: string };\n \n if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { queries?: string[], search?: string };\n } else {\n params = {\n queries: paramsOrFirst as string[],\n search: rest[0] as string \n };\n }\n \n const queries = params.queries;\n const search = params.search;\n\n\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a new Database.\n * \n *\n * @param {string} params.databaseId - Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. 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.\n * @param {string} params.name - Database name. Max length: 128 chars.\n * @param {boolean} params.enabled - Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createDatabase` instead.\n */\n create(params: { databaseId: string, name: string, enabled?: boolean }): Promise<Models.Database>;\n /**\n * Create a new Database.\n * \n *\n * @param {string} databaseId - Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. 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.\n * @param {string} name - Database name. Max length: 128 chars.\n * @param {boolean} enabled - Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n create(databaseId: string, name: string, enabled?: boolean): Promise<Models.Database>;\n create(\n paramsOrFirst: { databaseId: string, name: string, enabled?: boolean } | string,\n ...rest: [(string)?, (boolean)?] \n ): Promise<Models.Database> {\n let params: { databaseId: string, name: string, enabled?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, name: string, enabled?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n name: rest[0] as string,\n enabled: rest[1] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const name = params.name;\n const enabled = params.enabled;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof databaseId !== 'undefined') {\n payload['databaseId'] = databaseId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.\n *\n * @param {string} params.databaseId - Database ID.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.get` instead.\n */\n get(params: { databaseId: string }): Promise<Models.Database>;\n /**\n * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.\n *\n * @param {string} databaseId - Database ID.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n get(databaseId: string): Promise<Models.Database>;\n get(\n paramsOrFirst: { databaseId: string } | string \n ): Promise<Models.Database> {\n let params: { databaseId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string \n };\n }\n \n const databaseId = params.databaseId;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a database by its unique ID.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.name - Database name. Max length: 128 chars.\n * @param {boolean} params.enabled - Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.update` instead.\n */\n update(params: { databaseId: string, name: string, enabled?: boolean }): Promise<Models.Database>;\n /**\n * Update a database by its unique ID.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} name - Database name. Max length: 128 chars.\n * @param {boolean} enabled - Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Database>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n update(databaseId: string, name: string, enabled?: boolean): Promise<Models.Database>;\n update(\n paramsOrFirst: { databaseId: string, name: string, enabled?: boolean } | string,\n ...rest: [(string)?, (boolean)?] \n ): Promise<Models.Database> {\n let params: { databaseId: string, name: string, enabled?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, name: string, enabled?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n name: rest[0] as string,\n enabled: rest[1] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const name = params.name;\n const enabled = params.enabled;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.\n *\n * @param {string} params.databaseId - Database ID.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.delete` instead.\n */\n delete(params: { databaseId: string }): Promise<{}>;\n /**\n * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.\n *\n * @param {string} databaseId - Database ID.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n delete(databaseId: string): Promise<{}>;\n delete(\n paramsOrFirst: { databaseId: string } | string \n ): Promise<{}> {\n let params: { databaseId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string \n };\n }\n \n const databaseId = params.databaseId;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity\n * @param {string} params.search - Search term to filter your list results. Max length: 256 chars.\n * @throws {AppwriteException}\n * @returns {Promise<Models.CollectionList>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.listTables` instead.\n */\n listCollections(params: { databaseId: string, queries?: string[], search?: string }): Promise<Models.CollectionList>;\n /**\n * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.\n *\n * @param {string} databaseId - Database ID.\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity\n * @param {string} search - Search term to filter your list results. Max length: 256 chars.\n * @throws {AppwriteException}\n * @returns {Promise<Models.CollectionList>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n listCollections(databaseId: string, queries?: string[], search?: string): Promise<Models.CollectionList>;\n listCollections(\n paramsOrFirst: { databaseId: string, queries?: string[], search?: string } | string,\n ...rest: [(string[])?, (string)?] \n ): Promise<Models.CollectionList> {\n let params: { databaseId: string, queries?: string[], search?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, queries?: string[], search?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n queries: rest[0] as string[],\n search: rest[1] as string \n };\n }\n \n const databaseId = params.databaseId;\n const queries = params.queries;\n const search = params.search;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. 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.\n * @param {string} params.name - Collection name. Max length: 128 chars.\n * @param {string[]} params.permissions - An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} params.documentSecurity - Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} params.enabled - Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createTable` instead.\n */\n createCollection(params: { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean }): Promise<Models.Collection>;\n /**\n * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. 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.\n * @param {string} name - Collection name. Max length: 128 chars.\n * @param {string[]} permissions - An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} documentSecurity - Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} enabled - Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection>;\n createCollection(\n paramsOrFirst: { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean } | string,\n ...rest: [(string)?, (string)?, (string[])?, (boolean)?, (boolean)?] \n ): Promise<Models.Collection> {\n let params: { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n name: rest[1] as string,\n permissions: rest[2] as string[],\n documentSecurity: rest[3] as boolean,\n enabled: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const name = params.name;\n const permissions = params.permissions;\n const documentSecurity = params.documentSecurity;\n const enabled = params.enabled;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof collectionId !== 'undefined') {\n payload['collectionId'] = collectionId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.getTable` instead.\n */\n getCollection(params: { databaseId: string, collectionId: string }): Promise<Models.Collection>;\n /**\n * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n getCollection(databaseId: string, collectionId: string): Promise<Models.Collection>;\n getCollection(\n paramsOrFirst: { databaseId: string, collectionId: string } | string,\n ...rest: [(string)?] \n ): Promise<Models.Collection> {\n let params: { databaseId: string, collectionId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a collection by its unique ID.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.name - Collection name. Max length: 128 chars.\n * @param {string[]} params.permissions - An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} params.documentSecurity - Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} params.enabled - Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateTable` instead.\n */\n updateCollection(params: { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean }): Promise<Models.Collection>;\n /**\n * Update a collection by its unique ID.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} name - Collection name. Max length: 128 chars.\n * @param {string[]} permissions - An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} documentSecurity - Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @param {boolean} enabled - Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Collection>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection>;\n updateCollection(\n paramsOrFirst: { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean } | string,\n ...rest: [(string)?, (string)?, (string[])?, (boolean)?, (boolean)?] \n ): Promise<Models.Collection> {\n let params: { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n name: rest[1] as string,\n permissions: rest[2] as string[],\n documentSecurity: rest[3] as boolean,\n enabled: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const name = params.name;\n const permissions = params.permissions;\n const documentSecurity = params.documentSecurity;\n const enabled = params.enabled;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.deleteTable` instead.\n */\n deleteCollection(params: { databaseId: string, collectionId: string }): Promise<{}>;\n /**\n * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n deleteCollection(databaseId: string, collectionId: string): Promise<{}>;\n deleteCollection(\n paramsOrFirst: { databaseId: string, collectionId: string } | string,\n ...rest: [(string)?] \n ): Promise<{}> {\n let params: { databaseId: string, collectionId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * List attributes in the collection.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeList>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.listColumns` instead.\n */\n listAttributes(params: { databaseId: string, collectionId: string, queries?: string[] }): Promise<Models.AttributeList>;\n /**\n * List attributes in the collection.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeList>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.AttributeList>;\n listAttributes(\n paramsOrFirst: { databaseId: string, collectionId: string, queries?: string[] } | string,\n ...rest: [(string)?, (string[])?] \n ): Promise<Models.AttributeList> {\n let params: { databaseId: string, collectionId: string, queries?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, queries?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n queries: rest[1] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const queries = params.queries;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a boolean attribute.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {boolean} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeBoolean>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createBooleanColumn` instead.\n */\n createBooleanAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean }): Promise<Models.AttributeBoolean>;\n /**\n * Create a boolean attribute.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {boolean} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeBoolean>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise<Models.AttributeBoolean>;\n createBooleanAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (boolean)?, (boolean)?] \n ): Promise<Models.AttributeBoolean> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as boolean,\n array: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a boolean attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#createCollection).\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {boolean} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} params.newKey - New attribute key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeBoolean>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateBooleanColumn` instead.\n */\n updateBooleanAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string }): Promise<Models.AttributeBoolean>;\n /**\n * Update a boolean attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#createCollection).\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {boolean} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} newKey - New attribute key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeBoolean>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string): Promise<Models.AttributeBoolean>;\n updateBooleanAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (boolean)?, (string)?] \n ): Promise<Models.AttributeBoolean> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as boolean,\n newKey: rest[4] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a date time attribute according to the ISO 8601 standard.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#createCollection).\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for the attribute in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeDatetime>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createDatetimeColumn` instead.\n */\n createDatetimeAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean }): Promise<Models.AttributeDatetime>;\n /**\n * Create a date time attribute according to the ISO 8601 standard.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#createCollection).\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for the attribute in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeDatetime>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeDatetime>;\n createDatetimeAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (boolean)?] \n ): Promise<Models.AttributeDatetime> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n array: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a date time attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} params.newKey - New attribute key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeDatetime>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateDatetimeColumn` instead.\n */\n updateDatetimeAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string }): Promise<Models.AttributeDatetime>;\n /**\n * Update a date time attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} newKey - New attribute key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeDatetime>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeDatetime>;\n updateDatetimeAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (string)?] \n ): Promise<Models.AttributeDatetime> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n newKey: rest[4] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create an email attribute.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEmail>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createEmailColumn` instead.\n */\n createEmailAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean }): Promise<Models.AttributeEmail>;\n /**\n * Create an email attribute.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEmail>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeEmail>;\n createEmailAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (boolean)?] \n ): Promise<Models.AttributeEmail> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n array: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an email attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEmail>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateEmailColumn` instead.\n */\n updateEmailAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string }): Promise<Models.AttributeEmail>;\n /**\n * Update an email attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEmail>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeEmail>;\n updateEmailAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (string)?] \n ): Promise<Models.AttributeEmail> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n newKey: rest[4] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create an enum attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {string[]} params.elements - Array of enum values.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEnum>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createEnumColumn` instead.\n */\n createEnumAttribute(params: { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean }): Promise<Models.AttributeEnum>;\n /**\n * Create an enum attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {string[]} elements - Array of enum values.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEnum>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeEnum>;\n createEnumAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (string[])?, (boolean)?, (string)?, (boolean)?] \n ): Promise<Models.AttributeEnum> {\n let params: { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n elements: rest[2] as string[],\n required: rest[3] as boolean,\n xdefault: rest[4] as string,\n array: rest[5] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const elements = params.elements;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an enum attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {string[]} params.elements - Updated list of enum values.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEnum>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateEnumColumn` instead.\n */\n updateEnumAttribute(params: { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string }): Promise<Models.AttributeEnum>;\n /**\n * Update an enum attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {string[]} elements - Updated list of enum values.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeEnum>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeEnum>;\n updateEnumAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (string[])?, (boolean)?, (string)?, (string)?] \n ): Promise<Models.AttributeEnum> {\n let params: { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n elements: rest[2] as string[],\n required: rest[3] as boolean,\n xdefault: rest[4] as string,\n newKey: rest[5] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const elements = params.elements;\n const required = params.required;\n const xdefault = params.xdefault;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a float attribute. Optionally, minimum and maximum values can be provided.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {number} params.min - Minimum value.\n * @param {number} params.max - Maximum value.\n * @param {number} params.xdefault - Default value. Cannot be set when required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeFloat>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createFloatColumn` instead.\n */\n createFloatAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean }): Promise<Models.AttributeFloat>;\n /**\n * Create a float attribute. Optionally, minimum and maximum values can be provided.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {number} min - Minimum value.\n * @param {number} max - Maximum value.\n * @param {number} xdefault - Default value. Cannot be set when required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeFloat>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<Models.AttributeFloat>;\n createFloatAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (number)?, (number)?, (number)?, (boolean)?] \n ): Promise<Models.AttributeFloat> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n min: rest[3] as number,\n max: rest[4] as number,\n xdefault: rest[5] as number,\n array: rest[6] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const min = params.min;\n const max = params.max;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a float attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {number} params.xdefault - Default value. Cannot be set when required.\n * @param {number} params.min - Minimum value.\n * @param {number} params.max - Maximum value.\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeFloat>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateFloatColumn` instead.\n */\n updateFloatAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string }): Promise<Models.AttributeFloat>;\n /**\n * Update a float attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {number} xdefault - Default value. Cannot be set when required.\n * @param {number} min - Minimum value.\n * @param {number} max - Maximum value.\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeFloat>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string): Promise<Models.AttributeFloat>;\n updateFloatAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (number)?, (number)?, (number)?, (string)?] \n ): Promise<Models.AttributeFloat> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as number,\n min: rest[4] as number,\n max: rest[5] as number,\n newKey: rest[6] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const min = params.min;\n const max = params.max;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create an integer attribute. Optionally, minimum and maximum values can be provided.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {number} params.min - Minimum value\n * @param {number} params.max - Maximum value\n * @param {number} params.xdefault - Default value. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeInteger>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createIntegerColumn` instead.\n */\n createIntegerAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean }): Promise<Models.AttributeInteger>;\n /**\n * Create an integer attribute. Optionally, minimum and maximum values can be provided.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {number} min - Minimum value\n * @param {number} max - Maximum value\n * @param {number} xdefault - Default value. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeInteger>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<Models.AttributeInteger>;\n createIntegerAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (number)?, (number)?, (number)?, (boolean)?] \n ): Promise<Models.AttributeInteger> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n min: rest[3] as number,\n max: rest[4] as number,\n xdefault: rest[5] as number,\n array: rest[6] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const min = params.min;\n const max = params.max;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an integer attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {number} params.xdefault - Default value. Cannot be set when attribute is required.\n * @param {number} params.min - Minimum value\n * @param {number} params.max - Maximum value\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeInteger>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateIntegerColumn` instead.\n */\n updateIntegerAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string }): Promise<Models.AttributeInteger>;\n /**\n * Update an integer attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {number} xdefault - Default value. Cannot be set when attribute is required.\n * @param {number} min - Minimum value\n * @param {number} max - Maximum value\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeInteger>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string): Promise<Models.AttributeInteger>;\n updateIntegerAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (number)?, (number)?, (number)?, (string)?] \n ): Promise<Models.AttributeInteger> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: number, min?: number, max?: number, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as number,\n min: rest[4] as number,\n max: rest[5] as number,\n newKey: rest[6] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const min = params.min;\n const max = params.max;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create IP address attribute.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeIp>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createIpColumn` instead.\n */\n createIpAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean }): Promise<Models.AttributeIp>;\n /**\n * Create IP address attribute.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeIp>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeIp>;\n createIpAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (boolean)?] \n ): Promise<Models.AttributeIp> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n array: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an ip attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value. Cannot be set when attribute is required.\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeIp>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateIpColumn` instead.\n */\n updateIpAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string }): Promise<Models.AttributeIp>;\n /**\n * Update an ip attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value. Cannot be set when attribute is required.\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeIp>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeIp>;\n updateIpAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (string)?] \n ): Promise<Models.AttributeIp> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n newKey: rest[4] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.relatedCollectionId - Related Collection ID.\n * @param {RelationshipType} params.type - Relation type\n * @param {boolean} params.twoWay - Is Two Way?\n * @param {string} params.key - Attribute Key.\n * @param {string} params.twoWayKey - Two Way Attribute Key.\n * @param {RelationMutate} params.onDelete - Constraints option\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeRelationship>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createRelationshipColumn` instead.\n */\n createRelationshipAttribute(params: { databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate }): Promise<Models.AttributeRelationship>;\n /**\n * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} relatedCollectionId - Related Collection ID.\n * @param {RelationshipType} type - Relation type\n * @param {boolean} twoWay - Is Two Way?\n * @param {string} key - Attribute Key.\n * @param {string} twoWayKey - Two Way Attribute Key.\n * @param {RelationMutate} onDelete - Constraints option\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeRelationship>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise<Models.AttributeRelationship>;\n createRelationshipAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate } | string,\n ...rest: [(string)?, (string)?, (RelationshipType)?, (boolean)?, (string)?, (string)?, (RelationMutate)?] \n ): Promise<Models.AttributeRelationship> {\n let params: { databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n relatedCollectionId: rest[1] as string,\n type: rest[2] as RelationshipType,\n twoWay: rest[3] as boolean,\n key: rest[4] as string,\n twoWayKey: rest[5] as string,\n onDelete: rest[6] as RelationMutate \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const relatedCollectionId = params.relatedCollectionId;\n const type = params.type;\n const twoWay = params.twoWay;\n const key = params.key;\n const twoWayKey = params.twoWayKey;\n const onDelete = params.onDelete;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof relatedCollectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"relatedCollectionId\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof relatedCollectionId !== 'undefined') {\n payload['relatedCollectionId'] = relatedCollectionId;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof twoWay !== 'undefined') {\n payload['twoWay'] = twoWay;\n }\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof twoWayKey !== 'undefined') {\n payload['twoWayKey'] = twoWayKey;\n }\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a string attribute.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.key - Attribute Key.\n * @param {number} params.size - Attribute size for text attributes, in number of characters.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @param {boolean} params.encrypt - Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeString>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createStringColumn` instead.\n */\n createStringAttribute(params: { databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean }): Promise<Models.AttributeString>;\n /**\n * Create a string attribute.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} key - Attribute Key.\n * @param {number} size - Attribute size for text attributes, in number of characters.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @param {boolean} encrypt - Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeString>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise<Models.AttributeString>;\n createStringAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean } | string,\n ...rest: [(string)?, (string)?, (number)?, (boolean)?, (string)?, (boolean)?, (boolean)?] \n ): Promise<Models.AttributeString> {\n let params: { databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n size: rest[2] as number,\n required: rest[3] as boolean,\n xdefault: rest[4] as string,\n array: rest[5] as boolean,\n encrypt: rest[6] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const size = params.size;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n const encrypt = params.encrypt;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof size === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"size\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n if (typeof encrypt !== 'undefined') {\n payload['encrypt'] = encrypt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a string attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {number} params.size - Maximum size of the string attribute.\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeString>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateStringColumn` instead.\n */\n updateStringAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string }): Promise<Models.AttributeString>;\n /**\n * Update a string attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {number} size - Maximum size of the string attribute.\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeString>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string): Promise<Models.AttributeString>;\n updateStringAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (number)?, (string)?] \n ): Promise<Models.AttributeString> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n size: rest[4] as number,\n newKey: rest[5] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const size = params.size;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a URL attribute.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} params.array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeUrl>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createUrlColumn` instead.\n */\n createUrlAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean }): Promise<Models.AttributeUrl>;\n /**\n * Create a URL attribute.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {boolean} array - Is attribute an array?\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeUrl>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeUrl>;\n createUrlAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (boolean)?] \n ): Promise<Models.AttributeUrl> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n array: rest[4] as boolean \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const array = params.array;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update an url attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {boolean} params.required - Is attribute required?\n * @param {string} params.xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeUrl>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateUrlColumn` instead.\n */\n updateUrlAttribute(params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string }): Promise<Models.AttributeUrl>;\n /**\n * Update an url attribute. Changing the `default` value will not update already existing documents.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {boolean} required - Is attribute required?\n * @param {string} xdefault - Default value for attribute when not provided. Cannot be set when attribute is required.\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeUrl>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise<Models.AttributeUrl>;\n updateUrlAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (string)?] \n ): Promise<Models.AttributeUrl> {\n let params: { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n required: rest[2] as boolean,\n xdefault: rest[3] as string,\n newKey: rest[4] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const required = params.required;\n const xdefault = params.xdefault;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get attribute by ID.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.getColumn` instead.\n */\n getAttribute(params: { databaseId: string, collectionId: string, key: string }): Promise<{}>;\n /**\n * Get attribute by ID.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>;\n getAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<{}> {\n let params: { databaseId: string, collectionId: string, key: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Deletes an attribute.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.deleteColumn` instead.\n */\n deleteAttribute(params: { databaseId: string, collectionId: string, key: string }): Promise<{}>;\n /**\n * Deletes an attribute.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>;\n deleteAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<{}> {\n let params: { databaseId: string, collectionId: string, key: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.key - Attribute Key.\n * @param {RelationMutate} params.onDelete - Constraints option\n * @param {string} params.newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeRelationship>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateRelationshipColumn` instead.\n */\n updateRelationshipAttribute(params: { databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string }): Promise<Models.AttributeRelationship>;\n /**\n * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} key - Attribute Key.\n * @param {RelationMutate} onDelete - Constraints option\n * @param {string} newKey - New Attribute Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.AttributeRelationship>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string): Promise<Models.AttributeRelationship>;\n updateRelationshipAttribute(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string } | string,\n ...rest: [(string)?, (string)?, (RelationMutate)?, (string)?] \n ): Promise<Models.AttributeRelationship> {\n let params: { databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n onDelete: rest[2] as RelationMutate,\n newKey: rest[3] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const onDelete = params.onDelete;\n const newKey = params.newKey;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a list of all the user's documents in a given collection. You can use the query params to filter your results.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.listRows` instead.\n */\n listDocuments<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, queries?: string[] }): Promise<Models.DocumentList<Document>>;\n /**\n * Get a list of all the user's documents in a given collection. You can use the query params to filter your results.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n listDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.DocumentList<Document>>;\n listDocuments<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, queries?: string[] } | string,\n ...rest: [(string)?, (string[])?] \n ): Promise<Models.DocumentList<Document>> {\n let params: { databaseId: string, collectionId: string, queries?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, queries?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n queries: rest[1] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const queries = params.queries;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - 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.\n * @param {string} params.documentId - Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. 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.\n * @param {Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>} params.data - Document data as JSON object.\n * @param {string[]} params.permissions - An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createRow` instead.\n */\n createDocument<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>, permissions?: string[] }): Promise<Document>;\n /**\n * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - 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.\n * @param {string} documentId - Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. 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.\n * @param {Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>} data - Document data as JSON object.\n * @param {string[]} permissions - An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>, permissions?: string[]): Promise<Document>;\n createDocument<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>, permissions?: string[] } | string,\n ...rest: [(string)?, (string)?, (Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>)?, (string[])?] \n ): Promise<Document> {\n let params: { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>, permissions?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>, permissions?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string,\n data: rest[2] as Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Omit<Document, keyof Models.Document>,\n permissions: rest[3] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n const data = params.data;\n const permissions = params.permissions;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof data === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"data\"');\n }\n delete data?.$sequence;\n delete data?.$collectionId;\n delete data?.$databaseId;\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documentId !== 'undefined') {\n payload['documentId'] = documentId;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - 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.\n * @param {object[]} params.documents - Array of documents data as JSON objects.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createRows` instead.\n */\n createDocuments<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documents: object[] }): Promise<Models.DocumentList<Document>>;\n /**\n * Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - 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.\n * @param {object[]} documents - Array of documents data as JSON objects.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documents: object[]): Promise<Models.DocumentList<Document>>;\n createDocuments<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documents: object[] } | string,\n ...rest: [(string)?, (object[])?] \n ): Promise<Models.DocumentList<Document>> {\n let params: { databaseId: string, collectionId: string, documents: object[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documents: object[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documents: rest[1] as object[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documents = params.documents;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documents === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documents\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documents !== 'undefined') {\n payload['documents'] = documents;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n * \n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {object[]} params.documents - Array of document data as JSON objects. May contain partial documents.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.upsertRows` instead.\n */\n upsertDocuments<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documents: object[] }): Promise<Models.DocumentList<Document>>;\n /**\n * Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n * \n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {object[]} documents - Array of document data as JSON objects. May contain partial documents.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n upsertDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documents: object[]): Promise<Models.DocumentList<Document>>;\n upsertDocuments<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documents: object[] } | string,\n ...rest: [(string)?, (object[])?] \n ): Promise<Models.DocumentList<Document>> {\n let params: { databaseId: string, collectionId: string, documents: object[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documents: object[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documents: rest[1] as object[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documents = params.documents;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documents === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documents\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documents !== 'undefined') {\n payload['documents'] = documents;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {object} params.data - Document data as JSON object. Include only attribute and value pairs to be updated.\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateRows` instead.\n */\n updateDocuments<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, data?: object, queries?: string[] }): Promise<Models.DocumentList<Document>>;\n /**\n * Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {object} data - Document data as JSON object. Include only attribute and value pairs to be updated.\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, data?: object, queries?: string[]): Promise<Models.DocumentList<Document>>;\n updateDocuments<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, data?: object, queries?: string[] } | string,\n ...rest: [(string)?, (object)?, (string[])?] \n ): Promise<Models.DocumentList<Document>> {\n let params: { databaseId: string, collectionId: string, data?: object, queries?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, data?: object, queries?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n data: rest[1] as object,\n queries: rest[2] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const data = params.data;\n const queries = params.queries;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Bulk delete documents using queries, if no queries are passed then all documents are deleted.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.deleteRows` instead.\n */\n deleteDocuments<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, queries?: string[] }): Promise<Models.DocumentList<Document>>;\n /**\n * Bulk delete documents using queries, if no queries are passed then all documents are deleted.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Models.DocumentList<Document>>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n deleteDocuments<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.DocumentList<Document>>;\n deleteDocuments<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, queries?: string[] } | string,\n ...rest: [(string)?, (string[])?] \n ): Promise<Models.DocumentList<Document>> {\n let params: { databaseId: string, collectionId: string, queries?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, queries?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n queries: rest[1] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const queries = params.queries;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get a document by its unique ID. This endpoint response returns a JSON object with the document data.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.documentId - Document ID.\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.getRow` instead.\n */\n getDocument<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documentId: string, queries?: string[] }): Promise<Document>;\n /**\n * Get a document by its unique ID. This endpoint response returns a JSON object with the document data.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} documentId - Document ID.\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n getDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise<Document>;\n getDocument<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string, queries?: string[] } | string,\n ...rest: [(string)?, (string)?, (string[])?] \n ): Promise<Document> {\n let params: { databaseId: string, collectionId: string, documentId: string, queries?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string, queries?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string,\n queries: rest[2] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n const queries = params.queries;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.documentId - Document ID.\n * @param {Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>} params.data - Document data as JSON object. Include all required attributes of the document to be created or updated.\n * @param {string[]} params.permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.upsertRow` instead.\n */\n upsertDocument<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] }): Promise<Document>;\n /**\n * Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} documentId - Document ID.\n * @param {Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>} data - Document data as JSON object. Include all required attributes of the document to be created or updated.\n * @param {string[]} permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n upsertDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[]): Promise<Document>;\n upsertDocument<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] } | string,\n ...rest: [(string)?, (string)?, (Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>)?, (string[])?] \n ): Promise<Document> {\n let params: { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string, data: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string,\n data: rest[2] as Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>,\n permissions: rest[3] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n const data = params.data;\n const permissions = params.permissions;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof data === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"data\"');\n }\n delete data?.$sequence;\n delete data?.$collectionId;\n delete data?.$databaseId;\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.documentId - Document ID.\n * @param {Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>} params.data - Document data as JSON object. Include only attribute and value pairs to be updated.\n * @param {string[]} params.permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.updateRow` instead.\n */\n updateDocument<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documentId: string, data?: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] }): Promise<Document>;\n /**\n * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} documentId - Document ID.\n * @param {Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>} data - Document data as JSON object. Include only attribute and value pairs to be updated.\n * @param {string[]} permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n updateDocument<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, data?: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[]): Promise<Document>;\n updateDocument<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string, data?: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] } | string,\n ...rest: [(string)?, (string)?, (Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>)?, (string[])?] \n ): Promise<Document> {\n let params: { databaseId: string, collectionId: string, documentId: string, data?: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string, data?: Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>, permissions?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string,\n data: rest[2] as Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>,\n permissions: rest[3] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n const data = params.data;\n const permissions = params.permissions;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n delete data?.$sequence;\n delete data?.$collectionId;\n delete data?.$databaseId;\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete a document by its unique ID.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.documentId - Document ID.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.deleteRow` instead.\n */\n deleteDocument(params: { databaseId: string, collectionId: string, documentId: string }): Promise<{}>;\n /**\n * Delete a document by its unique ID.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} documentId - Document ID.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}>;\n deleteDocument(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<{}> {\n let params: { databaseId: string, collectionId: string, documentId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Decrement a specific attribute of a document by a given value.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.documentId - Document ID.\n * @param {string} params.attribute - Attribute key.\n * @param {number} params.value - Value to increment the attribute by. The value must be a number.\n * @param {number} params.min - Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.decrementRowColumn` instead.\n */\n decrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, min?: number }): Promise<Document>;\n /**\n * Decrement a specific attribute of a document by a given value.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} documentId - Document ID.\n * @param {string} attribute - Attribute key.\n * @param {number} value - Value to increment the attribute by. The value must be a number.\n * @param {number} min - Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n decrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, min?: number): Promise<Document>;\n decrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, min?: number } | string,\n ...rest: [(string)?, (string)?, (string)?, (number)?, (number)?] \n ): Promise<Document> {\n let params: { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, min?: number };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, min?: number };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string,\n attribute: rest[2] as string,\n value: rest[3] as number,\n min: rest[4] as number \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n const attribute = params.attribute;\n const value = params.value;\n const min = params.min;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof attribute === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attribute\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/decrement'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId).replace('{attribute}', attribute);\n const payload: Payload = {};\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Increment a specific attribute of a document by a given value.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID.\n * @param {string} params.documentId - Document ID.\n * @param {string} params.attribute - Attribute key.\n * @param {number} params.value - Value to increment the attribute by. The value must be a number.\n * @param {number} params.max - Maximum value for the attribute. If the current value is greater than this value, an error will be thrown.\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.incrementRowColumn` instead.\n */\n incrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(params: { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, max?: number }): Promise<Document>;\n /**\n * Increment a specific attribute of a document by a given value.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID.\n * @param {string} documentId - Document ID.\n * @param {string} attribute - Attribute key.\n * @param {number} value - Value to increment the attribute by. The value must be a number.\n * @param {number} max - Maximum value for the attribute. If the current value is greater than this value, an error will be thrown.\n * @throws {AppwriteException}\n * @returns {Promise<Document>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n incrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, max?: number): Promise<Document>;\n incrementDocumentAttribute<Document extends Models.Document = Models.DefaultDocument>(\n paramsOrFirst: { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, max?: number } | string,\n ...rest: [(string)?, (string)?, (string)?, (number)?, (number)?] \n ): Promise<Document> {\n let params: { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, max?: number };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, documentId: string, attribute: string, value?: number, max?: number };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n documentId: rest[1] as string,\n attribute: rest[2] as string,\n value: rest[3] as number,\n max: rest[4] as number \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const documentId = params.documentId;\n const attribute = params.attribute;\n const value = params.value;\n const max = params.max;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof attribute === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attribute\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/increment'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId).replace('{attribute}', attribute);\n const payload: Payload = {};\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * List indexes in the collection.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error\n * @throws {AppwriteException}\n * @returns {Promise<Models.IndexList>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.listIndexes` instead.\n */\n listIndexes(params: { databaseId: string, collectionId: string, queries?: string[] }): Promise<Models.IndexList>;\n /**\n * List indexes in the collection.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error\n * @throws {AppwriteException}\n * @returns {Promise<Models.IndexList>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.IndexList>;\n listIndexes(\n paramsOrFirst: { databaseId: string, collectionId: string, queries?: string[] } | string,\n ...rest: [(string)?, (string[])?] \n ): Promise<Models.IndexList> {\n let params: { databaseId: string, collectionId: string, queries?: string[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, queries?: string[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n queries: rest[1] as string[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const queries = params.queries;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\n * Attributes can be `key`, `fulltext`, and `unique`.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.key - Index Key.\n * @param {IndexType} params.type - Index type.\n * @param {string[]} params.attributes - Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.\n * @param {string[]} params.orders - Array of index orders. Maximum of 100 orders are allowed.\n * @param {number[]} params.lengths - Length of index. Maximum of 100\n * @throws {AppwriteException}\n * @returns {Promise<Models.Index>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.createIndex` instead.\n */\n createIndex(params: { databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[], lengths?: number[] }): Promise<Models.Index>;\n /**\n * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\n * Attributes can be `key`, `fulltext`, and `unique`.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} key - Index Key.\n * @param {IndexType} type - Index type.\n * @param {string[]} attributes - Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.\n * @param {string[]} orders - Array of index orders. Maximum of 100 orders are allowed.\n * @param {number[]} lengths - Length of index. Maximum of 100\n * @throws {AppwriteException}\n * @returns {Promise<Models.Index>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[], lengths?: number[]): Promise<Models.Index>;\n createIndex(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[], lengths?: number[] } | string,\n ...rest: [(string)?, (string)?, (IndexType)?, (string[])?, (string[])?, (number[])?] \n ): Promise<Models.Index> {\n let params: { databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[], lengths?: number[] };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[], lengths?: number[] };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string,\n type: rest[2] as IndexType,\n attributes: rest[3] as string[],\n orders: rest[4] as string[],\n lengths: rest[5] as number[] \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n const type = params.type;\n const attributes = params.attributes;\n const orders = params.orders;\n const lengths = params.lengths;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n if (typeof attributes === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attributes\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof attributes !== 'undefined') {\n payload['attributes'] = attributes;\n }\n if (typeof orders !== 'undefined') {\n payload['orders'] = orders;\n }\n if (typeof lengths !== 'undefined') {\n payload['lengths'] = lengths;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Get index by ID.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.key - Index Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Index>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.getIndex` instead.\n */\n getIndex(params: { databaseId: string, collectionId: string, key: string }): Promise<Models.Index>;\n /**\n * Get index by ID.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} key - Index Key.\n * @throws {AppwriteException}\n * @returns {Promise<Models.Index>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n getIndex(databaseId: string, collectionId: string, key: string): Promise<Models.Index>;\n getIndex(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<Models.Index> {\n let params: { databaseId: string, collectionId: string, key: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n\n /**\n * Delete an index.\n *\n * @param {string} params.databaseId - Database ID.\n * @param {string} params.collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} params.key - Index Key.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated This API has been deprecated since 1.8.0. Please use `TablesDB.deleteIndex` instead.\n */\n deleteIndex(params: { databaseId: string, collectionId: string, key: string }): Promise<{}>;\n /**\n * Delete an index.\n *\n * @param {string} databaseId - Database ID.\n * @param {string} collectionId - Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).\n * @param {string} key - Index Key.\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}>;\n deleteIndex(\n paramsOrFirst: { databaseId: string, collectionId: string, key: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<{}> {\n let params: { databaseId: string, collectionId: string, key: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { databaseId: string, collectionId: string, key: string };\n } else {\n params = {\n databaseId: paramsOrFirst as string,\n collectionId: rest[0] as string,\n key: rest[1] as string \n };\n }\n \n const databaseId = params.databaseId;\n const collectionId = params.collectionId;\n const key = params.key;\n\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]}