appwrite 28.3.2 → 29.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 (397) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +36 -20
  3. data/lib/appwrite/enums/billing_plan_group.rb +2 -1
  4. data/lib/appwrite/enums/build_runtime.rb +2 -0
  5. data/lib/appwrite/enums/databases_index_type.rb +1 -0
  6. data/lib/appwrite/enums/domain_registration_type.rb +10 -0
  7. data/lib/appwrite/enums/domain_transfer_status_enum.rb +14 -0
  8. data/lib/appwrite/enums/execution_trigger.rb +1 -0
  9. data/lib/appwrite/enums/framework.rb +1 -0
  10. data/lib/appwrite/enums/id_token_provider.rb +8 -0
  11. data/lib/appwrite/enums/image_gravity.rb +1 -0
  12. data/lib/appwrite/enums/o_auth2_auth0_prompt.rb +9 -0
  13. data/lib/appwrite/enums/o_auth2_discord_prompt.rb +8 -0
  14. data/lib/appwrite/enums/o_auth2_github_prompt.rb +7 -0
  15. data/lib/appwrite/enums/o_auth2_kakao_prompt.rb +10 -0
  16. data/lib/appwrite/enums/o_auth2_microsoft_prompt.rb +10 -0
  17. data/lib/appwrite/enums/o_auth2_okta_prompt.rb +9 -0
  18. data/lib/appwrite/enums/o_auth2_salesforce_prompt.rb +8 -0
  19. data/lib/appwrite/enums/o_auth2_zoho_prompt.rb +7 -0
  20. data/lib/appwrite/enums/o_auth_provider.rb +3 -0
  21. data/lib/appwrite/enums/project_email_template_id.rb +2 -0
  22. data/lib/appwrite/enums/project_key_scopes.rb +4 -0
  23. data/lib/appwrite/enums/project_o_auth2_auth0_prompt.rb +9 -0
  24. data/lib/appwrite/enums/project_o_auth2_discord_prompt.rb +8 -0
  25. data/lib/appwrite/enums/project_o_auth2_git_hub_prompt.rb +7 -0
  26. data/lib/appwrite/enums/project_o_auth2_kakao_prompt.rb +10 -0
  27. data/lib/appwrite/enums/project_o_auth2_microsoft_prompt.rb +10 -0
  28. data/lib/appwrite/enums/project_o_auth2_okta_prompt.rb +9 -0
  29. data/lib/appwrite/enums/project_o_auth2_salesforce_prompt.rb +8 -0
  30. data/lib/appwrite/enums/project_o_auth2_zoho_prompt.rb +7 -0
  31. data/lib/appwrite/enums/project_o_auth_provider_id.rb +3 -0
  32. data/lib/appwrite/enums/project_policy_id.rb +2 -0
  33. data/lib/appwrite/enums/proxy_rule_deployment_resource_type.rb +1 -0
  34. data/lib/appwrite/enums/proxy_rule_protocol.rb +8 -0
  35. data/lib/appwrite/enums/runtime.rb +2 -0
  36. data/lib/appwrite/enums/tables_db_index_type.rb +1 -0
  37. data/lib/appwrite/enums/waf_rule_action.rb +11 -0
  38. data/lib/appwrite/models/account.rb +143 -0
  39. data/lib/appwrite/models/activity_event.rb +1 -0
  40. data/lib/appwrite/models/activity_event_list.rb +1 -0
  41. data/lib/appwrite/models/additional_resource.rb +1 -0
  42. data/lib/appwrite/models/algo_argon2.rb +1 -0
  43. data/lib/appwrite/models/algo_bcrypt.rb +1 -0
  44. data/lib/appwrite/models/algo_md5.rb +1 -0
  45. data/lib/appwrite/models/algo_phpass.rb +1 -0
  46. data/lib/appwrite/models/algo_scrypt.rb +1 -0
  47. data/lib/appwrite/models/algo_scrypt_modified.rb +1 -0
  48. data/lib/appwrite/models/algo_sha.rb +1 -0
  49. data/lib/appwrite/models/app.rb +1 -0
  50. data/lib/appwrite/models/app_installation.rb +2 -1
  51. data/lib/appwrite/models/app_installation_list.rb +1 -0
  52. data/lib/appwrite/models/app_key.rb +2 -1
  53. data/lib/appwrite/models/app_key_list.rb +1 -0
  54. data/lib/appwrite/models/app_scope.rb +1 -0
  55. data/lib/appwrite/models/app_scope_list.rb +1 -0
  56. data/lib/appwrite/models/app_secret.rb +2 -1
  57. data/lib/appwrite/models/app_secret_list.rb +1 -0
  58. data/lib/appwrite/models/app_secret_plaintext.rb +2 -1
  59. data/lib/appwrite/models/apps_list.rb +1 -0
  60. data/lib/appwrite/models/attribute_bigint.rb +5 -4
  61. data/lib/appwrite/models/attribute_boolean.rb +3 -2
  62. data/lib/appwrite/models/attribute_datetime.rb +3 -2
  63. data/lib/appwrite/models/attribute_email.rb +3 -2
  64. data/lib/appwrite/models/attribute_enum.rb +3 -2
  65. data/lib/appwrite/models/attribute_float.rb +5 -4
  66. data/lib/appwrite/models/attribute_integer.rb +5 -4
  67. data/lib/appwrite/models/attribute_ip.rb +3 -2
  68. data/lib/appwrite/models/attribute_line.rb +3 -2
  69. data/lib/appwrite/models/attribute_list.rb +1 -0
  70. data/lib/appwrite/models/attribute_longtext.rb +4 -3
  71. data/lib/appwrite/models/attribute_mediumtext.rb +4 -3
  72. data/lib/appwrite/models/attribute_object.rb +2 -1
  73. data/lib/appwrite/models/attribute_point.rb +3 -2
  74. data/lib/appwrite/models/attribute_polygon.rb +3 -2
  75. data/lib/appwrite/models/attribute_relationship.rb +2 -1
  76. data/lib/appwrite/models/attribute_string.rb +4 -3
  77. data/lib/appwrite/models/attribute_text.rb +4 -3
  78. data/lib/appwrite/models/attribute_url.rb +3 -2
  79. data/lib/appwrite/models/attribute_varchar.rb +4 -3
  80. data/lib/appwrite/models/attribute_vector.rb +2 -1
  81. data/lib/appwrite/models/backup_archive.rb +5 -4
  82. data/lib/appwrite/models/backup_archive_list.rb +1 -0
  83. data/lib/appwrite/models/backup_policy.rb +3 -2
  84. data/lib/appwrite/models/backup_policy_list.rb +1 -0
  85. data/lib/appwrite/models/backup_restoration.rb +2 -1
  86. data/lib/appwrite/models/backup_restoration_list.rb +1 -0
  87. data/lib/appwrite/models/billing_limits.rb +8 -8
  88. data/lib/appwrite/models/billing_plan.rb +25 -13
  89. data/lib/appwrite/models/billing_plan_addon.rb +2 -2
  90. data/lib/appwrite/models/billing_plan_addon_details.rb +2 -1
  91. data/lib/appwrite/models/billing_plan_dedicated_database_limits.rb +19 -19
  92. data/lib/appwrite/models/billing_plan_limits.rb +2 -2
  93. data/lib/appwrite/models/billing_plan_supported_addons.rb +1 -0
  94. data/lib/appwrite/models/block.rb +4 -33
  95. data/lib/appwrite/models/bucket.rb +1 -0
  96. data/lib/appwrite/models/bucket_list.rb +1 -0
  97. data/lib/appwrite/models/collection.rb +1 -0
  98. data/lib/appwrite/models/collection_list.rb +1 -0
  99. data/lib/appwrite/models/column_bigint.rb +5 -4
  100. data/lib/appwrite/models/column_boolean.rb +3 -2
  101. data/lib/appwrite/models/column_datetime.rb +3 -2
  102. data/lib/appwrite/models/column_email.rb +3 -2
  103. data/lib/appwrite/models/column_enum.rb +3 -2
  104. data/lib/appwrite/models/column_float.rb +5 -4
  105. data/lib/appwrite/models/column_index.rb +2 -1
  106. data/lib/appwrite/models/column_index_list.rb +1 -0
  107. data/lib/appwrite/models/column_integer.rb +5 -4
  108. data/lib/appwrite/models/column_ip.rb +3 -2
  109. data/lib/appwrite/models/column_line.rb +3 -2
  110. data/lib/appwrite/models/column_list.rb +1 -0
  111. data/lib/appwrite/models/column_longtext.rb +4 -3
  112. data/lib/appwrite/models/column_mediumtext.rb +4 -3
  113. data/lib/appwrite/models/column_point.rb +3 -2
  114. data/lib/appwrite/models/column_polygon.rb +3 -2
  115. data/lib/appwrite/models/column_relationship.rb +2 -1
  116. data/lib/appwrite/models/column_string.rb +4 -3
  117. data/lib/appwrite/models/column_text.rb +4 -3
  118. data/lib/appwrite/models/column_url.rb +3 -2
  119. data/lib/appwrite/models/column_varchar.rb +4 -3
  120. data/lib/appwrite/models/continent.rb +1 -0
  121. data/lib/appwrite/models/continent_list.rb +1 -0
  122. data/lib/appwrite/models/country.rb +1 -0
  123. data/lib/appwrite/models/country_list.rb +1 -0
  124. data/lib/appwrite/models/currency.rb +1 -0
  125. data/lib/appwrite/models/currency_list.rb +1 -0
  126. data/lib/appwrite/models/database.rb +10 -9
  127. data/lib/appwrite/models/database_list.rb +1 -0
  128. data/lib/appwrite/models/database_migration.rb +1 -0
  129. data/lib/appwrite/models/database_migration_list.rb +1 -0
  130. data/lib/appwrite/models/database_status.rb +6 -5
  131. data/lib/appwrite/models/database_status_connections.rb +1 -0
  132. data/lib/appwrite/models/database_status_replica.rb +3 -2
  133. data/lib/appwrite/models/database_status_volume.rb +1 -0
  134. data/lib/appwrite/models/dedicated_database.rb +22 -6
  135. data/lib/appwrite/models/dedicated_database_backup.rb +6 -5
  136. data/lib/appwrite/models/dedicated_database_backup_list.rb +1 -0
  137. data/lib/appwrite/models/dedicated_database_backup_storage.rb +1 -0
  138. data/lib/appwrite/models/dedicated_database_branch.rb +2 -1
  139. data/lib/appwrite/models/dedicated_database_branch_list.rb +1 -0
  140. data/lib/appwrite/models/dedicated_database_execution.rb +1 -0
  141. data/lib/appwrite/models/dedicated_database_execution_column.rb +1 -0
  142. data/lib/appwrite/models/dedicated_database_extensions.rb +1 -0
  143. data/lib/appwrite/models/dedicated_database_list.rb +1 -0
  144. data/lib/appwrite/models/dedicated_database_member.rb +3 -2
  145. data/lib/appwrite/models/dedicated_database_operation.rb +4 -3
  146. data/lib/appwrite/models/dedicated_database_operation_list.rb +1 -0
  147. data/lib/appwrite/models/dedicated_database_pitr_windows.rb +1 -0
  148. data/lib/appwrite/models/dedicated_database_pooler.rb +1 -0
  149. data/lib/appwrite/models/dedicated_database_replicas.rb +3 -2
  150. data/lib/appwrite/models/dedicated_database_restoration.rb +11 -5
  151. data/lib/appwrite/models/dedicated_database_restoration_list.rb +1 -0
  152. data/lib/appwrite/models/dedicated_database_specification.rb +21 -0
  153. data/lib/appwrite/models/dedicated_database_specification_list.rb +4 -8
  154. data/lib/appwrite/models/deployment.rb +1 -0
  155. data/lib/appwrite/models/deployment_list.rb +1 -0
  156. data/lib/appwrite/models/dns_record.rb +83 -0
  157. data/lib/appwrite/models/dns_records_list.rb +33 -0
  158. data/lib/appwrite/models/document.rb +1 -0
  159. data/lib/appwrite/models/document_list.rb +1 -0
  160. data/lib/appwrite/models/domain.rb +109 -0
  161. data/lib/appwrite/models/domain_price.rb +63 -0
  162. data/lib/appwrite/models/domain_prices_list.rb +33 -0
  163. data/lib/appwrite/models/domain_transfer_status.rb +59 -0
  164. data/lib/appwrite/models/domains_list.rb +33 -0
  165. data/lib/appwrite/models/email_template.rb +1 -0
  166. data/lib/appwrite/models/email_template_list.rb +1 -0
  167. data/lib/appwrite/models/embedding.rb +1 -0
  168. data/lib/appwrite/models/embedding_list.rb +1 -0
  169. data/lib/appwrite/models/ephemeral_key.rb +1 -0
  170. data/lib/appwrite/models/execution.rb +3 -1
  171. data/lib/appwrite/models/execution_list.rb +1 -0
  172. data/lib/appwrite/models/file.rb +1 -0
  173. data/lib/appwrite/models/file_list.rb +1 -0
  174. data/lib/appwrite/models/framework.rb +1 -0
  175. data/lib/appwrite/models/framework_adapter.rb +2 -1
  176. data/lib/appwrite/models/framework_list.rb +1 -0
  177. data/lib/appwrite/models/function.rb +10 -4
  178. data/lib/appwrite/models/function_list.rb +1 -0
  179. data/lib/appwrite/models/headers.rb +1 -0
  180. data/lib/appwrite/models/identity.rb +9 -3
  181. data/lib/appwrite/models/identity_list.rb +1 -0
  182. data/lib/appwrite/models/index.rb +2 -1
  183. data/lib/appwrite/models/index_list.rb +1 -0
  184. data/lib/appwrite/models/insight.rb +4 -3
  185. data/lib/appwrite/models/insight_cta.rb +1 -0
  186. data/lib/appwrite/models/insight_list.rb +1 -0
  187. data/lib/appwrite/models/jwt.rb +1 -0
  188. data/lib/appwrite/models/key.rb +1 -0
  189. data/lib/appwrite/models/key_list.rb +1 -0
  190. data/lib/appwrite/models/language.rb +1 -0
  191. data/lib/appwrite/models/language_list.rb +1 -0
  192. data/lib/appwrite/models/locale.rb +12 -11
  193. data/lib/appwrite/models/locale_code.rb +1 -0
  194. data/lib/appwrite/models/locale_code_list.rb +1 -0
  195. data/lib/appwrite/models/membership.rb +1 -0
  196. data/lib/appwrite/models/membership_list.rb +1 -0
  197. data/lib/appwrite/models/message.rb +4 -3
  198. data/lib/appwrite/models/message_list.rb +1 -0
  199. data/lib/appwrite/models/mfa_challenge.rb +1 -0
  200. data/lib/appwrite/models/mfa_challenge_secret.rb +1 -0
  201. data/lib/appwrite/models/mfa_factors.rb +1 -0
  202. data/lib/appwrite/models/mfa_recovery_codes.rb +1 -0
  203. data/lib/appwrite/models/mfa_type.rb +1 -0
  204. data/lib/appwrite/models/mock_number.rb +1 -0
  205. data/lib/appwrite/models/mock_number_list.rb +1 -0
  206. data/lib/appwrite/models/o_auth2_amazon.rb +1 -0
  207. data/lib/appwrite/models/o_auth2_apple.rb +14 -3
  208. data/lib/appwrite/models/o_auth2_appwrite.rb +1 -0
  209. data/lib/appwrite/models/o_auth2_auth0.rb +24 -0
  210. data/lib/appwrite/models/o_auth2_authentik.rb +1 -0
  211. data/lib/appwrite/models/o_auth2_autodesk.rb +1 -0
  212. data/lib/appwrite/models/o_auth2_bitbucket.rb +1 -0
  213. data/lib/appwrite/models/o_auth2_bitly.rb +1 -0
  214. data/lib/appwrite/models/o_auth2_box.rb +1 -0
  215. data/lib/appwrite/models/o_auth2_cloudflare.rb +1 -0
  216. data/lib/appwrite/models/o_auth2_dailymotion.rb +1 -0
  217. data/lib/appwrite/models/o_auth2_discord.rb +26 -3
  218. data/lib/appwrite/models/o_auth2_disqus.rb +1 -0
  219. data/lib/appwrite/models/o_auth2_dropbox.rb +1 -0
  220. data/lib/appwrite/models/o_auth2_etsy.rb +1 -0
  221. data/lib/appwrite/models/o_auth2_facebook.rb +1 -0
  222. data/lib/appwrite/models/o_auth2_figma.rb +1 -0
  223. data/lib/appwrite/models/o_auth2_fusion_auth.rb +1 -0
  224. data/lib/appwrite/models/o_auth2_github.rb +25 -3
  225. data/lib/appwrite/models/o_auth2_gitlab.rb +1 -0
  226. data/lib/appwrite/models/o_auth2_google.rb +18 -5
  227. data/lib/appwrite/models/o_auth2_hugging_face.rb +1 -0
  228. data/lib/appwrite/models/o_auth2_kakao.rb +67 -0
  229. data/lib/appwrite/models/o_auth2_keycloak.rb +1 -0
  230. data/lib/appwrite/models/o_auth2_kick.rb +1 -0
  231. data/lib/appwrite/models/o_auth2_linkedin.rb +1 -0
  232. data/lib/appwrite/models/o_auth2_microsoft.rb +25 -0
  233. data/lib/appwrite/models/o_auth2_notion.rb +1 -0
  234. data/lib/appwrite/models/o_auth2_oidc.rb +11 -8
  235. data/lib/appwrite/models/o_auth2_okta.rb +24 -0
  236. data/lib/appwrite/models/o_auth2_paypal.rb +1 -0
  237. data/lib/appwrite/models/o_auth2_podio.rb +1 -0
  238. data/lib/appwrite/models/o_auth2_provider_list.rb +1 -0
  239. data/lib/appwrite/models/o_auth2_resend.rb +1 -0
  240. data/lib/appwrite/models/o_auth2_salesforce.rb +26 -3
  241. data/lib/appwrite/models/o_auth2_slack.rb +1 -0
  242. data/lib/appwrite/models/o_auth2_spotify.rb +1 -0
  243. data/lib/appwrite/models/o_auth2_stripe.rb +1 -0
  244. data/lib/appwrite/models/o_auth2_tik_tok.rb +43 -0
  245. data/lib/appwrite/models/o_auth2_tradeshift.rb +1 -0
  246. data/lib/appwrite/models/o_auth2_twitch.rb +1 -0
  247. data/lib/appwrite/models/o_auth2_webflow.rb +43 -0
  248. data/lib/appwrite/models/o_auth2_word_press.rb +1 -0
  249. data/lib/appwrite/models/o_auth2_x.rb +1 -0
  250. data/lib/appwrite/models/o_auth2_yahoo.rb +1 -0
  251. data/lib/appwrite/models/o_auth2_yandex.rb +1 -0
  252. data/lib/appwrite/models/o_auth2_zoho.rb +25 -3
  253. data/lib/appwrite/models/o_auth2_zoom.rb +1 -0
  254. data/lib/appwrite/models/oauth2_approve.rb +1 -0
  255. data/lib/appwrite/models/oauth2_authorize.rb +1 -0
  256. data/lib/appwrite/models/oauth2_consent.rb +1 -0
  257. data/lib/appwrite/models/oauth2_consent_list.rb +1 -0
  258. data/lib/appwrite/models/oauth2_consent_token.rb +1 -0
  259. data/lib/appwrite/models/oauth2_consent_token_list.rb +1 -0
  260. data/lib/appwrite/models/oauth2_device_authorization.rb +1 -0
  261. data/lib/appwrite/models/oauth2_grant.rb +1 -0
  262. data/lib/appwrite/models/oauth2_introspection.rb +83 -0
  263. data/lib/appwrite/models/oauth2_organization.rb +1 -0
  264. data/lib/appwrite/models/oauth2_organization_list.rb +1 -0
  265. data/lib/appwrite/models/oauth2_par.rb +1 -0
  266. data/lib/appwrite/models/oauth2_project.rb +1 -0
  267. data/lib/appwrite/models/oauth2_project_list.rb +1 -0
  268. data/lib/appwrite/models/oauth2_reject.rb +1 -0
  269. data/lib/appwrite/models/oauth2_token.rb +3 -2
  270. data/lib/appwrite/models/organization.rb +21 -20
  271. data/lib/appwrite/models/passkey.rb +1 -0
  272. data/lib/appwrite/models/passkey_challenge.rb +1 -0
  273. data/lib/appwrite/models/passkey_list.rb +1 -0
  274. data/lib/appwrite/models/phone.rb +1 -0
  275. data/lib/appwrite/models/phone_list.rb +1 -0
  276. data/lib/appwrite/models/platform_android.rb +9 -3
  277. data/lib/appwrite/models/platform_apple.rb +1 -0
  278. data/lib/appwrite/models/platform_linux.rb +1 -0
  279. data/lib/appwrite/models/platform_list.rb +1 -0
  280. data/lib/appwrite/models/platform_web.rb +1 -0
  281. data/lib/appwrite/models/platform_windows.rb +1 -0
  282. data/lib/appwrite/models/policy_deny_aliased_email.rb +1 -0
  283. data/lib/appwrite/models/policy_deny_corporate_email.rb +1 -0
  284. data/lib/appwrite/models/policy_deny_disposable_email.rb +1 -0
  285. data/lib/appwrite/models/policy_deny_free_email.rb +1 -0
  286. data/lib/appwrite/models/policy_list.rb +1 -0
  287. data/lib/appwrite/models/policy_membership_privacy.rb +1 -0
  288. data/lib/appwrite/models/policy_mfa_factors.rb +1 -0
  289. data/lib/appwrite/models/policy_passkey.rb +1 -0
  290. data/lib/appwrite/models/policy_password_dictionary.rb +1 -0
  291. data/lib/appwrite/models/policy_password_history.rb +1 -0
  292. data/lib/appwrite/models/policy_password_personal_data.rb +1 -0
  293. data/lib/appwrite/models/policy_password_pwned.rb +43 -0
  294. data/lib/appwrite/models/policy_password_rotation.rb +38 -0
  295. data/lib/appwrite/models/policy_password_strength.rb +1 -0
  296. data/lib/appwrite/models/policy_session_alert.rb +1 -0
  297. data/lib/appwrite/models/policy_session_duration.rb +1 -0
  298. data/lib/appwrite/models/policy_session_invalidation.rb +1 -0
  299. data/lib/appwrite/models/policy_session_limit.rb +1 -0
  300. data/lib/appwrite/models/policy_user_limit.rb +1 -0
  301. data/lib/appwrite/models/postgres_extension.rb +1 -0
  302. data/lib/appwrite/models/presence.rb +4 -3
  303. data/lib/appwrite/models/presence_list.rb +1 -0
  304. data/lib/appwrite/models/program.rb +1 -0
  305. data/lib/appwrite/models/project.rb +35 -24
  306. data/lib/appwrite/models/project_auth_method.rb +1 -0
  307. data/lib/appwrite/models/project_list.rb +1 -0
  308. data/lib/appwrite/models/project_protocol.rb +1 -0
  309. data/lib/appwrite/models/project_service.rb +1 -0
  310. data/lib/appwrite/models/provider.rb +2 -1
  311. data/lib/appwrite/models/provider_list.rb +1 -0
  312. data/lib/appwrite/models/proxy_invalidation.rb +1 -0
  313. data/lib/appwrite/models/proxy_rule.rb +24 -4
  314. data/lib/appwrite/models/proxy_rule_list.rb +1 -0
  315. data/lib/appwrite/models/report.rb +2 -1
  316. data/lib/appwrite/models/report_list.rb +1 -0
  317. data/lib/appwrite/models/resource_token.rb +1 -0
  318. data/lib/appwrite/models/resource_token_list.rb +1 -0
  319. data/lib/appwrite/models/row.rb +1 -0
  320. data/lib/appwrite/models/row_list.rb +1 -0
  321. data/lib/appwrite/models/runtime.rb +1 -0
  322. data/lib/appwrite/models/runtime_list.rb +1 -0
  323. data/lib/appwrite/models/session.rb +1 -0
  324. data/lib/appwrite/models/session_list.rb +1 -0
  325. data/lib/appwrite/models/site.rb +1 -0
  326. data/lib/appwrite/models/site_list.rb +1 -0
  327. data/lib/appwrite/models/specification.rb +1 -0
  328. data/lib/appwrite/models/specification_list.rb +1 -0
  329. data/lib/appwrite/models/subscriber.rb +1 -0
  330. data/lib/appwrite/models/subscriber_list.rb +1 -0
  331. data/lib/appwrite/models/table.rb +1 -0
  332. data/lib/appwrite/models/table_list.rb +1 -0
  333. data/lib/appwrite/models/target.rb +2 -1
  334. data/lib/appwrite/models/target_list.rb +1 -0
  335. data/lib/appwrite/models/team.rb +1 -0
  336. data/lib/appwrite/models/team_list.rb +1 -0
  337. data/lib/appwrite/models/token.rb +1 -0
  338. data/lib/appwrite/models/token_secret.rb +1 -0
  339. data/lib/appwrite/models/topic.rb +14 -3
  340. data/lib/appwrite/models/topic_list.rb +1 -0
  341. data/lib/appwrite/models/transaction.rb +1 -0
  342. data/lib/appwrite/models/transaction_list.rb +1 -0
  343. data/lib/appwrite/models/usage_billing_plan.rb +27 -27
  344. data/lib/appwrite/models/user.rb +16 -10
  345. data/lib/appwrite/models/user_list.rb +1 -0
  346. data/lib/appwrite/models/variable.rb +1 -0
  347. data/lib/appwrite/models/variable_list.rb +1 -0
  348. data/lib/appwrite/models/vectorsdb_collection.rb +1 -0
  349. data/lib/appwrite/models/vectorsdb_collection_list.rb +1 -0
  350. data/lib/appwrite/models/waf_rule_bypass.rb +111 -0
  351. data/lib/appwrite/models/waf_rule_challenge.rb +126 -0
  352. data/lib/appwrite/models/waf_rule_deny.rb +111 -0
  353. data/lib/appwrite/models/{log_list.rb → waf_rule_list.rb} +8 -7
  354. data/lib/appwrite/models/waf_rule_rate_limit.rb +136 -0
  355. data/lib/appwrite/models/waf_rule_redirect.rb +121 -0
  356. data/lib/appwrite/models/webhook.rb +1 -0
  357. data/lib/appwrite/models/webhook_list.rb +1 -0
  358. data/lib/appwrite/query/builder.rb +361 -0
  359. data/lib/appwrite/query.rb +190 -0
  360. data/lib/appwrite/services/account.rb +409 -133
  361. data/lib/appwrite/services/activities.rb +4 -4
  362. data/lib/appwrite/services/advisor.rb +19 -18
  363. data/lib/appwrite/services/apps.rb +89 -89
  364. data/lib/appwrite/services/avatars.rb +92 -21
  365. data/lib/appwrite/services/backups.rb +30 -30
  366. data/lib/appwrite/services/databases.rb +504 -453
  367. data/lib/appwrite/services/documents_db.rb +199 -191
  368. data/lib/appwrite/services/domains.rb +2318 -0
  369. data/lib/appwrite/services/embeddings.rb +2 -2
  370. data/lib/appwrite/services/functions.rb +128 -112
  371. data/lib/appwrite/services/graphql.rb +4 -4
  372. data/lib/appwrite/services/locale.rb +49 -14
  373. data/lib/appwrite/services/messaging.rb +281 -153
  374. data/lib/appwrite/services/mongo.rb +194 -130
  375. data/lib/appwrite/services/mysql.rb +212 -144
  376. data/lib/appwrite/services/oauth2.rb +72 -27
  377. data/lib/appwrite/services/organization.rb +255 -221
  378. data/lib/appwrite/services/postgresql.rb +226 -158
  379. data/lib/appwrite/services/presences.rb +17 -16
  380. data/lib/appwrite/services/project.rb +588 -157
  381. data/lib/appwrite/services/proxy.rb +70 -23
  382. data/lib/appwrite/services/sites.rb +119 -107
  383. data/lib/appwrite/services/storage.rb +62 -59
  384. data/lib/appwrite/services/tables_db.rb +617 -558
  385. data/lib/appwrite/services/teams.rb +87 -82
  386. data/lib/appwrite/services/tokens.rb +25 -24
  387. data/lib/appwrite/services/users.rb +170 -199
  388. data/lib/appwrite/services/vectors_db.rb +185 -177
  389. data/lib/appwrite/services/waf.rb +859 -0
  390. data/lib/appwrite/services/webhooks.rb +23 -22
  391. data/lib/appwrite/topic.rb +53 -0
  392. data/lib/appwrite.rb +48 -9
  393. metadata +47 -7
  394. data/lib/appwrite/enums/organization_key_scopes.rb +0 -22
  395. data/lib/appwrite/models/dedicated_database_specification_pricing.rb +0 -42
  396. data/lib/appwrite/models/dev_key.rb +0 -62
  397. data/lib/appwrite/models/log.rb +0 -132
