appwrite 25.1.0 → 26.1.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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +18 -4
  3. data/lib/appwrite/enums/billing_plan_group.rb +9 -0
  4. data/lib/appwrite/enums/database_status.rb +20 -0
  5. data/lib/appwrite/enums/database_type.rb +3 -0
  6. data/lib/appwrite/enums/o_auth2_oidc_prompt.rb +10 -0
  7. data/lib/appwrite/enums/o_auth_provider.rb +1 -0
  8. data/lib/appwrite/enums/organization_key_scopes.rb +6 -0
  9. data/lib/appwrite/enums/project_key_scopes.rb +10 -2
  10. data/lib/appwrite/enums/project_o_auth2_oidc_prompt.rb +10 -0
  11. data/lib/appwrite/enums/project_o_auth_provider_id.rb +1 -0
  12. data/lib/appwrite/enums/project_policy_id.rb +1 -0
  13. data/lib/appwrite/enums/project_service_id.rb +1 -0
  14. data/lib/appwrite/models/activity_event.rb +55 -70
  15. data/lib/appwrite/models/additional_resource.rb +52 -0
  16. data/lib/appwrite/models/app.rb +152 -0
  17. data/lib/appwrite/models/app_installation.rb +72 -0
  18. data/lib/appwrite/models/app_installation_list.rb +32 -0
  19. data/lib/appwrite/models/app_key.rb +67 -0
  20. data/lib/appwrite/models/{usage_gauge_list.rb → app_key_list.rb} +7 -7
  21. data/lib/appwrite/models/app_scope.rb +47 -0
  22. data/lib/appwrite/models/{usage_event_list.rb → app_scope_list.rb} +7 -7
  23. data/lib/appwrite/models/app_secret.rb +67 -0
  24. data/lib/appwrite/models/{health_status_list.rb → app_secret_list.rb} +7 -7
  25. data/lib/appwrite/models/app_secret_plaintext.rb +67 -0
  26. data/lib/appwrite/models/apps_list.rb +32 -0
  27. data/lib/appwrite/models/backup_policy.rb +5 -0
  28. data/lib/appwrite/models/billing_plan.rb +384 -0
  29. data/lib/appwrite/models/billing_plan_addon.rb +32 -0
  30. data/lib/appwrite/models/billing_plan_addon_details.rb +62 -0
  31. data/lib/appwrite/models/billing_plan_dedicated_database_limits.rb +117 -0
  32. data/lib/appwrite/models/billing_plan_limits.rb +32 -0
  33. data/lib/appwrite/models/billing_plan_supported_addons.rb +37 -0
  34. data/lib/appwrite/models/block.rb +5 -0
  35. data/lib/appwrite/models/database.rb +54 -6
  36. data/lib/appwrite/models/database_status.rb +62 -0
  37. data/lib/appwrite/models/database_status_connections.rb +32 -0
  38. data/lib/appwrite/models/database_status_replica.rb +42 -0
  39. data/lib/appwrite/models/database_status_volume.rb +42 -0
  40. data/lib/appwrite/models/dedicated_database.rb +267 -0
  41. data/lib/appwrite/models/dedicated_database_member.rb +42 -0
  42. data/lib/appwrite/models/dedicated_database_replicas.rb +37 -0
  43. data/lib/appwrite/models/dedicated_database_specification.rb +67 -0
  44. data/lib/appwrite/models/dedicated_database_specification_list.rb +37 -0
  45. data/lib/appwrite/models/dedicated_database_specification_pricing.rb +47 -0
  46. data/lib/appwrite/models/locale.rb +58 -3
  47. data/lib/appwrite/models/membership.rb +5 -0
  48. data/lib/appwrite/models/o_auth2_appwrite.rb +42 -0
  49. data/lib/appwrite/models/o_auth2_oidc.rb +13 -3
  50. data/lib/appwrite/models/oauth2_approve.rb +27 -0
  51. data/lib/appwrite/models/oauth2_authorize.rb +32 -0
  52. data/lib/appwrite/models/oauth2_consent.rb +72 -0
  53. data/lib/appwrite/models/oauth2_consent_list.rb +32 -0
  54. data/lib/appwrite/models/oauth2_consent_token.rb +77 -0
  55. data/lib/appwrite/models/oauth2_consent_token_list.rb +32 -0
  56. data/lib/appwrite/models/oauth2_device_authorization.rb +52 -0
  57. data/lib/appwrite/models/oauth2_grant.rb +82 -0
  58. data/lib/appwrite/models/{health_queue.rb → oauth2_organization.rb} +7 -7
  59. data/lib/appwrite/models/oauth2_organization_list.rb +32 -0
  60. data/lib/appwrite/models/oauth2_par.rb +32 -0
  61. data/lib/appwrite/models/oauth2_project.rb +37 -0
  62. data/lib/appwrite/models/oauth2_project_list.rb +32 -0
  63. data/lib/appwrite/models/oauth2_reject.rb +27 -0
  64. data/lib/appwrite/models/oauth2_token.rb +57 -0
  65. data/lib/appwrite/models/organization.rb +197 -0
  66. data/lib/appwrite/models/policy_deny_corporate_email.rb +32 -0
  67. data/lib/appwrite/models/policy_membership_privacy.rb +8 -3
  68. data/lib/appwrite/models/program.rb +67 -0
  69. data/lib/appwrite/models/project.rb +56 -11
  70. data/lib/appwrite/models/project_auth_method.rb +3 -3
  71. data/lib/appwrite/models/usage_billing_plan.rb +77 -0
  72. data/lib/appwrite/models/user.rb +25 -0
  73. data/lib/appwrite/query.rb +13 -1
  74. data/lib/appwrite/services/account.rb +251 -1
  75. data/lib/appwrite/services/activities.rb +2 -0
  76. data/lib/appwrite/services/advisor.rb +4 -0
  77. data/lib/appwrite/services/apps.rb +813 -0
  78. data/lib/appwrite/services/avatars.rb +8 -0
  79. data/lib/appwrite/services/backups.rb +38 -1
  80. data/lib/appwrite/services/databases.rb +107 -0
  81. data/lib/appwrite/services/functions.rb +30 -4
  82. data/lib/appwrite/services/graphql.rb +2 -0
  83. data/lib/appwrite/services/locale.rb +8 -0
  84. data/lib/appwrite/services/messaging.rb +42 -136
  85. data/lib/appwrite/services/oauth2.rb +525 -0
  86. data/lib/appwrite/services/organization.rb +436 -3
  87. data/lib/appwrite/services/presences.rb +4 -0
  88. data/lib/appwrite/services/project.rb +192 -9
  89. data/lib/appwrite/services/proxy.rb +7 -0
  90. data/lib/appwrite/services/sites.rb +28 -2
  91. data/lib/appwrite/services/storage.rb +11 -0
  92. data/lib/appwrite/services/tables_db.rb +201 -2
  93. data/lib/appwrite/services/teams.rb +209 -0
  94. data/lib/appwrite/services/tokens.rb +4 -0
  95. data/lib/appwrite/services/users.rb +38 -1
  96. data/lib/appwrite/services/webhooks.rb +5 -0
  97. data/lib/appwrite.rb +54 -15
  98. metadata +56 -17
  99. data/lib/appwrite/enums/health_antivirus_status.rb +0 -9
  100. data/lib/appwrite/enums/health_check_status.rb +0 -8
  101. data/lib/appwrite/enums/health_queue_name.rb +0 -19
  102. data/lib/appwrite/models/health_antivirus.rb +0 -49
  103. data/lib/appwrite/models/health_certificate.rb +0 -52
  104. data/lib/appwrite/models/health_status.rb +0 -53
  105. data/lib/appwrite/models/health_time.rb +0 -37
  106. data/lib/appwrite/models/usage_event.rb +0 -72
  107. data/lib/appwrite/models/usage_gauge.rb +0 -47
  108. data/lib/appwrite/services/health.rb +0 -681
  109. data/lib/appwrite/services/usage.rb +0 -88
