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.
- checksums.yaml +4 -4
- data/lib/appwrite/client.rb +36 -20
- data/lib/appwrite/enums/billing_plan_group.rb +2 -1
- data/lib/appwrite/enums/build_runtime.rb +2 -0
- data/lib/appwrite/enums/databases_index_type.rb +1 -0
- data/lib/appwrite/enums/domain_registration_type.rb +10 -0
- data/lib/appwrite/enums/domain_transfer_status_enum.rb +14 -0
- data/lib/appwrite/enums/execution_trigger.rb +1 -0
- data/lib/appwrite/enums/framework.rb +1 -0
- data/lib/appwrite/enums/id_token_provider.rb +8 -0
- data/lib/appwrite/enums/image_gravity.rb +1 -0
- data/lib/appwrite/enums/o_auth2_auth0_prompt.rb +9 -0
- data/lib/appwrite/enums/o_auth2_discord_prompt.rb +8 -0
- data/lib/appwrite/enums/o_auth2_github_prompt.rb +7 -0
- data/lib/appwrite/enums/o_auth2_kakao_prompt.rb +10 -0
- data/lib/appwrite/enums/o_auth2_microsoft_prompt.rb +10 -0
- data/lib/appwrite/enums/o_auth2_okta_prompt.rb +9 -0
- data/lib/appwrite/enums/o_auth2_salesforce_prompt.rb +8 -0
- data/lib/appwrite/enums/o_auth2_zoho_prompt.rb +7 -0
- data/lib/appwrite/enums/o_auth_provider.rb +3 -0
- data/lib/appwrite/enums/project_email_template_id.rb +2 -0
- data/lib/appwrite/enums/project_key_scopes.rb +4 -0
- data/lib/appwrite/enums/project_o_auth2_auth0_prompt.rb +9 -0
- data/lib/appwrite/enums/project_o_auth2_discord_prompt.rb +8 -0
- data/lib/appwrite/enums/project_o_auth2_git_hub_prompt.rb +7 -0
- data/lib/appwrite/enums/project_o_auth2_kakao_prompt.rb +10 -0
- data/lib/appwrite/enums/project_o_auth2_microsoft_prompt.rb +10 -0
- data/lib/appwrite/enums/project_o_auth2_okta_prompt.rb +9 -0
- data/lib/appwrite/enums/project_o_auth2_salesforce_prompt.rb +8 -0
- data/lib/appwrite/enums/project_o_auth2_zoho_prompt.rb +7 -0
- data/lib/appwrite/enums/project_o_auth_provider_id.rb +3 -0
- data/lib/appwrite/enums/project_policy_id.rb +2 -0
- data/lib/appwrite/enums/proxy_rule_deployment_resource_type.rb +1 -0
- data/lib/appwrite/enums/proxy_rule_protocol.rb +8 -0
- data/lib/appwrite/enums/runtime.rb +2 -0
- data/lib/appwrite/enums/tables_db_index_type.rb +1 -0
- data/lib/appwrite/enums/waf_rule_action.rb +11 -0
- data/lib/appwrite/models/account.rb +143 -0
- data/lib/appwrite/models/activity_event.rb +1 -0
- data/lib/appwrite/models/activity_event_list.rb +1 -0
- data/lib/appwrite/models/additional_resource.rb +1 -0
- data/lib/appwrite/models/algo_argon2.rb +1 -0
- data/lib/appwrite/models/algo_bcrypt.rb +1 -0
- data/lib/appwrite/models/algo_md5.rb +1 -0
- data/lib/appwrite/models/algo_phpass.rb +1 -0
- data/lib/appwrite/models/algo_scrypt.rb +1 -0
- data/lib/appwrite/models/algo_scrypt_modified.rb +1 -0
- data/lib/appwrite/models/algo_sha.rb +1 -0
- data/lib/appwrite/models/app.rb +1 -0
- data/lib/appwrite/models/app_installation.rb +2 -1
- data/lib/appwrite/models/app_installation_list.rb +1 -0
- data/lib/appwrite/models/app_key.rb +2 -1
- data/lib/appwrite/models/app_key_list.rb +1 -0
- data/lib/appwrite/models/app_scope.rb +1 -0
- data/lib/appwrite/models/app_scope_list.rb +1 -0
- data/lib/appwrite/models/app_secret.rb +2 -1
- data/lib/appwrite/models/app_secret_list.rb +1 -0
- data/lib/appwrite/models/app_secret_plaintext.rb +2 -1
- data/lib/appwrite/models/apps_list.rb +1 -0
- data/lib/appwrite/models/attribute_bigint.rb +5 -4
- data/lib/appwrite/models/attribute_boolean.rb +3 -2
- data/lib/appwrite/models/attribute_datetime.rb +3 -2
- data/lib/appwrite/models/attribute_email.rb +3 -2
- data/lib/appwrite/models/attribute_enum.rb +3 -2
- data/lib/appwrite/models/attribute_float.rb +5 -4
- data/lib/appwrite/models/attribute_integer.rb +5 -4
- data/lib/appwrite/models/attribute_ip.rb +3 -2
- data/lib/appwrite/models/attribute_line.rb +3 -2
- data/lib/appwrite/models/attribute_list.rb +1 -0
- data/lib/appwrite/models/attribute_longtext.rb +4 -3
- data/lib/appwrite/models/attribute_mediumtext.rb +4 -3
- data/lib/appwrite/models/attribute_object.rb +2 -1
- data/lib/appwrite/models/attribute_point.rb +3 -2
- data/lib/appwrite/models/attribute_polygon.rb +3 -2
- data/lib/appwrite/models/attribute_relationship.rb +2 -1
- data/lib/appwrite/models/attribute_string.rb +4 -3
- data/lib/appwrite/models/attribute_text.rb +4 -3
- data/lib/appwrite/models/attribute_url.rb +3 -2
- data/lib/appwrite/models/attribute_varchar.rb +4 -3
- data/lib/appwrite/models/attribute_vector.rb +2 -1
- data/lib/appwrite/models/backup_archive.rb +5 -4
- data/lib/appwrite/models/backup_archive_list.rb +1 -0
- data/lib/appwrite/models/backup_policy.rb +3 -2
- data/lib/appwrite/models/backup_policy_list.rb +1 -0
- data/lib/appwrite/models/backup_restoration.rb +2 -1
- data/lib/appwrite/models/backup_restoration_list.rb +1 -0
- data/lib/appwrite/models/billing_limits.rb +8 -8
- data/lib/appwrite/models/billing_plan.rb +25 -13
- data/lib/appwrite/models/billing_plan_addon.rb +2 -2
- data/lib/appwrite/models/billing_plan_addon_details.rb +2 -1
- data/lib/appwrite/models/billing_plan_dedicated_database_limits.rb +19 -19
- data/lib/appwrite/models/billing_plan_limits.rb +2 -2
- data/lib/appwrite/models/billing_plan_supported_addons.rb +1 -0
- data/lib/appwrite/models/block.rb +4 -33
- data/lib/appwrite/models/bucket.rb +1 -0
- data/lib/appwrite/models/bucket_list.rb +1 -0
- data/lib/appwrite/models/collection.rb +1 -0
- data/lib/appwrite/models/collection_list.rb +1 -0
- data/lib/appwrite/models/column_bigint.rb +5 -4
- data/lib/appwrite/models/column_boolean.rb +3 -2
- data/lib/appwrite/models/column_datetime.rb +3 -2
- data/lib/appwrite/models/column_email.rb +3 -2
- data/lib/appwrite/models/column_enum.rb +3 -2
- data/lib/appwrite/models/column_float.rb +5 -4
- data/lib/appwrite/models/column_index.rb +2 -1
- data/lib/appwrite/models/column_index_list.rb +1 -0
- data/lib/appwrite/models/column_integer.rb +5 -4
- data/lib/appwrite/models/column_ip.rb +3 -2
- data/lib/appwrite/models/column_line.rb +3 -2
- data/lib/appwrite/models/column_list.rb +1 -0
- data/lib/appwrite/models/column_longtext.rb +4 -3
- data/lib/appwrite/models/column_mediumtext.rb +4 -3
- data/lib/appwrite/models/column_point.rb +3 -2
- data/lib/appwrite/models/column_polygon.rb +3 -2
- data/lib/appwrite/models/column_relationship.rb +2 -1
- data/lib/appwrite/models/column_string.rb +4 -3
- data/lib/appwrite/models/column_text.rb +4 -3
- data/lib/appwrite/models/column_url.rb +3 -2
- data/lib/appwrite/models/column_varchar.rb +4 -3
- data/lib/appwrite/models/continent.rb +1 -0
- data/lib/appwrite/models/continent_list.rb +1 -0
- data/lib/appwrite/models/country.rb +1 -0
- data/lib/appwrite/models/country_list.rb +1 -0
- data/lib/appwrite/models/currency.rb +1 -0
- data/lib/appwrite/models/currency_list.rb +1 -0
- data/lib/appwrite/models/database.rb +10 -9
- data/lib/appwrite/models/database_list.rb +1 -0
- data/lib/appwrite/models/database_migration.rb +1 -0
- data/lib/appwrite/models/database_migration_list.rb +1 -0
- data/lib/appwrite/models/database_status.rb +6 -5
- data/lib/appwrite/models/database_status_connections.rb +1 -0
- data/lib/appwrite/models/database_status_replica.rb +3 -2
- data/lib/appwrite/models/database_status_volume.rb +1 -0
- data/lib/appwrite/models/dedicated_database.rb +22 -6
- data/lib/appwrite/models/dedicated_database_backup.rb +6 -5
- data/lib/appwrite/models/dedicated_database_backup_list.rb +1 -0
- data/lib/appwrite/models/dedicated_database_backup_storage.rb +1 -0
- data/lib/appwrite/models/dedicated_database_branch.rb +2 -1
- data/lib/appwrite/models/dedicated_database_branch_list.rb +1 -0
- data/lib/appwrite/models/dedicated_database_execution.rb +1 -0
- data/lib/appwrite/models/dedicated_database_execution_column.rb +1 -0
- data/lib/appwrite/models/dedicated_database_extensions.rb +1 -0
- data/lib/appwrite/models/dedicated_database_list.rb +1 -0
- data/lib/appwrite/models/dedicated_database_member.rb +3 -2
- data/lib/appwrite/models/dedicated_database_operation.rb +4 -3
- data/lib/appwrite/models/dedicated_database_operation_list.rb +1 -0
- data/lib/appwrite/models/dedicated_database_pitr_windows.rb +1 -0
- data/lib/appwrite/models/dedicated_database_pooler.rb +1 -0
- data/lib/appwrite/models/dedicated_database_replicas.rb +3 -2
- data/lib/appwrite/models/dedicated_database_restoration.rb +11 -5
- data/lib/appwrite/models/dedicated_database_restoration_list.rb +1 -0
- data/lib/appwrite/models/dedicated_database_specification.rb +21 -0
- data/lib/appwrite/models/dedicated_database_specification_list.rb +4 -8
- data/lib/appwrite/models/deployment.rb +1 -0
- data/lib/appwrite/models/deployment_list.rb +1 -0
- data/lib/appwrite/models/dns_record.rb +83 -0
- data/lib/appwrite/models/dns_records_list.rb +33 -0
- data/lib/appwrite/models/document.rb +1 -0
- data/lib/appwrite/models/document_list.rb +1 -0
- data/lib/appwrite/models/domain.rb +109 -0
- data/lib/appwrite/models/domain_price.rb +63 -0
- data/lib/appwrite/models/domain_prices_list.rb +33 -0
- data/lib/appwrite/models/domain_transfer_status.rb +59 -0
- data/lib/appwrite/models/domains_list.rb +33 -0
- data/lib/appwrite/models/email_template.rb +1 -0
- data/lib/appwrite/models/email_template_list.rb +1 -0
- data/lib/appwrite/models/embedding.rb +1 -0
- data/lib/appwrite/models/embedding_list.rb +1 -0
- data/lib/appwrite/models/ephemeral_key.rb +1 -0
- data/lib/appwrite/models/execution.rb +3 -1
- data/lib/appwrite/models/execution_list.rb +1 -0
- data/lib/appwrite/models/file.rb +1 -0
- data/lib/appwrite/models/file_list.rb +1 -0
- data/lib/appwrite/models/framework.rb +1 -0
- data/lib/appwrite/models/framework_adapter.rb +2 -1
- data/lib/appwrite/models/framework_list.rb +1 -0
- data/lib/appwrite/models/function.rb +10 -4
- data/lib/appwrite/models/function_list.rb +1 -0
- data/lib/appwrite/models/headers.rb +1 -0
- data/lib/appwrite/models/identity.rb +9 -3
- data/lib/appwrite/models/identity_list.rb +1 -0
- data/lib/appwrite/models/index.rb +2 -1
- data/lib/appwrite/models/index_list.rb +1 -0
- data/lib/appwrite/models/insight.rb +4 -3
- data/lib/appwrite/models/insight_cta.rb +1 -0
- data/lib/appwrite/models/insight_list.rb +1 -0
- data/lib/appwrite/models/jwt.rb +1 -0
- data/lib/appwrite/models/key.rb +1 -0
- data/lib/appwrite/models/key_list.rb +1 -0
- data/lib/appwrite/models/language.rb +1 -0
- data/lib/appwrite/models/language_list.rb +1 -0
- data/lib/appwrite/models/locale.rb +12 -11
- data/lib/appwrite/models/locale_code.rb +1 -0
- data/lib/appwrite/models/locale_code_list.rb +1 -0
- data/lib/appwrite/models/membership.rb +1 -0
- data/lib/appwrite/models/membership_list.rb +1 -0
- data/lib/appwrite/models/message.rb +4 -3
- data/lib/appwrite/models/message_list.rb +1 -0
- data/lib/appwrite/models/mfa_challenge.rb +1 -0
- data/lib/appwrite/models/mfa_challenge_secret.rb +1 -0
- data/lib/appwrite/models/mfa_factors.rb +1 -0
- data/lib/appwrite/models/mfa_recovery_codes.rb +1 -0
- data/lib/appwrite/models/mfa_type.rb +1 -0
- data/lib/appwrite/models/mock_number.rb +1 -0
- data/lib/appwrite/models/mock_number_list.rb +1 -0
- data/lib/appwrite/models/o_auth2_amazon.rb +1 -0
- data/lib/appwrite/models/o_auth2_apple.rb +14 -3
- data/lib/appwrite/models/o_auth2_appwrite.rb +1 -0
- data/lib/appwrite/models/o_auth2_auth0.rb +24 -0
- data/lib/appwrite/models/o_auth2_authentik.rb +1 -0
- data/lib/appwrite/models/o_auth2_autodesk.rb +1 -0
- data/lib/appwrite/models/o_auth2_bitbucket.rb +1 -0
- data/lib/appwrite/models/o_auth2_bitly.rb +1 -0
- data/lib/appwrite/models/o_auth2_box.rb +1 -0
- data/lib/appwrite/models/o_auth2_cloudflare.rb +1 -0
- data/lib/appwrite/models/o_auth2_dailymotion.rb +1 -0
- data/lib/appwrite/models/o_auth2_discord.rb +26 -3
- data/lib/appwrite/models/o_auth2_disqus.rb +1 -0
- data/lib/appwrite/models/o_auth2_dropbox.rb +1 -0
- data/lib/appwrite/models/o_auth2_etsy.rb +1 -0
- data/lib/appwrite/models/o_auth2_facebook.rb +1 -0
- data/lib/appwrite/models/o_auth2_figma.rb +1 -0
- data/lib/appwrite/models/o_auth2_fusion_auth.rb +1 -0
- data/lib/appwrite/models/o_auth2_github.rb +25 -3
- data/lib/appwrite/models/o_auth2_gitlab.rb +1 -0
- data/lib/appwrite/models/o_auth2_google.rb +18 -5
- data/lib/appwrite/models/o_auth2_hugging_face.rb +1 -0
- data/lib/appwrite/models/o_auth2_kakao.rb +67 -0
- data/lib/appwrite/models/o_auth2_keycloak.rb +1 -0
- data/lib/appwrite/models/o_auth2_kick.rb +1 -0
- data/lib/appwrite/models/o_auth2_linkedin.rb +1 -0
- data/lib/appwrite/models/o_auth2_microsoft.rb +25 -0
- data/lib/appwrite/models/o_auth2_notion.rb +1 -0
- data/lib/appwrite/models/o_auth2_oidc.rb +11 -8
- data/lib/appwrite/models/o_auth2_okta.rb +24 -0
- data/lib/appwrite/models/o_auth2_paypal.rb +1 -0
- data/lib/appwrite/models/o_auth2_podio.rb +1 -0
- data/lib/appwrite/models/o_auth2_provider_list.rb +1 -0
- data/lib/appwrite/models/o_auth2_resend.rb +1 -0
- data/lib/appwrite/models/o_auth2_salesforce.rb +26 -3
- data/lib/appwrite/models/o_auth2_slack.rb +1 -0
- data/lib/appwrite/models/o_auth2_spotify.rb +1 -0
- data/lib/appwrite/models/o_auth2_stripe.rb +1 -0
- data/lib/appwrite/models/o_auth2_tik_tok.rb +43 -0
- data/lib/appwrite/models/o_auth2_tradeshift.rb +1 -0
- data/lib/appwrite/models/o_auth2_twitch.rb +1 -0
- data/lib/appwrite/models/o_auth2_webflow.rb +43 -0
- data/lib/appwrite/models/o_auth2_word_press.rb +1 -0
- data/lib/appwrite/models/o_auth2_x.rb +1 -0
- data/lib/appwrite/models/o_auth2_yahoo.rb +1 -0
- data/lib/appwrite/models/o_auth2_yandex.rb +1 -0
- data/lib/appwrite/models/o_auth2_zoho.rb +25 -3
- data/lib/appwrite/models/o_auth2_zoom.rb +1 -0
- data/lib/appwrite/models/oauth2_approve.rb +1 -0
- data/lib/appwrite/models/oauth2_authorize.rb +1 -0
- data/lib/appwrite/models/oauth2_consent.rb +1 -0
- data/lib/appwrite/models/oauth2_consent_list.rb +1 -0
- data/lib/appwrite/models/oauth2_consent_token.rb +1 -0
- data/lib/appwrite/models/oauth2_consent_token_list.rb +1 -0
- data/lib/appwrite/models/oauth2_device_authorization.rb +1 -0
- data/lib/appwrite/models/oauth2_grant.rb +1 -0
- data/lib/appwrite/models/oauth2_introspection.rb +83 -0
- data/lib/appwrite/models/oauth2_organization.rb +1 -0
- data/lib/appwrite/models/oauth2_organization_list.rb +1 -0
- data/lib/appwrite/models/oauth2_par.rb +1 -0
- data/lib/appwrite/models/oauth2_project.rb +1 -0
- data/lib/appwrite/models/oauth2_project_list.rb +1 -0
- data/lib/appwrite/models/oauth2_reject.rb +1 -0
- data/lib/appwrite/models/oauth2_token.rb +3 -2
- data/lib/appwrite/models/organization.rb +21 -20
- data/lib/appwrite/models/passkey.rb +1 -0
- data/lib/appwrite/models/passkey_challenge.rb +1 -0
- data/lib/appwrite/models/passkey_list.rb +1 -0
- data/lib/appwrite/models/phone.rb +1 -0
- data/lib/appwrite/models/phone_list.rb +1 -0
- data/lib/appwrite/models/platform_android.rb +9 -3
- data/lib/appwrite/models/platform_apple.rb +1 -0
- data/lib/appwrite/models/platform_linux.rb +1 -0
- data/lib/appwrite/models/platform_list.rb +1 -0
- data/lib/appwrite/models/platform_web.rb +1 -0
- data/lib/appwrite/models/platform_windows.rb +1 -0
- data/lib/appwrite/models/policy_deny_aliased_email.rb +1 -0
- data/lib/appwrite/models/policy_deny_corporate_email.rb +1 -0
- data/lib/appwrite/models/policy_deny_disposable_email.rb +1 -0
- data/lib/appwrite/models/policy_deny_free_email.rb +1 -0
- data/lib/appwrite/models/policy_list.rb +1 -0
- data/lib/appwrite/models/policy_membership_privacy.rb +1 -0
- data/lib/appwrite/models/policy_mfa_factors.rb +1 -0
- data/lib/appwrite/models/policy_passkey.rb +1 -0
- data/lib/appwrite/models/policy_password_dictionary.rb +1 -0
- data/lib/appwrite/models/policy_password_history.rb +1 -0
- data/lib/appwrite/models/policy_password_personal_data.rb +1 -0
- data/lib/appwrite/models/policy_password_pwned.rb +43 -0
- data/lib/appwrite/models/policy_password_rotation.rb +38 -0
- data/lib/appwrite/models/policy_password_strength.rb +1 -0
- data/lib/appwrite/models/policy_session_alert.rb +1 -0
- data/lib/appwrite/models/policy_session_duration.rb +1 -0
- data/lib/appwrite/models/policy_session_invalidation.rb +1 -0
- data/lib/appwrite/models/policy_session_limit.rb +1 -0
- data/lib/appwrite/models/policy_user_limit.rb +1 -0
- data/lib/appwrite/models/postgres_extension.rb +1 -0
- data/lib/appwrite/models/presence.rb +4 -3
- data/lib/appwrite/models/presence_list.rb +1 -0
- data/lib/appwrite/models/program.rb +1 -0
- data/lib/appwrite/models/project.rb +35 -24
- data/lib/appwrite/models/project_auth_method.rb +1 -0
- data/lib/appwrite/models/project_list.rb +1 -0
- data/lib/appwrite/models/project_protocol.rb +1 -0
- data/lib/appwrite/models/project_service.rb +1 -0
- data/lib/appwrite/models/provider.rb +2 -1
- data/lib/appwrite/models/provider_list.rb +1 -0
- data/lib/appwrite/models/proxy_invalidation.rb +1 -0
- data/lib/appwrite/models/proxy_rule.rb +24 -4
- data/lib/appwrite/models/proxy_rule_list.rb +1 -0
- data/lib/appwrite/models/report.rb +2 -1
- data/lib/appwrite/models/report_list.rb +1 -0
- data/lib/appwrite/models/resource_token.rb +1 -0
- data/lib/appwrite/models/resource_token_list.rb +1 -0
- data/lib/appwrite/models/row.rb +1 -0
- data/lib/appwrite/models/row_list.rb +1 -0
- data/lib/appwrite/models/runtime.rb +1 -0
- data/lib/appwrite/models/runtime_list.rb +1 -0
- data/lib/appwrite/models/session.rb +1 -0
- data/lib/appwrite/models/session_list.rb +1 -0
- data/lib/appwrite/models/site.rb +1 -0
- data/lib/appwrite/models/site_list.rb +1 -0
- data/lib/appwrite/models/specification.rb +1 -0
- data/lib/appwrite/models/specification_list.rb +1 -0
- data/lib/appwrite/models/subscriber.rb +1 -0
- data/lib/appwrite/models/subscriber_list.rb +1 -0
- data/lib/appwrite/models/table.rb +1 -0
- data/lib/appwrite/models/table_list.rb +1 -0
- data/lib/appwrite/models/target.rb +2 -1
- data/lib/appwrite/models/target_list.rb +1 -0
- data/lib/appwrite/models/team.rb +1 -0
- data/lib/appwrite/models/team_list.rb +1 -0
- data/lib/appwrite/models/token.rb +1 -0
- data/lib/appwrite/models/token_secret.rb +1 -0
- data/lib/appwrite/models/topic.rb +14 -3
- data/lib/appwrite/models/topic_list.rb +1 -0
- data/lib/appwrite/models/transaction.rb +1 -0
- data/lib/appwrite/models/transaction_list.rb +1 -0
- data/lib/appwrite/models/usage_billing_plan.rb +27 -27
- data/lib/appwrite/models/user.rb +16 -10
- data/lib/appwrite/models/user_list.rb +1 -0
- data/lib/appwrite/models/variable.rb +1 -0
- data/lib/appwrite/models/variable_list.rb +1 -0
- data/lib/appwrite/models/vectorsdb_collection.rb +1 -0
- data/lib/appwrite/models/vectorsdb_collection_list.rb +1 -0
- data/lib/appwrite/models/waf_rule_bypass.rb +111 -0
- data/lib/appwrite/models/waf_rule_challenge.rb +126 -0
- data/lib/appwrite/models/waf_rule_deny.rb +111 -0
- data/lib/appwrite/models/{log_list.rb → waf_rule_list.rb} +8 -7
- data/lib/appwrite/models/waf_rule_rate_limit.rb +136 -0
- data/lib/appwrite/models/waf_rule_redirect.rb +121 -0
- data/lib/appwrite/models/webhook.rb +1 -0
- data/lib/appwrite/models/webhook_list.rb +1 -0
- data/lib/appwrite/query/builder.rb +361 -0
- data/lib/appwrite/query.rb +190 -0
- data/lib/appwrite/services/account.rb +409 -133
- data/lib/appwrite/services/activities.rb +4 -4
- data/lib/appwrite/services/advisor.rb +19 -18
- data/lib/appwrite/services/apps.rb +89 -89
- data/lib/appwrite/services/avatars.rb +92 -21
- data/lib/appwrite/services/backups.rb +30 -30
- data/lib/appwrite/services/databases.rb +504 -453
- data/lib/appwrite/services/documents_db.rb +199 -191
- data/lib/appwrite/services/domains.rb +2318 -0
- data/lib/appwrite/services/embeddings.rb +2 -2
- data/lib/appwrite/services/functions.rb +128 -112
- data/lib/appwrite/services/graphql.rb +4 -4
- data/lib/appwrite/services/locale.rb +49 -14
- data/lib/appwrite/services/messaging.rb +281 -153
- data/lib/appwrite/services/mongo.rb +194 -130
- data/lib/appwrite/services/mysql.rb +212 -144
- data/lib/appwrite/services/oauth2.rb +72 -27
- data/lib/appwrite/services/organization.rb +255 -221
- data/lib/appwrite/services/postgresql.rb +226 -158
- data/lib/appwrite/services/presences.rb +17 -16
- data/lib/appwrite/services/project.rb +588 -157
- data/lib/appwrite/services/proxy.rb +70 -23
- data/lib/appwrite/services/sites.rb +119 -107
- data/lib/appwrite/services/storage.rb +62 -59
- data/lib/appwrite/services/tables_db.rb +617 -558
- data/lib/appwrite/services/teams.rb +87 -82
- data/lib/appwrite/services/tokens.rb +25 -24
- data/lib/appwrite/services/users.rb +170 -199
- data/lib/appwrite/services/vectors_db.rb +185 -177
- data/lib/appwrite/services/waf.rb +859 -0
- data/lib/appwrite/services/webhooks.rb +23 -22
- data/lib/appwrite/topic.rb +53 -0
- data/lib/appwrite.rb +48 -9
- metadata +47 -7
- data/lib/appwrite/enums/organization_key_scopes.rb +0 -22
- data/lib/appwrite/models/dedicated_database_specification_pricing.rb +0 -42
- data/lib/appwrite/models/dev_key.rb +0 -62
- data/lib/appwrite/models/log.rb +0 -132
|
@@ -0,0 +1,859 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Appwrite
|
|
4
|
+
class Waf < Service
|
|
5
|
+
def initialize(client)
|
|
6
|
+
@client = client
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# List WAF rules for the current project.
|
|
10
|
+
#
|
|
11
|
+
#
|
|
12
|
+
# @param [Array] 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.
|
|
13
|
+
# @param [String] search Search term to filter your list results. Max length: 256 chars.
|
|
14
|
+
# @param [] total When set to false, the total count returned will be 0 and will not be calculated.
|
|
15
|
+
#
|
|
16
|
+
# @return [WafRuleList]
|
|
17
|
+
def list_rules(
|
|
18
|
+
queries: nil,
|
|
19
|
+
search: nil,
|
|
20
|
+
total: nil
|
|
21
|
+
)
|
|
22
|
+
api_path = '/waf/rules'
|
|
23
|
+
|
|
24
|
+
api_params = {
|
|
25
|
+
queries: queries,
|
|
26
|
+
search: search,
|
|
27
|
+
total: total,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
api_headers = {
|
|
31
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
32
|
+
"accept": 'application/json',
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@client.call(
|
|
36
|
+
method: 'GET',
|
|
37
|
+
path: api_path,
|
|
38
|
+
headers: api_headers,
|
|
39
|
+
params: api_params,
|
|
40
|
+
response_type: Models::WafRuleList
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Create a bypass WAF rule. Conditions can match request attributes including
|
|
45
|
+
# `ip` (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`, `path`,
|
|
46
|
+
# `host`, `country`, `continent`, `headers.<name>`, `query.<key>`,
|
|
47
|
+
# `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and
|
|
48
|
+
# `browserVersion`. Conditions on `city` and `state` require the premium Geo
|
|
49
|
+
# DB addon.
|
|
50
|
+
#
|
|
51
|
+
#
|
|
52
|
+
# @param [String] rule_id Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.
|
|
53
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
54
|
+
# @param [String] name Rule name.
|
|
55
|
+
# @param [String] resource_id Resource identifier. Leave empty for the API resource type.
|
|
56
|
+
# @param [String] description Optional description for the rule.
|
|
57
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
58
|
+
# @param [] enabled Set to false to create the rule in a disabled state.
|
|
59
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
60
|
+
#
|
|
61
|
+
# @return [WafRuleBypass]
|
|
62
|
+
def create_bypass_rule(
|
|
63
|
+
rule_id:,
|
|
64
|
+
resource_type:,
|
|
65
|
+
name:,
|
|
66
|
+
resource_id: nil,
|
|
67
|
+
description: nil,
|
|
68
|
+
priority: nil,
|
|
69
|
+
enabled: nil,
|
|
70
|
+
conditions: nil
|
|
71
|
+
)
|
|
72
|
+
if rule_id.nil?
|
|
73
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
if resource_type.nil?
|
|
77
|
+
raise Appwrite::Exception.new('Missing required parameter: "resourceType"')
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
if name.nil?
|
|
81
|
+
raise Appwrite::Exception.new('Missing required parameter: "name"')
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
api_path = '/waf/rules/bypass'
|
|
85
|
+
|
|
86
|
+
api_params = {
|
|
87
|
+
ruleId: rule_id,
|
|
88
|
+
resourceType: resource_type,
|
|
89
|
+
resourceId: resource_id,
|
|
90
|
+
name: name,
|
|
91
|
+
description: description,
|
|
92
|
+
priority: priority,
|
|
93
|
+
enabled: enabled,
|
|
94
|
+
conditions: conditions,
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
api_headers = {
|
|
98
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
99
|
+
"content-type": 'application/json',
|
|
100
|
+
"accept": 'application/json',
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@client.call(
|
|
104
|
+
method: 'POST',
|
|
105
|
+
path: api_path,
|
|
106
|
+
headers: api_headers,
|
|
107
|
+
params: api_params,
|
|
108
|
+
response_type: Models::WafRuleBypass
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Update a bypass WAF rule. Conditions can match request attributes including
|
|
113
|
+
# `ip` (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`, `path`,
|
|
114
|
+
# `host`, `country`, `continent`, `headers.<name>`, `query.<key>`,
|
|
115
|
+
# `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and
|
|
116
|
+
# `browserVersion`. Conditions on `city` and `state` require the premium Geo
|
|
117
|
+
# DB addon.
|
|
118
|
+
#
|
|
119
|
+
#
|
|
120
|
+
# @param [String] rule_id Rule ID.
|
|
121
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
122
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
123
|
+
# @param [String] name Rule name.
|
|
124
|
+
# @param [String] description Optional description for the rule.
|
|
125
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
126
|
+
# @param [] enabled Set to false to disable the rule.
|
|
127
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
128
|
+
#
|
|
129
|
+
# @return [WafRuleBypass]
|
|
130
|
+
def update_bypass_rule(
|
|
131
|
+
rule_id:,
|
|
132
|
+
resource_type: nil,
|
|
133
|
+
resource_id: nil,
|
|
134
|
+
name: nil,
|
|
135
|
+
description: nil,
|
|
136
|
+
priority: nil,
|
|
137
|
+
enabled: nil,
|
|
138
|
+
conditions: nil
|
|
139
|
+
)
|
|
140
|
+
if rule_id.nil? || rule_id == ''
|
|
141
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
api_path = '/waf/rules/bypass/{ruleId}'
|
|
145
|
+
.gsub('{ruleId}', rule_id)
|
|
146
|
+
|
|
147
|
+
api_params = {
|
|
148
|
+
resourceType: resource_type,
|
|
149
|
+
resourceId: resource_id,
|
|
150
|
+
name: name,
|
|
151
|
+
description: description,
|
|
152
|
+
priority: priority,
|
|
153
|
+
enabled: enabled,
|
|
154
|
+
conditions: conditions,
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
api_headers = {
|
|
158
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
159
|
+
"content-type": 'application/json',
|
|
160
|
+
"accept": 'application/json',
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@client.call(
|
|
164
|
+
method: 'PATCH',
|
|
165
|
+
path: api_path,
|
|
166
|
+
headers: api_headers,
|
|
167
|
+
params: api_params,
|
|
168
|
+
response_type: Models::WafRuleBypass
|
|
169
|
+
)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Create a challenge WAF rule. Use `difficulty` (1 easiest to 5 hardest) to
|
|
173
|
+
# tune the client-side proof-of-work cost, and `ttl` to control how long, in
|
|
174
|
+
# seconds, a visitor stays cleared after passing the challenge before being
|
|
175
|
+
# challenged again. Conditions can match request attributes including `ip`
|
|
176
|
+
# (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`, `path`, `host`,
|
|
177
|
+
# `country`, `continent`, `headers.<name>`, `query.<key>`, `queryKeys`,
|
|
178
|
+
# `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions
|
|
179
|
+
# on `city` and `state` require the premium Geo DB addon.
|
|
180
|
+
#
|
|
181
|
+
#
|
|
182
|
+
# @param [String] rule_id Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.
|
|
183
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
184
|
+
# @param [String] name Rule name.
|
|
185
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
186
|
+
# @param [String] description Optional description for the rule.
|
|
187
|
+
# @param [String] challenge_type Challenge type enforced by the rule.
|
|
188
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
189
|
+
# @param [] enabled Set to false to create the rule in a disabled state.
|
|
190
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
191
|
+
# @param [Integer] difficulty Challenge difficulty from 1 (easiest) to 5 (hardest). Higher values demand more client-side proof-of-work.
|
|
192
|
+
# @param [Integer] ttl How long, in seconds, a visitor stays cleared after passing the challenge before being challenged again.
|
|
193
|
+
#
|
|
194
|
+
# @return [WafRuleChallenge]
|
|
195
|
+
def create_challenge_rule(
|
|
196
|
+
rule_id:,
|
|
197
|
+
resource_type:,
|
|
198
|
+
name:,
|
|
199
|
+
resource_id: nil,
|
|
200
|
+
description: nil,
|
|
201
|
+
challenge_type: nil,
|
|
202
|
+
priority: nil,
|
|
203
|
+
enabled: nil,
|
|
204
|
+
conditions: nil,
|
|
205
|
+
difficulty: nil,
|
|
206
|
+
ttl: nil
|
|
207
|
+
)
|
|
208
|
+
if rule_id.nil?
|
|
209
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
if resource_type.nil?
|
|
213
|
+
raise Appwrite::Exception.new('Missing required parameter: "resourceType"')
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
if name.nil?
|
|
217
|
+
raise Appwrite::Exception.new('Missing required parameter: "name"')
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
api_path = '/waf/rules/challenge'
|
|
221
|
+
|
|
222
|
+
api_params = {
|
|
223
|
+
ruleId: rule_id,
|
|
224
|
+
resourceType: resource_type,
|
|
225
|
+
resourceId: resource_id,
|
|
226
|
+
name: name,
|
|
227
|
+
description: description,
|
|
228
|
+
challengeType: challenge_type,
|
|
229
|
+
priority: priority,
|
|
230
|
+
enabled: enabled,
|
|
231
|
+
conditions: conditions,
|
|
232
|
+
difficulty: difficulty,
|
|
233
|
+
ttl: ttl,
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
api_headers = {
|
|
237
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
238
|
+
"content-type": 'application/json',
|
|
239
|
+
"accept": 'application/json',
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
@client.call(
|
|
243
|
+
method: 'POST',
|
|
244
|
+
path: api_path,
|
|
245
|
+
headers: api_headers,
|
|
246
|
+
params: api_params,
|
|
247
|
+
response_type: Models::WafRuleChallenge
|
|
248
|
+
)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# Update a challenge WAF rule. Use `difficulty` (1 easiest to 5 hardest) to
|
|
252
|
+
# tune the client-side proof-of-work cost, and `ttl` to control how long, in
|
|
253
|
+
# seconds, a visitor stays cleared after passing the challenge before being
|
|
254
|
+
# challenged again. Conditions can match request attributes including `ip`
|
|
255
|
+
# (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`, `path`, `host`,
|
|
256
|
+
# `country`, `continent`, `headers.<name>`, `query.<key>`, `queryKeys`,
|
|
257
|
+
# `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions
|
|
258
|
+
# on `city` and `state` require the premium Geo DB addon.
|
|
259
|
+
#
|
|
260
|
+
#
|
|
261
|
+
# @param [String] rule_id Rule ID.
|
|
262
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
263
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
264
|
+
# @param [String] name Rule name.
|
|
265
|
+
# @param [String] description Optional description for the rule.
|
|
266
|
+
# @param [String] challenge_type Challenge type enforced by the rule.
|
|
267
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
268
|
+
# @param [] enabled Set to false to disable the rule.
|
|
269
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
270
|
+
# @param [Integer] difficulty Challenge difficulty from 1 (easiest) to 5 (hardest). Higher values demand more client-side proof-of-work.
|
|
271
|
+
# @param [Integer] ttl How long, in seconds, a visitor stays cleared after passing the challenge before being challenged again.
|
|
272
|
+
#
|
|
273
|
+
# @return [WafRuleChallenge]
|
|
274
|
+
def update_challenge_rule(
|
|
275
|
+
rule_id:,
|
|
276
|
+
resource_type: nil,
|
|
277
|
+
resource_id: nil,
|
|
278
|
+
name: nil,
|
|
279
|
+
description: nil,
|
|
280
|
+
challenge_type: nil,
|
|
281
|
+
priority: nil,
|
|
282
|
+
enabled: nil,
|
|
283
|
+
conditions: nil,
|
|
284
|
+
difficulty: nil,
|
|
285
|
+
ttl: nil
|
|
286
|
+
)
|
|
287
|
+
if rule_id.nil? || rule_id == ''
|
|
288
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
api_path = '/waf/rules/challenge/{ruleId}'
|
|
292
|
+
.gsub('{ruleId}', rule_id)
|
|
293
|
+
|
|
294
|
+
api_params = {
|
|
295
|
+
resourceType: resource_type,
|
|
296
|
+
resourceId: resource_id,
|
|
297
|
+
name: name,
|
|
298
|
+
description: description,
|
|
299
|
+
challengeType: challenge_type,
|
|
300
|
+
priority: priority,
|
|
301
|
+
enabled: enabled,
|
|
302
|
+
conditions: conditions,
|
|
303
|
+
difficulty: difficulty,
|
|
304
|
+
ttl: ttl,
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
api_headers = {
|
|
308
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
309
|
+
"content-type": 'application/json',
|
|
310
|
+
"accept": 'application/json',
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@client.call(
|
|
314
|
+
method: 'PATCH',
|
|
315
|
+
path: api_path,
|
|
316
|
+
headers: api_headers,
|
|
317
|
+
params: api_params,
|
|
318
|
+
response_type: Models::WafRuleChallenge
|
|
319
|
+
)
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
# Create a deny WAF rule. Conditions can match request attributes including
|
|
323
|
+
# `ip` (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`, `path`,
|
|
324
|
+
# `host`, `country`, `continent`, `headers.<name>`, `query.<key>`,
|
|
325
|
+
# `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and
|
|
326
|
+
# `browserVersion`. Conditions on `city` and `state` require the premium Geo
|
|
327
|
+
# DB addon.
|
|
328
|
+
#
|
|
329
|
+
#
|
|
330
|
+
# @param [String] rule_id Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.
|
|
331
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
332
|
+
# @param [String] name Rule name.
|
|
333
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
334
|
+
# @param [String] description Optional description for the rule.
|
|
335
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
336
|
+
# @param [] enabled Set to false to create the rule in a disabled state.
|
|
337
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
338
|
+
#
|
|
339
|
+
# @return [WafRuleDeny]
|
|
340
|
+
def create_deny_rule(
|
|
341
|
+
rule_id:,
|
|
342
|
+
resource_type:,
|
|
343
|
+
name:,
|
|
344
|
+
resource_id: nil,
|
|
345
|
+
description: nil,
|
|
346
|
+
priority: nil,
|
|
347
|
+
enabled: nil,
|
|
348
|
+
conditions: nil
|
|
349
|
+
)
|
|
350
|
+
if rule_id.nil?
|
|
351
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
if resource_type.nil?
|
|
355
|
+
raise Appwrite::Exception.new('Missing required parameter: "resourceType"')
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
if name.nil?
|
|
359
|
+
raise Appwrite::Exception.new('Missing required parameter: "name"')
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
api_path = '/waf/rules/deny'
|
|
363
|
+
|
|
364
|
+
api_params = {
|
|
365
|
+
ruleId: rule_id,
|
|
366
|
+
resourceType: resource_type,
|
|
367
|
+
resourceId: resource_id,
|
|
368
|
+
name: name,
|
|
369
|
+
description: description,
|
|
370
|
+
priority: priority,
|
|
371
|
+
enabled: enabled,
|
|
372
|
+
conditions: conditions,
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
api_headers = {
|
|
376
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
377
|
+
"content-type": 'application/json',
|
|
378
|
+
"accept": 'application/json',
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
@client.call(
|
|
382
|
+
method: 'POST',
|
|
383
|
+
path: api_path,
|
|
384
|
+
headers: api_headers,
|
|
385
|
+
params: api_params,
|
|
386
|
+
response_type: Models::WafRuleDeny
|
|
387
|
+
)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
# Update a deny WAF rule. Conditions can match request attributes including
|
|
391
|
+
# `ip` (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`, `path`,
|
|
392
|
+
# `host`, `country`, `continent`, `headers.<name>`, `query.<key>`,
|
|
393
|
+
# `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and
|
|
394
|
+
# `browserVersion`. Conditions on `city` and `state` require the premium Geo
|
|
395
|
+
# DB addon.
|
|
396
|
+
#
|
|
397
|
+
#
|
|
398
|
+
# @param [String] rule_id Rule ID.
|
|
399
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
400
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
401
|
+
# @param [String] name Rule name.
|
|
402
|
+
# @param [String] description Optional description for the rule.
|
|
403
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
404
|
+
# @param [] enabled Set to false to disable the rule.
|
|
405
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
406
|
+
#
|
|
407
|
+
# @return [WafRuleDeny]
|
|
408
|
+
def update_deny_rule(
|
|
409
|
+
rule_id:,
|
|
410
|
+
resource_type: nil,
|
|
411
|
+
resource_id: nil,
|
|
412
|
+
name: nil,
|
|
413
|
+
description: nil,
|
|
414
|
+
priority: nil,
|
|
415
|
+
enabled: nil,
|
|
416
|
+
conditions: nil
|
|
417
|
+
)
|
|
418
|
+
if rule_id.nil? || rule_id == ''
|
|
419
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
api_path = '/waf/rules/deny/{ruleId}'
|
|
423
|
+
.gsub('{ruleId}', rule_id)
|
|
424
|
+
|
|
425
|
+
api_params = {
|
|
426
|
+
resourceType: resource_type,
|
|
427
|
+
resourceId: resource_id,
|
|
428
|
+
name: name,
|
|
429
|
+
description: description,
|
|
430
|
+
priority: priority,
|
|
431
|
+
enabled: enabled,
|
|
432
|
+
conditions: conditions,
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
api_headers = {
|
|
436
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
437
|
+
"content-type": 'application/json',
|
|
438
|
+
"accept": 'application/json',
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
@client.call(
|
|
442
|
+
method: 'PATCH',
|
|
443
|
+
path: api_path,
|
|
444
|
+
headers: api_headers,
|
|
445
|
+
params: api_params,
|
|
446
|
+
response_type: Models::WafRuleDeny
|
|
447
|
+
)
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
# Create a rate limit WAF rule. Use `key` to choose the counter: `ip` limits
|
|
451
|
+
# per client IP, while `userId` limits per authenticated user (requests
|
|
452
|
+
# without an authenticated user skip `userId` rules). Conditions can match
|
|
453
|
+
# request attributes including `ip` (plain IPs or CIDR blocks like
|
|
454
|
+
# `10.0.0.0/8`), `method`, `path`, `host`, `country`, `continent`,
|
|
455
|
+
# `headers.<name>`, `query.<key>`, `queryKeys`, `userAgent`, `os`,
|
|
456
|
+
# `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and
|
|
457
|
+
# `state` require the premium Geo DB addon.
|
|
458
|
+
#
|
|
459
|
+
#
|
|
460
|
+
# @param [String] rule_id Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.
|
|
461
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
462
|
+
# @param [String] name Rule name.
|
|
463
|
+
# @param [Integer] limit Maximum number of matching requests allowed in the configured interval.
|
|
464
|
+
# @param [Integer] interval Interval in seconds used for rate limiting.
|
|
465
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
466
|
+
# @param [String] description Optional description for the rule.
|
|
467
|
+
# @param [String] key Rate limit key. Use `ip` to limit per client IP or `userId` to limit per authenticated user. Requests without an authenticated user skip `userId` rules.
|
|
468
|
+
# @param [String] strategy Rate limit strategy. `fixedWindow` counts requests in discrete intervals, `slidingWindow` weights the previous interval for smoother limiting, and `tokenBucket` refills allowance continuously to permit short bursts.
|
|
469
|
+
# @param [Integer] max_bucket_size Maximum number of tokens the bucket can hold for the `tokenBucket` strategy, controlling how large a burst is allowed. The sustained refill rate is `limit / interval`. Defaults to `limit` when omitted. Ignored by other strategies.
|
|
470
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
471
|
+
# @param [] enabled Set to false to create the rule in a disabled state.
|
|
472
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
473
|
+
#
|
|
474
|
+
# @return [WafRuleRateLimit]
|
|
475
|
+
def create_rate_limit_rule(
|
|
476
|
+
rule_id:,
|
|
477
|
+
resource_type:,
|
|
478
|
+
name:,
|
|
479
|
+
limit:,
|
|
480
|
+
interval:,
|
|
481
|
+
resource_id: nil,
|
|
482
|
+
description: nil,
|
|
483
|
+
key: nil,
|
|
484
|
+
strategy: nil,
|
|
485
|
+
max_bucket_size: nil,
|
|
486
|
+
priority: nil,
|
|
487
|
+
enabled: nil,
|
|
488
|
+
conditions: nil
|
|
489
|
+
)
|
|
490
|
+
if rule_id.nil?
|
|
491
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
if resource_type.nil?
|
|
495
|
+
raise Appwrite::Exception.new('Missing required parameter: "resourceType"')
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
if name.nil?
|
|
499
|
+
raise Appwrite::Exception.new('Missing required parameter: "name"')
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
if limit.nil?
|
|
503
|
+
raise Appwrite::Exception.new('Missing required parameter: "limit"')
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
if interval.nil?
|
|
507
|
+
raise Appwrite::Exception.new('Missing required parameter: "interval"')
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
api_path = '/waf/rules/rate-limit'
|
|
511
|
+
|
|
512
|
+
api_params = {
|
|
513
|
+
ruleId: rule_id,
|
|
514
|
+
resourceType: resource_type,
|
|
515
|
+
resourceId: resource_id,
|
|
516
|
+
name: name,
|
|
517
|
+
description: description,
|
|
518
|
+
limit: limit,
|
|
519
|
+
interval: interval,
|
|
520
|
+
key: key,
|
|
521
|
+
strategy: strategy,
|
|
522
|
+
maxBucketSize: max_bucket_size,
|
|
523
|
+
priority: priority,
|
|
524
|
+
enabled: enabled,
|
|
525
|
+
conditions: conditions,
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
api_headers = {
|
|
529
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
530
|
+
"content-type": 'application/json',
|
|
531
|
+
"accept": 'application/json',
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
@client.call(
|
|
535
|
+
method: 'POST',
|
|
536
|
+
path: api_path,
|
|
537
|
+
headers: api_headers,
|
|
538
|
+
params: api_params,
|
|
539
|
+
response_type: Models::WafRuleRateLimit
|
|
540
|
+
)
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
# Update a rate limit WAF rule. Use `key` to choose the counter: `ip` limits
|
|
544
|
+
# per client IP, while `userId` limits per authenticated user (requests
|
|
545
|
+
# without an authenticated user skip `userId` rules). Conditions can match
|
|
546
|
+
# request attributes including `ip` (plain IPs or CIDR blocks like
|
|
547
|
+
# `10.0.0.0/8`), `method`, `path`, `host`, `country`, `continent`,
|
|
548
|
+
# `headers.<name>`, `query.<key>`, `queryKeys`, `userAgent`, `os`,
|
|
549
|
+
# `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and
|
|
550
|
+
# `state` require the premium Geo DB addon.
|
|
551
|
+
#
|
|
552
|
+
#
|
|
553
|
+
# @param [String] rule_id Rule ID.
|
|
554
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
555
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
556
|
+
# @param [String] name Rule name.
|
|
557
|
+
# @param [String] description Optional description for the rule.
|
|
558
|
+
# @param [Integer] limit Maximum number of matching requests allowed in the configured interval.
|
|
559
|
+
# @param [Integer] interval Interval in seconds used for rate limiting.
|
|
560
|
+
# @param [String] key Rate limit key. Use `ip` to limit per client IP or `userId` to limit per authenticated user. Requests without an authenticated user skip `userId` rules.
|
|
561
|
+
# @param [Integer] max_bucket_size Maximum number of tokens the bucket can hold for the `tokenBucket` strategy, controlling how large a burst is allowed. The sustained refill rate is `limit / interval`. Ignored by other strategies. The strategy itself cannot be changed after creation.
|
|
562
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
563
|
+
# @param [] enabled Set to false to disable the rule.
|
|
564
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
565
|
+
#
|
|
566
|
+
# @return [WafRuleRateLimit]
|
|
567
|
+
def update_rate_limit_rule(
|
|
568
|
+
rule_id:,
|
|
569
|
+
resource_type: nil,
|
|
570
|
+
resource_id: nil,
|
|
571
|
+
name: nil,
|
|
572
|
+
description: nil,
|
|
573
|
+
limit: nil,
|
|
574
|
+
interval: nil,
|
|
575
|
+
key: nil,
|
|
576
|
+
max_bucket_size: nil,
|
|
577
|
+
priority: nil,
|
|
578
|
+
enabled: nil,
|
|
579
|
+
conditions: nil
|
|
580
|
+
)
|
|
581
|
+
if rule_id.nil? || rule_id == ''
|
|
582
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
583
|
+
end
|
|
584
|
+
|
|
585
|
+
api_path = '/waf/rules/rate-limit/{ruleId}'
|
|
586
|
+
.gsub('{ruleId}', rule_id)
|
|
587
|
+
|
|
588
|
+
api_params = {
|
|
589
|
+
resourceType: resource_type,
|
|
590
|
+
resourceId: resource_id,
|
|
591
|
+
name: name,
|
|
592
|
+
description: description,
|
|
593
|
+
limit: limit,
|
|
594
|
+
interval: interval,
|
|
595
|
+
key: key,
|
|
596
|
+
maxBucketSize: max_bucket_size,
|
|
597
|
+
priority: priority,
|
|
598
|
+
enabled: enabled,
|
|
599
|
+
conditions: conditions,
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
api_headers = {
|
|
603
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
604
|
+
"content-type": 'application/json',
|
|
605
|
+
"accept": 'application/json',
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
@client.call(
|
|
609
|
+
method: 'PATCH',
|
|
610
|
+
path: api_path,
|
|
611
|
+
headers: api_headers,
|
|
612
|
+
params: api_params,
|
|
613
|
+
response_type: Models::WafRuleRateLimit
|
|
614
|
+
)
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
# Create a redirect WAF rule. Conditions can match request attributes
|
|
618
|
+
# including `ip` (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`,
|
|
619
|
+
# `path`, `host`, `country`, `continent`, `headers.<name>`, `query.<key>`,
|
|
620
|
+
# `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and
|
|
621
|
+
# `browserVersion`. Conditions on `city` and `state` require the premium Geo
|
|
622
|
+
# DB addon.
|
|
623
|
+
#
|
|
624
|
+
#
|
|
625
|
+
# @param [String] rule_id Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.
|
|
626
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
627
|
+
# @param [String] name Rule name.
|
|
628
|
+
# @param [String] location Location used for redirect responses.
|
|
629
|
+
# @param [Integer] status_code Integer status code used for redirect responses.
|
|
630
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
631
|
+
# @param [String] description Optional description for the rule.
|
|
632
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
633
|
+
# @param [] enabled Set to false to create the rule in a disabled state.
|
|
634
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
635
|
+
#
|
|
636
|
+
# @return [WafRuleRedirect]
|
|
637
|
+
def create_redirect_rule(
|
|
638
|
+
rule_id:,
|
|
639
|
+
resource_type:,
|
|
640
|
+
name:,
|
|
641
|
+
location:,
|
|
642
|
+
status_code:,
|
|
643
|
+
resource_id: nil,
|
|
644
|
+
description: nil,
|
|
645
|
+
priority: nil,
|
|
646
|
+
enabled: nil,
|
|
647
|
+
conditions: nil
|
|
648
|
+
)
|
|
649
|
+
if rule_id.nil?
|
|
650
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
if resource_type.nil?
|
|
654
|
+
raise Appwrite::Exception.new('Missing required parameter: "resourceType"')
|
|
655
|
+
end
|
|
656
|
+
|
|
657
|
+
if name.nil?
|
|
658
|
+
raise Appwrite::Exception.new('Missing required parameter: "name"')
|
|
659
|
+
end
|
|
660
|
+
|
|
661
|
+
if location.nil?
|
|
662
|
+
raise Appwrite::Exception.new('Missing required parameter: "location"')
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
if status_code.nil?
|
|
666
|
+
raise Appwrite::Exception.new('Missing required parameter: "statusCode"')
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
api_path = '/waf/rules/redirect'
|
|
670
|
+
|
|
671
|
+
api_params = {
|
|
672
|
+
ruleId: rule_id,
|
|
673
|
+
resourceType: resource_type,
|
|
674
|
+
resourceId: resource_id,
|
|
675
|
+
name: name,
|
|
676
|
+
description: description,
|
|
677
|
+
location: location,
|
|
678
|
+
statusCode: status_code,
|
|
679
|
+
priority: priority,
|
|
680
|
+
enabled: enabled,
|
|
681
|
+
conditions: conditions,
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
api_headers = {
|
|
685
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
686
|
+
"content-type": 'application/json',
|
|
687
|
+
"accept": 'application/json',
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
@client.call(
|
|
691
|
+
method: 'POST',
|
|
692
|
+
path: api_path,
|
|
693
|
+
headers: api_headers,
|
|
694
|
+
params: api_params,
|
|
695
|
+
response_type: Models::WafRuleRedirect
|
|
696
|
+
)
|
|
697
|
+
end
|
|
698
|
+
|
|
699
|
+
# Update a redirect WAF rule. Conditions can match request attributes
|
|
700
|
+
# including `ip` (plain IPs or CIDR blocks like `10.0.0.0/8`), `method`,
|
|
701
|
+
# `path`, `host`, `country`, `continent`, `headers.<name>`, `query.<key>`,
|
|
702
|
+
# `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and
|
|
703
|
+
# `browserVersion`. Conditions on `city` and `state` require the premium Geo
|
|
704
|
+
# DB addon.
|
|
705
|
+
#
|
|
706
|
+
#
|
|
707
|
+
# @param [String] rule_id Rule ID.
|
|
708
|
+
# @param [String] resource_type Resource type the rule applies to.
|
|
709
|
+
# @param [String] resource_id Resource identifier. Required for functions and sites.
|
|
710
|
+
# @param [String] name Rule name.
|
|
711
|
+
# @param [String] description Optional description for the rule.
|
|
712
|
+
# @param [String] location Location used for redirect responses.
|
|
713
|
+
# @param [Integer] status_code Integer status code used for redirect responses.
|
|
714
|
+
# @param [Integer] priority Evaluation priority. Lower numbers run earlier.
|
|
715
|
+
# @param [] enabled Set to false to disable the rule.
|
|
716
|
+
# @param [Array] conditions Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.
|
|
717
|
+
#
|
|
718
|
+
# @return [WafRuleRedirect]
|
|
719
|
+
def update_redirect_rule(
|
|
720
|
+
rule_id:,
|
|
721
|
+
resource_type: nil,
|
|
722
|
+
resource_id: nil,
|
|
723
|
+
name: nil,
|
|
724
|
+
description: nil,
|
|
725
|
+
location: nil,
|
|
726
|
+
status_code: nil,
|
|
727
|
+
priority: nil,
|
|
728
|
+
enabled: nil,
|
|
729
|
+
conditions: nil
|
|
730
|
+
)
|
|
731
|
+
if rule_id.nil? || rule_id == ''
|
|
732
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
733
|
+
end
|
|
734
|
+
|
|
735
|
+
api_path = '/waf/rules/redirect/{ruleId}'
|
|
736
|
+
.gsub('{ruleId}', rule_id)
|
|
737
|
+
|
|
738
|
+
api_params = {
|
|
739
|
+
resourceType: resource_type,
|
|
740
|
+
resourceId: resource_id,
|
|
741
|
+
name: name,
|
|
742
|
+
description: description,
|
|
743
|
+
location: location,
|
|
744
|
+
statusCode: status_code,
|
|
745
|
+
priority: priority,
|
|
746
|
+
enabled: enabled,
|
|
747
|
+
conditions: conditions,
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
api_headers = {
|
|
751
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
752
|
+
"content-type": 'application/json',
|
|
753
|
+
"accept": 'application/json',
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
@client.call(
|
|
757
|
+
method: 'PATCH',
|
|
758
|
+
path: api_path,
|
|
759
|
+
headers: api_headers,
|
|
760
|
+
params: api_params,
|
|
761
|
+
response_type: Models::WafRuleRedirect
|
|
762
|
+
)
|
|
763
|
+
end
|
|
764
|
+
|
|
765
|
+
# Get a WAF rule by its ID.
|
|
766
|
+
#
|
|
767
|
+
#
|
|
768
|
+
# @param [String] rule_id Rule ID.
|
|
769
|
+
#
|
|
770
|
+
# @return [WafRuleBypass, WafRuleDeny, WafRuleChallenge, WafRuleRateLimit, WafRuleRedirect]
|
|
771
|
+
def get_rule(
|
|
772
|
+
rule_id:
|
|
773
|
+
)
|
|
774
|
+
if rule_id.nil? || rule_id == ''
|
|
775
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
776
|
+
end
|
|
777
|
+
|
|
778
|
+
api_path = '/waf/rules/{ruleId}'
|
|
779
|
+
.gsub('{ruleId}', rule_id)
|
|
780
|
+
|
|
781
|
+
api_params = {}
|
|
782
|
+
|
|
783
|
+
api_headers = {
|
|
784
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
785
|
+
"accept": 'application/json',
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
response = @client.call(
|
|
789
|
+
method: 'GET',
|
|
790
|
+
path: api_path,
|
|
791
|
+
headers: api_headers,
|
|
792
|
+
params: api_params,
|
|
793
|
+
)
|
|
794
|
+
|
|
795
|
+
unless response.is_a?(Hash)
|
|
796
|
+
raise Exception, "Expected object response when hydrating a response model"
|
|
797
|
+
end
|
|
798
|
+
|
|
799
|
+
if response['action'] == 'bypass'
|
|
800
|
+
|
|
801
|
+
return Models::WafRuleBypass.from(map: response)
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
if response['action'] == 'deny'
|
|
805
|
+
|
|
806
|
+
return Models::WafRuleDeny.from(map: response)
|
|
807
|
+
end
|
|
808
|
+
|
|
809
|
+
if response['action'] == 'challenge'
|
|
810
|
+
|
|
811
|
+
return Models::WafRuleChallenge.from(map: response)
|
|
812
|
+
end
|
|
813
|
+
|
|
814
|
+
if response['action'] == 'rateLimit'
|
|
815
|
+
|
|
816
|
+
return Models::WafRuleRateLimit.from(map: response)
|
|
817
|
+
end
|
|
818
|
+
|
|
819
|
+
if response['action'] == 'redirect'
|
|
820
|
+
|
|
821
|
+
return Models::WafRuleRedirect.from(map: response)
|
|
822
|
+
end
|
|
823
|
+
|
|
824
|
+
raise Exception, "Unable to match response to any expected response model"
|
|
825
|
+
end
|
|
826
|
+
|
|
827
|
+
# Delete a WAF rule.
|
|
828
|
+
#
|
|
829
|
+
#
|
|
830
|
+
# @param [String] rule_id Rule ID.
|
|
831
|
+
#
|
|
832
|
+
# @return []
|
|
833
|
+
def delete_rule(
|
|
834
|
+
rule_id:
|
|
835
|
+
)
|
|
836
|
+
if rule_id.nil? || rule_id == ''
|
|
837
|
+
raise Appwrite::Exception.new('Missing required parameter: "ruleId"')
|
|
838
|
+
end
|
|
839
|
+
|
|
840
|
+
api_path = '/waf/rules/{ruleId}'
|
|
841
|
+
.gsub('{ruleId}', rule_id)
|
|
842
|
+
|
|
843
|
+
api_params = {}
|
|
844
|
+
|
|
845
|
+
api_headers = {
|
|
846
|
+
"X-Appwrite-Project": @client.get_config('project'),
|
|
847
|
+
"content-type": 'application/json',
|
|
848
|
+
"accept": 'application/json',
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
@client.call(
|
|
852
|
+
method: 'DELETE',
|
|
853
|
+
path: api_path,
|
|
854
|
+
headers: api_headers,
|
|
855
|
+
params: api_params,
|
|
856
|
+
)
|
|
857
|
+
end
|
|
858
|
+
end
|
|
859
|
+
end
|