@@ -11,6 +11,8 @@ module Appwrite
11
11
  attr_reader :sms_total
12
12
  attr_reader :push_total
13
13
  attr_reader :subscribe
14
+ attr_reader :qos
15
+ attr_reader :expiry
14
16
 
15
17
  def initialize(
16
18
  id:,
@@ -20,7 +22,9 @@ module Appwrite
20
22
  email_total:,
21
23
  sms_total:,
22
24
  push_total:,
23
- subscribe:
25
+ subscribe:,
26
+ qos: nil,
27
+ expiry: nil
24
28
  )
25
29
  @id = id
26
30
  @created_at = created_at
@@ -30,9 +34,12 @@ module Appwrite
30
34
  @sms_total = sms_total
31
35
  @push_total = push_total
32
36
  @subscribe = subscribe
37
+ @qos = qos
38
+ @expiry = expiry
33
39
  end
34
40
 
35
41
  def self.from(map:)
42
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "name" => "", "emailTotal" => 0, "smsTotal" => 0, "pushTotal" => 0, "subscribe" => ["users"] }.merge(map)
36
43
  Topic.new(
37
44
  id: map["$id"],
38
45
  created_at: map["$createdAt"],
@@ -41,7 +48,9 @@ module Appwrite
41
48
  email_total: map["emailTotal"],
42
49
  sms_total: map["smsTotal"],
43
50
  push_total: map["pushTotal"],
44
- subscribe: map["subscribe"]
51
+ subscribe: map["subscribe"],
52
+ qos: map["qos"],
53
+ expiry: map["expiry"]
45
54
  )