@@ -0,0 +1,384 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingPlan
6
+ attr_reader :id
7
+ attr_reader :name
8
+ attr_reader :desc
9
+ attr_reader :order
10
+ attr_reader :price
11
+ attr_reader :trial
12
+ attr_reader :bandwidth
13
+ attr_reader :storage
14
+ attr_reader :image_transformations
15
+ attr_reader :screenshots_generated
16
+ attr_reader :members
17
+ attr_reader :webhooks
18
+ attr_reader :waf_rules
19
+ attr_reader :projects
20
+ attr_reader :platforms
21
+ attr_reader :users
22
+ attr_reader :teams
23
+ attr_reader :databases
24
+ attr_reader :databases_reads
25
+ attr_reader :databases_writes
26
+ attr_reader :databases_batch_size
27
+ attr_reader :buckets
28
+ attr_reader :file_size
29
+ attr_reader :functions
30
+ attr_reader :sites
31
+ attr_reader :executions
32
+ attr_reader :executions_retention_count
33
+ attr_reader :gb_hours
34
+ attr_reader :realtime
35
+ attr_reader :realtime_messages
36
+ attr_reader :messages
37
+ attr_reader :topics
38
+ attr_reader :auth_phone
39
+ attr_reader :domains
40
+ attr_reader :activity_logs
41
+ attr_reader :usage_logs
42
+ attr_reader :usage_logs_intervals
43
+ attr_reader :project_inactivity_days
44
+ attr_reader :alert_limit
45
+ attr_reader :usage
46
+ attr_reader :addons
47
+ attr_reader :budget_cap_enabled
48
+ attr_reader :custom_smtp
49
+ attr_reader :email_branding
50
+ attr_reader :requires_payment_method
51
+ attr_reader :requires_billing_address
52
+ attr_reader :is_available
53
+ attr_reader :self_service
54
+ attr_reader :premium_support
55
+ attr_reader :budgeting
56
+ attr_reader :supports_mock_numbers
57
+ attr_reader :supports_organization_roles
58
+ attr_reader :supports_credits
59
+ attr_reader :supports_disposable_email_validation
60
+ attr_reader :supports_canonical_email_validation
61
+ attr_reader :supports_free_email_validation
62
+ attr_reader :supports_corporate_email_validation
63
+ attr_reader :supports_project_specific_roles
64
+ attr_reader :backups_enabled
65
+ attr_reader :usage_per_project
66
+ attr_reader :supported_addons
67
+ attr_reader :backup_policies
68
+ attr_reader :deployment_size
69
+ attr_reader :build_size
70
+ attr_reader :databases_allow_encrypt
71
+ attr_reader :limits
72
+ attr_reader :group
73
+ attr_reader :program
74
+ attr_reader :dedicated_databases
75
+
76
+ def initialize(
77
+ id:,
78
+ name:,
79
+ desc:,
80
+ order:,
81
+ price:,
82
+ trial:,
83
+ bandwidth:,
84
+ storage:,
85
+ image_transformations:,
86
+ screenshots_generated:,
87
+ members:,
88
+ webhooks:,
89
+ waf_rules:,
90
+ projects:,
91
+ platforms:,
92
+ users:,
93
+ teams:,
94
+ databases:,
95
+ databases_reads:,
96
+ databases_writes:,
97
+ databases_batch_size:,
98
+ buckets:,
99
+ file_size:,
100
+ functions:,
101
+ sites:,
102
+ executions:,
103
+ executions_retention_count:,
104
+ gb_hours:,
105
+ realtime:,
106
+ realtime_messages:,
107
+ messages:,
108
+ topics:,
109
+ auth_phone:,
110
+ domains:,
111
+ activity_logs:,
112
+ usage_logs:,
113
+ usage_logs_intervals: ,
114
+ project_inactivity_days:,
115
+ alert_limit:,
116
+ usage:,
117
+ addons:,
118
+ budget_cap_enabled:,
119
+ custom_smtp:,
120
+ email_branding:,
121
+ requires_payment_method:,
122
+ requires_billing_address:,
123
+ is_available:,
124
+ self_service:,
125
+ premium_support:,
126
+ budgeting:,
127
+ supports_mock_numbers:,
128
+ supports_organization_roles:,
129
+ supports_credits:,
130
+ supports_disposable_email_validation:,
131
+ supports_canonical_email_validation:,
132
+ supports_free_email_validation:,
133
+ supports_corporate_email_validation:,
134
+ supports_project_specific_roles:,
135
+ backups_enabled:,
136
+ usage_per_project:,
137
+ supported_addons:,
138
+ backup_policies:,
139
+ deployment_size:,
140
+ build_size:,
141
+ databases_allow_encrypt:,
142
+ limits: ,
143
+ group:,
144
+ program: ,
145
+ dedicated_databases:
146
+ )
147
+ @id = id
148
+ @name = name
149
+ @desc = desc
150
+ @order = order
151
+ @price = price
152
+ @trial = trial
153
+ @bandwidth = bandwidth
154
+ @storage = storage
155
+ @image_transformations = image_transformations
156
+ @screenshots_generated = screenshots_generated
157
+ @members = members
158
+ @webhooks = webhooks
159
+ @waf_rules = waf_rules
160
+ @projects = projects
161
+ @platforms = platforms
162
+ @users = users
163
+ @teams = teams
164
+ @databases = databases
165
+ @databases_reads = databases_reads
166
+ @databases_writes = databases_writes
167
+ @databases_batch_size = databases_batch_size
168
+ @buckets = buckets
169
+ @file_size = file_size
170
+ @functions = functions
171
+ @sites = sites
172
+ @executions = executions
173
+ @executions_retention_count = executions_retention_count
174
+ @gb_hours = gb_hours
175
+ @realtime = realtime
176
+ @realtime_messages = realtime_messages
177
+ @messages = messages
178
+ @topics = topics
179
+ @auth_phone = auth_phone
180
+ @domains = domains
181
+ @activity_logs = activity_logs
182
+ @usage_logs = usage_logs
183
+ @usage_logs_intervals = usage_logs_intervals
184
+ @project_inactivity_days = project_inactivity_days
185
+ @alert_limit = alert_limit
186
+ @usage = usage
187
+ @addons = addons
188
+ @budget_cap_enabled = budget_cap_enabled
189
+ @custom_smtp = custom_smtp
190
+ @email_branding = email_branding
191
+ @requires_payment_method = requires_payment_method
192
+ @requires_billing_address = requires_billing_address
193
+ @is_available = is_available
194
+ @self_service = self_service
195
+ @premium_support = premium_support
196
+ @budgeting = budgeting
197
+ @supports_mock_numbers = supports_mock_numbers
198
+ @supports_organization_roles = supports_organization_roles
199
+ @supports_credits = supports_credits
200
+ @supports_disposable_email_validation = supports_disposable_email_validation
201
+ @supports_canonical_email_validation = supports_canonical_email_validation
202
+ @supports_free_email_validation = supports_free_email_validation
203
+ @supports_corporate_email_validation = supports_corporate_email_validation
204
+ @supports_project_specific_roles = supports_project_specific_roles
205
+ @backups_enabled = backups_enabled
206
+ @usage_per_project = usage_per_project
207
+ @supported_addons = supported_addons
208
+ @backup_policies = backup_policies
209
+ @deployment_size = deployment_size
210
+ @build_size = build_size
211
+ @databases_allow_encrypt = databases_allow_encrypt
212
+ @limits = limits
213
+ @group = validate_group(group)
214
+ @program = program
215
+ @dedicated_databases = dedicated_databases
216
+ end
217
+
218
+ def self.from(map:)
219
+ BillingPlan.new(
220
+ id: map["$id"],
221
+ name: map["name"],
222
+ desc: map["desc"],
223
+ order: map["order"],
224
+ price: map["price"],
225
+ trial: map["trial"],
226
+ bandwidth: map["bandwidth"],
227
+ storage: map["storage"],
228
+ image_transformations: map["imageTransformations"],
229
+ screenshots_generated: map["screenshotsGenerated"],
230
+ members: map["members"],
231
+ webhooks: map["webhooks"],
232
+ waf_rules: map["wafRules"],
233
+ projects: map["projects"],
234
+ platforms: map["platforms"],
235
+ users: map["users"],
236
+ teams: map["teams"],
237
+ databases: map["databases"],
238
+ databases_reads: map["databasesReads"],
239
+ databases_writes: map["databasesWrites"],
240
+ databases_batch_size: map["databasesBatchSize"],
241
+ buckets: map["buckets"],
242
+ file_size: map["fileSize"],
243
+ functions: map["functions"],
244
+ sites: map["sites"],
245
+ executions: map["executions"],
246
+ executions_retention_count: map["executionsRetentionCount"],
247
+ gb_hours: map["GBHours"],
248
+ realtime: map["realtime"],
249
+ realtime_messages: map["realtimeMessages"],
250
+ messages: map["messages"],
251
+ topics: map["topics"],
252
+ auth_phone: map["authPhone"],
253
+ domains: map["domains"],
254
+ activity_logs: map["activityLogs"],
255
+ usage_logs: map["usageLogs"],
256
+ usage_logs_intervals: map["usageLogsIntervals"],
257
+ project_inactivity_days: map["projectInactivityDays"],
258
+ alert_limit: map["alertLimit"],
259
+ usage: UsageBillingPlan.from(map: map["usage"]),
260
+ addons: BillingPlanAddon.from(map: map["addons"]),
261
+ budget_cap_enabled: map["budgetCapEnabled"],
262
+ custom_smtp: map["customSmtp"],
263
+ email_branding: map["emailBranding"],
264
+ requires_payment_method: map["requiresPaymentMethod"],
265
+ requires_billing_address: map["requiresBillingAddress"],
266
+ is_available: map["isAvailable"],
267
+ self_service: map["selfService"],
268
+ premium_support: map["premiumSupport"],
269
+ budgeting: map["budgeting"],
270
+ supports_mock_numbers: map["supportsMockNumbers"],
271
+ supports_organization_roles: map["supportsOrganizationRoles"],
272
+ supports_credits: map["supportsCredits"],
273
+ supports_disposable_email_validation: map["supportsDisposableEmailValidation"],
274
+ supports_canonical_email_validation: map["supportsCanonicalEmailValidation"],
275
+ supports_free_email_validation: map["supportsFreeEmailValidation"],
276
+ supports_corporate_email_validation: map["supportsCorporateEmailValidation"],
277
+ supports_project_specific_roles: map["supportsProjectSpecificRoles"],
278
+ backups_enabled: map["backupsEnabled"],
279
+ usage_per_project: map["usagePerProject"],
280
+ supported_addons: BillingPlanSupportedAddons.from(map: map["supportedAddons"]),
281
+ backup_policies: map["backupPolicies"],
282
+ deployment_size: map["deploymentSize"],
283
+ build_size: map["buildSize"],
284
+ databases_allow_encrypt: map["databasesAllowEncrypt"],
285
+ limits: map["limits"].nil? ? nil : BillingPlanLimits.from(map: map["limits"]),
286
+ group: map["group"],
287
+ program: map["program"].nil? ? nil : Program.from(map: map["program"]),
288
+ dedicated_databases: map["dedicatedDatabases"].nil? ? nil : BillingPlanDedicatedDatabaseLimits.from(map: map["dedicatedDatabases"])
289
+ )
290
+ end
291
+
292
+ def to_map
293
+ {
294
+ "$id": @id,
295
+ "name": @name,
296
+ "desc": @desc,
297
+ "order": @order,
298
+ "price": @price,
299
+ "trial": @trial,
300
+ "bandwidth": @bandwidth,
301
+ "storage": @storage,
302
+ "imageTransformations": @image_transformations,
303
+ "screenshotsGenerated": @screenshots_generated,
304
+ "members": @members,
305
+ "webhooks": @webhooks,
306
+ "wafRules": @waf_rules,
307
+ "projects": @projects,
308
+ "platforms": @platforms,
309
+ "users": @users,
310
+ "teams": @teams,
311
+ "databases": @databases,
312
+ "databasesReads": @databases_reads,
313
+ "databasesWrites": @databases_writes,
314
+ "databasesBatchSize": @databases_batch_size,
315
+ "buckets": @buckets,
316
+ "fileSize": @file_size,
317
+ "functions": @functions,
318
+ "sites": @sites,
319
+ "executions": @executions,
320
+ "executionsRetentionCount": @executions_retention_count,
321
+ "GBHours": @gb_hours,
322
+ "realtime": @realtime,
323
+ "realtimeMessages": @realtime_messages,
324
+ "messages": @messages,
325
+ "topics": @topics,
326
+ "authPhone": @auth_phone,
327
+ "domains": @domains,
328
+ "activityLogs": @activity_logs,
329
+ "usageLogs": @usage_logs,
330
+ "usageLogsIntervals": @usage_logs_intervals,
331
+ "projectInactivityDays": @project_inactivity_days,
332
+ "alertLimit": @alert_limit,
333
+ "usage": @usage.to_map,
334
+ "addons": @addons.to_map,
335
+ "budgetCapEnabled": @budget_cap_enabled,
336
+ "customSmtp": @custom_smtp,
337
+ "emailBranding": @email_branding,
338
+ "requiresPaymentMethod": @requires_payment_method,
339
+ "requiresBillingAddress": @requires_billing_address,
340
+ "isAvailable": @is_available,
341
+ "selfService": @self_service,
342
+ "premiumSupport": @premium_support,
343
+ "budgeting": @budgeting,
344
+ "supportsMockNumbers": @supports_mock_numbers,
345
+ "supportsOrganizationRoles": @supports_organization_roles,
346
+ "supportsCredits": @supports_credits,
347
+ "supportsDisposableEmailValidation": @supports_disposable_email_validation,
348
+ "supportsCanonicalEmailValidation": @supports_canonical_email_validation,
349
+ "supportsFreeEmailValidation": @supports_free_email_validation,
350
+ "supportsCorporateEmailValidation": @supports_corporate_email_validation,
351
+ "supportsProjectSpecificRoles": @supports_project_specific_roles,
352
+ "backupsEnabled": @backups_enabled,
353
+ "usagePerProject": @usage_per_project,
354
+ "supportedAddons": @supported_addons.to_map,
355
+ "backupPolicies": @backup_policies,
356
+ "deploymentSize": @deployment_size,
357
+ "buildSize": @build_size,
358
+ "databasesAllowEncrypt": @databases_allow_encrypt,
359
+ "limits": @limits&.to_map,
360
+ "group": @group,
361
+ "program": @program&.to_map,
362
+ "dedicatedDatabases": @dedicated_databases&.to_map
363
+ }
364
+ end
365
+
366
+ private
367
+
368
+ def validate_group(group)
369
+ valid_group = [
370
+ Appwrite::Enums::BillingPlanGroup::STARTER,
371
+ Appwrite::Enums::BillingPlanGroup::PRO,
372
+ Appwrite::Enums::BillingPlanGroup::SCALE,
373
+ ]
374
+
375
+ unless valid_group.include?(group)
376
+ raise ArgumentError, "Invalid " + group + ". Must be one of: " + valid_group.join(', ')
377
+ end
378
+
379
+ group
380
+ end
381
+
382
+ end
383
+ end
384
+ end
@@ -0,0 +1,32 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingPlanAddon
6
+ attr_reader :seats
7
+ attr_reader :projects
8
+
9
+ def initialize(
10
+ seats:,
11
+ projects:
12
+ )
13
+ @seats = seats
14
+ @projects = projects
15
+ end
16
+
17
+ def self.from(map:)
18
+ BillingPlanAddon.new(
19
+ seats: BillingPlanAddonDetails.from(map: map["seats"]),
20
+ projects: BillingPlanAddonDetails.from(map: map["projects"])
21
+ )
22
+ end
23
+
24
+ def to_map
25
+ {
26
+ "seats": @seats.to_map,
27
+ "projects": @projects.to_map
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,62 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingPlanAddonDetails
6
+ attr_reader :supported
7
+ attr_reader :plan_included
8
+ attr_reader :limit
9
+ attr_reader :type
10
+ attr_reader :currency
11
+ attr_reader :price
12
+ attr_reader :value
13
+ attr_reader :invoice_desc
14
+
15
+ def initialize(
16
+ supported:,
17
+ plan_included:,
18
+ limit:,
19
+ type:,
20
+ currency:,
21
+ price:,
22
+ value:,
23
+ invoice_desc:
24
+ )
25
+ @supported = supported
26
+ @plan_included = plan_included
27
+ @limit = limit
28
+ @type = type
29
+ @currency = currency
30
+ @price = price
31
+ @value = value
32
+ @invoice_desc = invoice_desc
33
+ end
34
+
35
+ def self.from(map:)
36
+ BillingPlanAddonDetails.new(
37
+ supported: map["supported"],
38
+ plan_included: map["planIncluded"],
39
+ limit: map["limit"],
40
+ type: map["type"],
41
+ currency: map["currency"],
42
+ price: map["price"],
43
+ value: map["value"],
44
+ invoice_desc: map["invoiceDesc"]
45
+ )
46
+ end
47
+
48
+ def to_map
49
+ {
50
+ "supported": @supported,
51
+ "planIncluded": @plan_included,
52
+ "limit": @limit,
53
+ "type": @type,
54
+ "currency": @currency,
55
+ "price": @price,
56
+ "value": @value,
57
+ "invoiceDesc": @invoice_desc
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,117 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingPlanDedicatedDatabaseLimits
6
+ attr_reader :min_cpu
7
+ attr_reader :max_cpu
8
+ attr_reader :min_memory_mb
9
+ attr_reader :max_memory_mb
10
+ attr_reader :min_storage_gb
11
+ attr_reader :max_storage_gb
12
+ attr_reader :max_replicas
13
+ attr_reader :max_connections
14
+ attr_reader :max_ip_allowlist_size
15
+ attr_reader :max_extensions
16
+ attr_reader :max_backup_retention_days
17
+ attr_reader :max_pitr_retention_days
18
+ attr_reader :max_sql_api_max_rows
19
+ attr_reader :max_sql_api_max_bytes
20
+ attr_reader :max_sql_api_timeout_seconds
21
+ attr_reader :max_sql_api_allowed_statements
22
+ attr_reader :allowed_sql_statements
23
+ attr_reader :allowed_storage_classes
24
+ attr_reader :allowed_sync_modes
25
+
26
+ def initialize(
27
+ min_cpu: ,
28
+ max_cpu: ,
29
+ min_memory_mb: ,
30
+ max_memory_mb: ,
31
+ min_storage_gb: ,
32
+ max_storage_gb: ,
33
+ max_replicas: ,
34
+ max_connections: ,
35
+ max_ip_allowlist_size: ,
36
+ max_extensions: ,
37
+ max_backup_retention_days: ,
38
+ max_pitr_retention_days: ,
39
+ max_sql_api_max_rows: ,
40
+ max_sql_api_max_bytes: ,
41
+ max_sql_api_timeout_seconds: ,
42
+ max_sql_api_allowed_statements: ,
43
+ allowed_sql_statements: ,
44
+ allowed_storage_classes: ,
45
+ allowed_sync_modes:
46
+ )
47
+ @min_cpu = min_cpu
48
+ @max_cpu = max_cpu
49
+ @min_memory_mb = min_memory_mb
50
+ @max_memory_mb = max_memory_mb
51
+ @min_storage_gb = min_storage_gb
52
+ @max_storage_gb = max_storage_gb
53
+ @max_replicas = max_replicas
54
+ @max_connections = max_connections
55
+ @max_ip_allowlist_size = max_ip_allowlist_size
56
+ @max_extensions = max_extensions
57
+ @max_backup_retention_days = max_backup_retention_days
58
+ @max_pitr_retention_days = max_pitr_retention_days
59
+ @max_sql_api_max_rows = max_sql_api_max_rows
60
+ @max_sql_api_max_bytes = max_sql_api_max_bytes
61
+ @max_sql_api_timeout_seconds = max_sql_api_timeout_seconds
62
+ @max_sql_api_allowed_statements = max_sql_api_allowed_statements
63
+ @allowed_sql_statements = allowed_sql_statements
64
+ @allowed_storage_classes = allowed_storage_classes
65
+ @allowed_sync_modes = allowed_sync_modes
66
+ end
67
+
68
+ def self.from(map:)
69
+ BillingPlanDedicatedDatabaseLimits.new(
70
+ min_cpu: map["minCpu"],
71
+ max_cpu: map["maxCpu"],
72
+ min_memory_mb: map["minMemoryMb"],
73
+ max_memory_mb: map["maxMemoryMb"],
74
+ min_storage_gb: map["minStorageGb"],
75
+ max_storage_gb: map["maxStorageGb"],
76
+ max_replicas: map["maxReplicas"],
77
+ max_connections: map["maxConnections"],
78
+ max_ip_allowlist_size: map["maxIpAllowlistSize"],
79
+ max_extensions: map["maxExtensions"],
80
+ max_backup_retention_days: map["maxBackupRetentionDays"],
81
+ max_pitr_retention_days: map["maxPitrRetentionDays"],
82
+ max_sql_api_max_rows: map["maxSqlApiMaxRows"],
83
+ max_sql_api_max_bytes: map["maxSqlApiMaxBytes"],
84
+ max_sql_api_timeout_seconds: map["maxSqlApiTimeoutSeconds"],
85
+ max_sql_api_allowed_statements: map["maxSqlApiAllowedStatements"],
86
+ allowed_sql_statements: map["allowedSqlStatements"],
87
+ allowed_storage_classes: map["allowedStorageClasses"],
88
+ allowed_sync_modes: map["allowedSyncModes"]
89
+ )
90
+ end
91
+
92
+ def to_map
93
+ {
94
+ "minCpu": @min_cpu,
95
+ "maxCpu": @max_cpu,
96
+ "minMemoryMb": @min_memory_mb,
97
+ "maxMemoryMb": @max_memory_mb,
98
+ "minStorageGb": @min_storage_gb,
99
+ "maxStorageGb": @max_storage_gb,
100
+ "maxReplicas": @max_replicas,
101
+ "maxConnections": @max_connections,
102
+ "maxIpAllowlistSize": @max_ip_allowlist_size,
103
+ "maxExtensions": @max_extensions,
104
+ "maxBackupRetentionDays": @max_backup_retention_days,
105
+ "maxPitrRetentionDays": @max_pitr_retention_days,
106
+ "maxSqlApiMaxRows": @max_sql_api_max_rows,
107
+ "maxSqlApiMaxBytes": @max_sql_api_max_bytes,
108
+ "maxSqlApiTimeoutSeconds": @max_sql_api_timeout_seconds,
109
+ "maxSqlApiAllowedStatements": @max_sql_api_allowed_statements,
110
+ "allowedSqlStatements": @allowed_sql_statements,
111
+ "allowedStorageClasses": @allowed_storage_classes,
112
+ "allowedSyncModes": @allowed_sync_modes
113
+ }
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,32 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingPlanLimits
6
+ attr_reader :credits
7
+ attr_reader :daily_credits
8
+
9
+ def initialize(
10
+ credits: ,
11
+ daily_credits:
12
+ )
13
+ @credits = credits
14
+ @daily_credits = daily_credits
15
+ end
16
+
17
+ def self.from(map:)
18
+ BillingPlanLimits.new(
19
+ credits: map["credits"],
20
+ daily_credits: map["dailyCredits"]
21
+ )
22
+ end
23
+
24
+ def to_map
25
+ {
26
+ "credits": @credits,
27
+ "dailyCredits": @daily_credits
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingPlanSupportedAddons
6
+ attr_reader :baa
7
+ attr_reader :premium_geo_db
8
+ attr_reader :premium_geo_db_org
9
+
10
+ def initialize(
11
+ baa:,
12
+ premium_geo_db:,
13
+ premium_geo_db_org:
14
+ )
15
+ @baa = baa
16
+ @premium_geo_db = premium_geo_db
17
+ @premium_geo_db_org = premium_geo_db_org
18
+ end
19
+
20
+ def self.from(map:)
21
+ BillingPlanSupportedAddons.new(
22
+ baa: map["baa"],
23
+ premium_geo_db: map["premiumGeoDB"],
24
+ premium_geo_db_org: map["premiumGeoDBOrg"]
25
+ )
26
+ end
27
+
28
+ def to_map
29
+ {
30
+ "baa": @baa,
31
+ "premiumGeoDB": @premium_geo_db,
32
+ "premiumGeoDBOrg": @premium_geo_db_org
33
+ }
34
+ end
35
+ end
36
+ end
37
+ end