46
55
  end
47
56
 
@@ -54,7 +63,9 @@ module Appwrite
54
63
  "emailTotal": @email_total,
55
64
  "smsTotal": @sms_total,
56
65
  "pushTotal": @push_total,
57
- "subscribe": @subscribe
66
+ "subscribe": @subscribe,
67
+ "qos": @qos,
68
+ "expiry": @expiry
58
69
  }
59
70
  end
60
71
  end
@@ -15,6 +15,7 @@ module Appwrite
15
15
  end
16
16
 
17
17
  def self.from(map:)
18
+ map = { "total" => 0, "topics" => [] }.merge(map)
18
19
  TopicList.new(
19
20
  total: map["total"],
20
21
  topics: map["topics"].map { |it| Topic.from(map: it) }
@@ -27,6 +27,7 @@ module Appwrite
27
27
  end
28
28
 
29
29
  def self.from(map:)
30
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "status" => "pending", "operations" => 0, "expiresAt" => "" }.merge(map)
30
31
  Transaction.new(
31
32
  id: map["$id"],
32
33
  created_at: map["$createdAt"],
@@ -15,6 +15,7 @@ module Appwrite
15
15
  end
16
16
 
17
17
  def self.from(map:)
18
+ map = { "total" => 0, "transactions" => [] }.merge(map)
18
19
  TransactionList.new(
19
20
  total: map["total"],
20
21
  transactions: map["transactions"].map { |it| Transaction.from(map: it) }
@@ -16,17 +16,17 @@ module Appwrite
16
16
  attr_reader :credits
17
17
 
18
18
  def initialize(
19
- bandwidth:,
20
- executions:,
21
- member:,
22
- realtime:,
23
- realtime_messages:,
24
- realtime_bandwidth:,
25
- storage:,
26
- users:,
27
- gb_hours:,
28
- image_transformations:,
29
- credits:
19
+ bandwidth: nil,
20
+ executions: nil,
21
+ member: nil,
22
+ realtime: nil,
23
+ realtime_messages: nil,
24
+ realtime_bandwidth: nil,
25
+ storage: nil,
26
+ users: nil,
27
+ gb_hours: nil,
28
+ image_transformations: nil,
29
+ credits: nil
30
30
  )
31
31
  @bandwidth = bandwidth
32
32
  @executions = executions
@@ -43,32 +43,32 @@ module Appwrite
43
43
 
44
44
  def self.from(map:)
45
45
  UsageBillingPlan.new(
46
- bandwidth: AdditionalResource.from(map: map["bandwidth"]),
47
- executions: AdditionalResource.from(map: map["executions"]),
46
+ bandwidth: map["bandwidth"].nil? ? nil : AdditionalResource.from(map: map["bandwidth"]),
47
+ executions: map["executions"].nil? ? nil : AdditionalResource.from(map: map["executions"]),
48
48
  member: map["member"].nil? ? nil : AdditionalResource.from(map: map["member"]),
49
- realtime: AdditionalResource.from(map: map["realtime"]),
50
- realtime_messages: AdditionalResource.from(map: map["realtimeMessages"]),
49
+ realtime: map["realtime"].nil? ? nil : AdditionalResource.from(map: map["realtime"]),
50
+ realtime_messages: map["realtimeMessages"].nil? ? nil : AdditionalResource.from(map: map["realtimeMessages"]),
51
51
  realtime_bandwidth: map["realtimeBandwidth"].nil? ? nil : AdditionalResource.from(map: map["realtimeBandwidth"]),
52
- storage: AdditionalResource.from(map: map["storage"]),
53
- users: AdditionalResource.from(map: map["users"]),
54
- gb_hours: AdditionalResource.from(map: map["GBHours"]),
55
- image_transformations: AdditionalResource.from(map: map["imageTransformations"]),
52
+ storage: map["storage"].nil? ? nil : AdditionalResource.from(map: map["storage"]),
53
+ users: map["users"].nil? ? nil : AdditionalResource.from(map: map["users"]),
54
+ gb_hours: map["GBHours"].nil? ? nil : AdditionalResource.from(map: map["GBHours"]),
55
+ image_transformations: map["imageTransformations"].nil? ? nil : AdditionalResource.from(map: map["imageTransformations"]),
56
56
  credits: map["credits"].nil? ? nil : AdditionalResource.from(map: map["credits"])
57
57
  )
58
58
  end
59
59
 
60
60
  def to_map
61
61
  {
62
- "bandwidth": @bandwidth.to_map,
63
- "executions": @executions.to_map,
62
+ "bandwidth": @bandwidth&.to_map,
63
+ "executions": @executions&.to_map,
64
64
  "member": @member&.to_map,
65
- "realtime": @realtime.to_map,
66
- "realtimeMessages": @realtime_messages.to_map,
65
+ "realtime": @realtime&.to_map,
66
+ "realtimeMessages": @realtime_messages&.to_map,
67
67
  "realtimeBandwidth": @realtime_bandwidth&.to_map,
68
- "storage": @storage.to_map,
69
- "users": @users.to_map,
70
- "GBHours": @gb_hours.to_map,
71
- "imageTransformations": @image_transformations.to_map,
68
+ "storage": @storage&.to_map,
69
+ "users": @users&.to_map,
70
+ "GBHours": @gb_hours&.to_map,
71
+ "imageTransformations": @image_transformations&.to_map,
72
72
  "credits": @credits&.to_map
73
73
  }
74
74
  end
@@ -22,6 +22,7 @@ module Appwrite
22
22
  attr_reader :email_is_disposable
23
23
  attr_reader :email_is_corporate
24
24
  attr_reader :email_is_canonical
25
+ attr_reader :password_pwned
25
26
  attr_reader :phone_verification
26
27
  attr_reader :mfa
27
28
  attr_reader :prefs
@@ -35,9 +36,9 @@ module Appwrite
35
36
  created_at:,
36
37
  updated_at:,
37
38
  name:,
38
- password:,
39
- hash:,
40
- hash_options:,
39
+ password: nil,
40
+ hash: nil,
41
+ hash_options: nil,
41
42
  registration:,
42
43
  status:,
43
44
  labels:,
@@ -45,18 +46,19 @@ module Appwrite
45
46
  email:,
46
47
  phone:,
47
48
  email_verification:,
48
- email_canonical:,
49
- email_is_free:,
50
- email_is_disposable:,
51
- email_is_corporate:,
52
- email_is_canonical:,
49
+ email_canonical: nil,
50
+ email_is_free: nil,
51
+ email_is_disposable: nil,
52
+ email_is_corporate: nil,
53
+ email_is_canonical: nil,
54
+ password_pwned: nil,
53
55
  phone_verification:,
54
56
  mfa:,
55
57
  prefs:,
56
58
  targets:,
57
59
  accessed_at:,
58
- impersonator:,
59
- impersonator_user_id:
60
+ impersonator: false,
61
+ impersonator_user_id: nil
60
62
  )
61
63
  @id = id
62
64
  @created_at = created_at
@@ -77,6 +79,7 @@ module Appwrite
77
79
  @email_is_disposable = email_is_disposable
78
80
  @email_is_corporate = email_is_corporate
79
81
  @email_is_canonical = email_is_canonical
82
+ @password_pwned = password_pwned
80
83
  @phone_verification = phone_verification
81
84
  @mfa = mfa
82
85
  @prefs = prefs
@@ -87,6 +90,7 @@ module Appwrite
87
90
  end
88
91
 
89
92
  def self.from(map:)
93
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "name" => "", "registration" => "", "status" => true, "labels" => [], "passwordUpdate" => "", "email" => "", "phone" => "", "emailVerification" => false, "phoneVerification" => false, "mfa" => false, "targets" => [], "accessedAt" => "" }.merge(map)
90
94
  User.new(
91
95
  id: map["$id"],
92
96
  created_at: map["$createdAt"],
@@ -107,6 +111,7 @@ module Appwrite
107
111
  email_is_disposable: map["emailIsDisposable"],
108
112
  email_is_corporate: map["emailIsCorporate"],
109
113
  email_is_canonical: map["emailIsCanonical"],
114
+ password_pwned: map["passwordPwned"],
110
115
  phone_verification: map["phoneVerification"],
111
116
  mfa: map["mfa"],
112
117
  prefs: Preferences.from(map: map["prefs"]),
@@ -138,6 +143,7 @@ module Appwrite
138
143
  "emailIsDisposable": @email_is_disposable,
139
144
  "emailIsCorporate": @email_is_corporate,
140
145
  "emailIsCanonical": @email_is_canonical,
146
+ "passwordPwned": @password_pwned,
141
147
  "phoneVerification": @phone_verification,
142
148
  "mfa": @mfa,
143
149
  "prefs": @prefs.to_map,
@@ -15,6 +15,7 @@ module Appwrite
15
15
  end
16
16
 
17
17
  def self.from(map:)
18
+ map = { "total" => 0, "users" => [] }.merge(map)
18
19
  UserList.new(
19
20
  total: map["total"],
20
21
  users: map["users"].map { |it| User.from(map: it) }
@@ -33,6 +33,7 @@ module Appwrite
33
33
  end
34
34
 
35
35
  def self.from(map:)
36
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "key" => "", "value" => "", "secret" => false, "resourceType" => "", "resourceId" => "" }.merge(map)
36
37
  Variable.new(
37
38
  id: map["$id"],
38
39
  created_at: map["$createdAt"],
@@ -15,6 +15,7 @@ module Appwrite
15
15
  end
16
16
 
17
17
  def self.from(map:)
18
+ map = { "total" => 0, "variables" => [] }.merge(map)
18
19
  VariableList.new(
19
20
  total: map["total"],
20
21
  variables: map["variables"].map { |it| Variable.from(map: it) }
@@ -48,6 +48,7 @@ module Appwrite
48
48
  end
49
49
 
50
50
  def self.from(map:)
51
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "$permissions" => [], "databaseId" => "", "name" => "", "enabled" => true, "documentSecurity" => false, "attributes" => [], "indexes" => [], "bytesMax" => 0, "bytesUsed" => 0, "dimension" => 0 }.merge(map)
51
52
  VectorsdbCollection.new(
52
53
  id: map["$id"],
53
54
  created_at: map["$createdAt"],
@@ -15,6 +15,7 @@ module Appwrite
15
15
  end
16
16
 
17
17
  def self.from(map:)
18
+ map = { "total" => 0, "collections" => [] }.merge(map)
18
19
  VectorsdbCollectionList.new(
19
20
  total: map["total"],
20
21
  collections: map["collections"].map { |it| VectorsdbCollection.from(map: it) }
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class WafRuleBypass
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :name
10
+ attr_reader :description
11
+ attr_reader :team_id
12
+ attr_reader :project_id
13
+ attr_reader :resource_type
14
+ attr_reader :resource_id
15
+ attr_reader :action
16
+ attr_reader :priority
17
+ attr_reader :enabled
18
+ attr_reader :conditions
19
+ attr_reader :config
20
+
21
+ def initialize(
22
+ id:,
23
+ created_at:,
24
+ updated_at:,
25
+ name:,
26
+ description:,
27
+ team_id:,
28
+ project_id:,
29
+ resource_type:,
30
+ resource_id:,
31
+ action:,
32
+ priority:,
33
+ enabled:,
34
+ conditions:,
35
+ config:
36
+ )
37
+ @id = id
38
+ @created_at = created_at
39
+ @updated_at = updated_at
40
+ @name = name
41
+ @description = description
42
+ @team_id = team_id
43
+ @project_id = project_id
44
+ @resource_type = resource_type
45
+ @resource_id = resource_id
46
+ @action = validate_action(action)
47
+ @priority = priority
48
+ @enabled = enabled
49
+ @conditions = conditions
50
+ @config = config
51
+ end
52
+
53
+ def self.from(map:)
54
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "name" => "", "description" => "", "teamId" => "", "projectId" => "", "resourceType" => "api", "resourceId" => "", "priority" => 0, "enabled" => true, "conditions" => [], "config" => {} }.merge(map)
55
+ WafRuleBypass.new(
56
+ id: map["$id"],
57
+ created_at: map["$createdAt"],
58
+ updated_at: map["$updatedAt"],
59
+ name: map["name"],
60
+ description: map["description"],
61
+ team_id: map["teamId"],
62
+ project_id: map["projectId"],
63
+ resource_type: map["resourceType"],
64
+ resource_id: map["resourceId"],
65
+ action: map["action"],
66
+ priority: map["priority"],
67
+ enabled: map["enabled"],
68
+ conditions: map["conditions"],
69
+ config: map["config"]
70
+ )
71
+ end
72
+
73
+ def to_map
74
+ {
75
+ "$id": @id,
76
+ "$createdAt": @created_at,
77
+ "$updatedAt": @updated_at,
78
+ "name": @name,
79
+ "description": @description,
80
+ "teamId": @team_id,
81
+ "projectId": @project_id,
82
+ "resourceType": @resource_type,
83
+ "resourceId": @resource_id,
84
+ "action": @action,
85
+ "priority": @priority,
86
+ "enabled": @enabled,
87
+ "conditions": @conditions,
88
+ "config": @config
89
+ }
90
+ end
91
+
92
+ private
93
+
94
+ def validate_action(action)
95
+ valid_action = [
96
+ Appwrite::Enums::WafRuleAction::BYPASS,
97
+ Appwrite::Enums::WafRuleAction::DENY,
98
+ Appwrite::Enums::WafRuleAction::CHALLENGE,
99
+ Appwrite::Enums::WafRuleAction::RATELIMIT,
100
+ Appwrite::Enums::WafRuleAction::REDIRECT,
101
+ ]
102
+
103
+ unless valid_action.include?(action)
104
+ raise ArgumentError, "Invalid " + action + ". Must be one of: " + valid_action.join(', ')
105
+ end
106
+
107
+ action
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class WafRuleChallenge
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :name
10
+ attr_reader :description
11
+ attr_reader :team_id
12
+ attr_reader :project_id
13
+ attr_reader :resource_type
14
+ attr_reader :resource_id
15
+ attr_reader :action
16
+ attr_reader :priority
17
+ attr_reader :enabled
18
+ attr_reader :conditions
19
+ attr_reader :config
20
+ attr_reader :challenge_type
21
+ attr_reader :difficulty
22
+ attr_reader :ttl
23
+
24
+ def initialize(
25
+ id:,
26
+ created_at:,
27
+ updated_at:,
28
+ name:,
29
+ description:,
30
+ team_id:,
31
+ project_id:,
32
+ resource_type:,
33
+ resource_id:,
34
+ action:,
35
+ priority:,
36
+ enabled:,
37
+ conditions:,
38
+ config:,
39
+ challenge_type:,
40
+ difficulty:,
41
+ ttl:
42
+ )
43
+ @id = id
44
+ @created_at = created_at
45
+ @updated_at = updated_at
46
+ @name = name
47
+ @description = description
48
+ @team_id = team_id
49
+ @project_id = project_id
50
+ @resource_type = resource_type
51
+ @resource_id = resource_id
52
+ @action = validate_action(action)
53
+ @priority = priority
54
+ @enabled = enabled
55
+ @conditions = conditions
56
+ @config = config
57
+ @challenge_type = challenge_type
58
+ @difficulty = difficulty
59
+ @ttl = ttl
60
+ end
61
+
62
+ def self.from(map:)
63
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "name" => "", "description" => "", "teamId" => "", "projectId" => "", "resourceType" => "api", "resourceId" => "", "priority" => 0, "enabled" => true, "conditions" => [], "config" => {}, "challengeType" => "compute", "difficulty" => 3, "ttl" => 1800 }.merge(map)
64
+ WafRuleChallenge.new(
65
+ id: map["$id"],
66
+ created_at: map["$createdAt"],
67
+ updated_at: map["$updatedAt"],
68
+ name: map["name"],
69
+ description: map["description"],
70
+ team_id: map["teamId"],
71
+ project_id: map["projectId"],
72
+ resource_type: map["resourceType"],
73
+ resource_id: map["resourceId"],
74
+ action: map["action"],
75
+ priority: map["priority"],
76
+ enabled: map["enabled"],
77
+ conditions: map["conditions"],
78
+ config: map["config"],
79
+ challenge_type: map["challengeType"],
80
+ difficulty: map["difficulty"],
81
+ ttl: map["ttl"]
82
+ )
83
+ end
84
+
85
+ def to_map
86
+ {
87
+ "$id": @id,
88
+ "$createdAt": @created_at,
89
+ "$updatedAt": @updated_at,
90
+ "name": @name,
91
+ "description": @description,
92
+ "teamId": @team_id,
93
+ "projectId": @project_id,
94
+ "resourceType": @resource_type,
95
+ "resourceId": @resource_id,
96
+ "action": @action,
97
+ "priority": @priority,
98
+ "enabled": @enabled,
99
+ "conditions": @conditions,
100
+ "config": @config,
101
+ "challengeType": @challenge_type,
102
+ "difficulty": @difficulty,
103
+ "ttl": @ttl
104
+ }
105
+ end
106
+
107
+ private
108
+
109
+ def validate_action(action)
110
+ valid_action = [
111
+ Appwrite::Enums::WafRuleAction::BYPASS,
112
+ Appwrite::Enums::WafRuleAction::DENY,
113
+ Appwrite::Enums::WafRuleAction::CHALLENGE,
114
+ Appwrite::Enums::WafRuleAction::RATELIMIT,
115
+ Appwrite::Enums::WafRuleAction::REDIRECT,
116
+ ]
117
+
118
+ unless valid_action.include?(action)
119
+ raise ArgumentError, "Invalid " + action + ". Must be one of: " + valid_action.join(', ')
120
+ end
121
+
122
+ action
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class WafRuleDeny
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :name
10
+ attr_reader :description
11
+ attr_reader :team_id
12
+ attr_reader :project_id
13
+ attr_reader :resource_type
14
+ attr_reader :resource_id
15
+ attr_reader :action
16
+ attr_reader :priority
17
+ attr_reader :enabled
18
+ attr_reader :conditions
19
+ attr_reader :config
20
+
21
+ def initialize(
22
+ id:,
23
+ created_at:,
24
+ updated_at:,
25
+ name:,
26
+ description:,
27
+ team_id:,
28
+ project_id:,
29
+ resource_type:,
30
+ resource_id:,
31
+ action:,
32
+ priority:,
33
+ enabled:,
34
+ conditions:,
35
+ config:
36
+ )
37
+ @id = id
38
+ @created_at = created_at
39
+ @updated_at = updated_at
40
+ @name = name
41
+ @description = description
42
+ @team_id = team_id
43
+ @project_id = project_id
44
+ @resource_type = resource_type
45
+ @resource_id = resource_id
46
+ @action = validate_action(action)
47
+ @priority = priority
48
+ @enabled = enabled
49
+ @conditions = conditions
50
+ @config = config
51
+ end
52
+
53
+ def self.from(map:)
54
+ map = { "$id" => "", "$createdAt" => "", "$updatedAt" => "", "name" => "", "description" => "", "teamId" => "", "projectId" => "", "resourceType" => "api", "resourceId" => "", "priority" => 0, "enabled" => true, "conditions" => [], "config" => {} }.merge(map)
55
+ WafRuleDeny.new(
56
+ id: map["$id"],
57
+ created_at: map["$createdAt"],
58
+ updated_at: map["$updatedAt"],
59
+ name: map["name"],
60
+ description: map["description"],
61
+ team_id: map["teamId"],
62
+ project_id: map["projectId"],
63
+ resource_type: map["resourceType"],
64
+ resource_id: map["resourceId"],
65
+ action: map["action"],
66
+ priority: map["priority"],
67
+ enabled: map["enabled"],
68
+ conditions: map["conditions"],
69
+ config: map["config"]
70
+ )
71
+ end
72
+
73
+ def to_map
74
+ {
75
+ "$id": @id,
76
+ "$createdAt": @created_at,
77
+ "$updatedAt": @updated_at,
78
+ "name": @name,
79
+ "description": @description,
80
+ "teamId": @team_id,
81
+ "projectId": @project_id,
82
+ "resourceType": @resource_type,
83
+ "resourceId": @resource_id,
84
+ "action": @action,
85
+ "priority": @priority,
86
+ "enabled": @enabled,
87
+ "conditions": @conditions,
88
+ "config": @config
89
+ }
90
+ end
91
+
92
+ private
93
+
94
+ def validate_action(action)
95
+ valid_action = [
96
+ Appwrite::Enums::WafRuleAction::BYPASS,
97
+ Appwrite::Enums::WafRuleAction::DENY,
98
+ Appwrite::Enums::WafRuleAction::CHALLENGE,
99
+ Appwrite::Enums::WafRuleAction::RATELIMIT,
100
+ Appwrite::Enums::WafRuleAction::REDIRECT,
101
+ ]
102
+
103
+ unless valid_action.include?(action)
104
+ raise ArgumentError, "Invalid " + action + ". Must be one of: " + valid_action.join(', ')
105
+ end
106
+
107
+ action
108
+ end
109
+ end
110
+ end
111
+ end
@@ -2,29 +2,30 @@
2
2
 
3
3
  module Appwrite
4
4
  module Models
5
- class LogList
5
+ class WafRuleList
6
6
  attr_reader :total
7
- attr_reader :logs
7
+ attr_reader :rules
8
8
 
9
9
  def initialize(
10
10
  total:,
11
- logs:
11
+ rules:
12
12
  )
13
13
  @total = total
14
- @logs = logs
14
+ @rules = rules
15
15
  end
16
16
 
17
17
  def self.from(map:)
18
- LogList.new(
18
+ map = { "total" => 0, "rules" => [] }.merge(map)
19
+ WafRuleList.new(
19
20
  total: map["total"],
20
- logs: map["logs"].map { |it| Log.from(map: it) }
21
+ rules: map["rules"]
21
22
  )
22
23
  end
23
24
 
24
25
  def to_map
25
26
  {
26
27
  "total": @total,
27
- "logs": @logs.map { |it| it.to_map }
28
+ "rules": @rules
28
29
  }
29
30
  end
30
31
  end