bella_baxter 0.1.1.pre.preview.16
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 +7 -0
- data/README.md +225 -0
- data/lib/bella_baxter/client.rb +174 -0
- data/lib/bella_baxter/e2ee.rb +136 -0
- data/lib/bella_baxter/e2ee_faraday_middleware.rb +46 -0
- data/lib/bella_baxter/errors.rb +29 -0
- data/lib/bella_baxter/generated/api/api.rb +0 -0
- data/lib/bella_baxter/generated/api/api_request_builder.rb +52 -0
- data/lib/bella_baxter/generated/api/diagnostics/auth/auth.rb +0 -0
- data/lib/bella_baxter/generated/api/diagnostics/auth/auth_request_builder.rb +66 -0
- data/lib/bella_baxter/generated/api/diagnostics/diagnostics.rb +0 -0
- data/lib/bella_baxter/generated/api/diagnostics/diagnostics_request_builder.rb +31 -0
- data/lib/bella_baxter/generated/api/tenants/invites/invites.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/invites/invites_request_builder.rb +40 -0
- data/lib/bella_baxter/generated/api/tenants/invites/item/accept/accept.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/invites/item/accept/accept_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/tenants/invites/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/invites/item/preview/preview.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/invites/item/preview/preview_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/tenants/invites/item/with_token_item_request_builder.rb +43 -0
- data/lib/bella_baxter/generated/api/tenants/item/identifier_item_request_builder.rb +96 -0
- data/lib/bella_baxter/generated/api/tenants/item/invites/invites.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/invites/invites_request_builder.rb +116 -0
- data/lib/bella_baxter/generated/api/tenants/item/invites/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/invites/item/with_token_item_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/tenants/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/settings/settings.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/settings/settings_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/tenants/item/switch/switch.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/switch/switch_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/tenants/item/users/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/users/item/role/role.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/users/item/role/role_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/tenants/item/users/item/with_user_item_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/tenants/item/users/users.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/users/users_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/tenants/item/verify_access/verify_access.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/item/verify_access/verify_access_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/tenants/my_tenants/my_tenants.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/my_tenants/my_tenants_request_builder.rb +66 -0
- data/lib/bella_baxter/generated/api/tenants/new/new.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/new/new_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/tenants/tenants.rb +0 -0
- data/lib/bella_baxter/generated/api/tenants/tenants_request_builder.rb +151 -0
- data/lib/bella_baxter/generated/api/users/handshake/handshake.rb +0 -0
- data/lib/bella_baxter/generated/api/users/handshake/handshake_request_builder.rb +66 -0
- data/lib/bella_baxter/generated/api/users/users.rb +0 -0
- data/lib/bella_baxter/generated/api/users/users_request_builder.rb +31 -0
- data/lib/bella_baxter/generated/api/v1/access_logs/access_logs.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/access_logs/access_logs_request_builder.rb +103 -0
- data/lib/bella_baxter/generated/api/v1/admin/admin.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/admin_request_builder.rb +64 -0
- data/lib/bella_baxter/generated/api/v1/admin/change_password/change_password.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/change_password/change_password_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/admin/notifications/notifications.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/notifications/notifications_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/admin/roles/roles.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/roles/roles_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/admin/tenants/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/tenants/item/plan/plan.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/tenants/item/plan/plan_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/admin/tenants/item/tenants_item_request_builder.rb +40 -0
- data/lib/bella_baxter/generated/api/v1/admin/tenants/tenants.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/tenants/tenants_request_builder.rb +43 -0
- data/lib/bella_baxter/generated/api/v1/admin/users/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/users/item/users_item_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/admin/users/users.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/users/users_request_builder.rb +87 -0
- data/lib/bella_baxter/generated/api/v1/admin/webhooks/webhooks.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/admin/webhooks/webhooks_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/api_keys/api_keys.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/api_keys/api_keys_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/api_keys/item/api_keys_item_request_builder.rb +138 -0
- data/lib/bella_baxter/generated/api/v1/api_keys/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/api_keys/item/toggle_status/toggle_status.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/api_keys/item/toggle_status/toggle_status_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/auth/auth.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/auth/auth_request_builder.rb +46 -0
- data/lib/bella_baxter/generated/api/v1/auth/config/config.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/auth/config/config_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/auth/sso_hint/sso_hint.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/auth/sso_hint/sso_hint_request_builder.rb +77 -0
- data/lib/bella_baxter/generated/api/v1/auth/token/token.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/auth/token/token_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/dashboard/dashboard.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/dashboard/dashboard_request_builder.rb +66 -0
- data/lib/bella_baxter/generated/api/v1/environments/environments.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/environments_request_builder.rb +40 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/api_keys/api_keys.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/api_keys/api_keys_request_builder.rb +129 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/drift/drift.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/drift/drift_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/env_item_request_builder.rb +85 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/notifications/notifications.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/notifications/notifications_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/secret_drift_summary/secret_drift_summary.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/secret_drift_summary/secret_drift_summary_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/security/scan/scan.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/security/scan/scan_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/security/security.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/security/security_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/token/token.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/token/token_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/tokens/issue/issue.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/tokens/issue/issue_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/tokens/tokens.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/tokens/tokens_request_builder.rb +40 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/item/trust_domains_item_request_builder.rb +138 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/trust_domains.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/trust_domains_request_builder.rb +118 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/webhooks/webhooks.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/environments/item/webhooks/webhooks_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/events/events.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/events/events_request_builder.rb +34 -0
- data/lib/bella_baxter/generated/api/v1/events/stream/stream.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/events/stream/stream_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/groups/groups.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/groups/groups_request_builder.rb +123 -0
- data/lib/bella_baxter/generated/api/v1/groups/item/groups_item_request_builder.rb +138 -0
- data/lib/bella_baxter/generated/api/v1/groups/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/groups/item/members/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/groups/item/members/item/with_user_item_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/groups/item/members/members.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/groups/item/members/members_request_builder.rb +119 -0
- data/lib/bella_baxter/generated/api/v1/keys/keys.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/keys/keys_request_builder.rb +34 -0
- data/lib/bella_baxter/generated/api/v1/keys/me/me.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/keys/me/me_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/notifications_item_request_builder.rb +115 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/test/test.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/test/test_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/toggle/toggle.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/toggle/toggle_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/update/update.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/notifications/item/update/update_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/notifications/notifications.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/notifications/notifications_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/import/import.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/import/import_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/environments.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/environments_request_builder.rb +122 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/copy/copy.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/copy/copy_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/groups.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/groups_request_builder.rb +125 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/item/with_group_item_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/lease_policy/lease_policy.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/lease_policy/lease_policy_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/item/with_lease_item_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/leases.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/leases_request_builder.rb +98 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/credentials.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/credentials_request_builder.rb +58 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/generate/generate.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/generate/generate_request_builder.rb +96 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/roles/roles.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/roles/roles_request_builder.rb +86 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/export/export.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/export/export_request_builder.rb +99 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/hash/hash.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/hash/hash_request_builder.rb +90 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/import.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/import_request_builder.rb +103 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/preview/preview.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/preview/preview_request_builder.rb +116 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/metadata/metadata.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/metadata/metadata_request_builder.rb +99 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rollback/rollback.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rollback/rollback_request_builder.rb +100 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rotation_policy/rotation_policy.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rotation_policy/rotation_policy_request_builder.rb +100 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/destroy/destroy.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/destroy/destroy_request_builder.rb +100 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/undelete/undelete.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/undelete/undelete_request_builder.rb +100 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/with_version_item_request_builder.rb +142 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/versions.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/versions_request_builder.rb +106 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/with_key_item_request_builder.rb +184 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/secrets.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/secrets_request_builder.rb +162 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/upload/upload.rb +1 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/upload/upload_post_request_body.rb +149 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/upload/upload_request_builder.rb +96 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/with_provider_slug_item_request_builder.rb +93 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/providers.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/providers_request_builder.rb +125 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/export/export.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/export/export_request_builder.rb +92 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/manifest/manifest.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/manifest/manifest_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/secrets.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/secrets_request_builder.rb +99 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/version/version.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/version/version_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ca_public_key/ca_public_key.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ca_public_key/ca_public_key_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/configure/configure.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/configure/configure_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/item/with_role_name_item_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/roles.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/roles_request_builder.rb +128 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/sign/sign.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/sign/sign_request_builder.rb +87 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ssh.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ssh_request_builder.rb +64 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/generate/generate.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/generate/generate_request_builder.rb +87 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/import/import.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/import/import_request_builder.rb +87 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/code/code.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/code/code_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/with_name_item_request_builder.rb +87 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/totp.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/totp_request_builder.rb +102 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/item/with_user_item_request_builder.rb +115 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/users.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/users_request_builder.rb +125 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/with_env_slug_item_request_builder.rb +192 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/export/export.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/export/export_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/global_secret_provider/global_secret_provider.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/global_secret_provider/global_secret_provider_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/groups/groups.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/groups/groups_request_builder.rb +119 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/groups/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/groups/item/with_group_item_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/item_request_builder.rb +198 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/notifications/notifications.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/notifications/notifications_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/providers/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/providers/item/with_provider_item_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/providers/providers.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/providers/providers_request_builder.rb +119 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/secret_drift/secret_drift.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/secret_drift/secret_drift_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/secrets/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/secrets/item/with_key_item_request_builder.rb +117 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/secrets/secrets.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/secrets/secrets_request_builder.rb +125 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/security/scan/scan.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/security/scan/scan_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/security/security.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/security/security_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/users/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/users/item/permissions/permissions.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/users/item/permissions/permissions_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/users/item/with_user_item_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/users/users.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/users/users_request_builder.rb +119 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/webhooks/webhooks.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/item/webhooks/webhooks_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/projects/projects.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/projects_request_builder.rb +159 -0
- data/lib/bella_baxter/generated/api/v1/projects/search/search.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/search/search_request_builder.rb +80 -0
- data/lib/bella_baxter/generated/api/v1/projects/tags/tags.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/projects/tags/tags_request_builder.rb +68 -0
- data/lib/bella_baxter/generated/api/v1/providers/catalog/catalog.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/catalog/catalog_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/providers/init_system/init_system.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/init_system/init_system_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/providers/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/item/with_provider_slug_item_request_builder.rb +133 -0
- data/lib/bella_baxter/generated/api/v1/providers/providers.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/providers_request_builder.rb +137 -0
- data/lib/bella_baxter/generated/api/v1/providers/regions/aws/aws.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/regions/aws/aws_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/providers/regions/regions.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/regions/regions_request_builder.rb +37 -0
- data/lib/bella_baxter/generated/api/v1/providers/search/search.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/providers/search/search_request_builder.rb +77 -0
- data/lib/bella_baxter/generated/api/v1/security/security.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/security/security_request_builder.rb +34 -0
- data/lib/bella_baxter/generated/api/v1/security/summary/summary.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/security/summary/summary_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/shares/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/shares/item/shares_item_request_builder.rb +104 -0
- data/lib/bella_baxter/generated/api/v1/shares/item/unlock/unlock.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/shares/item/unlock/unlock_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/shares/shares.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/shares/shares_request_builder.rb +113 -0
- data/lib/bella_baxter/generated/api/v1/ssh/logs/logs.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/ssh/logs/logs_request_builder.rb +109 -0
- data/lib/bella_baxter/generated/api/v1/ssh/ssh.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/ssh/ssh_request_builder.rb +34 -0
- data/lib/bella_baxter/generated/api/v1/system/health/health.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/system/health/health_request_builder.rb +37 -0
- data/lib/bella_baxter/generated/api/v1/system/health/rate_limit/rate_limit.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/system/health/rate_limit/rate_limit_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/system/rate_limit/rate_limit.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/system/rate_limit/rate_limit_request_builder.rb +37 -0
- data/lib/bella_baxter/generated/api/v1/system/rate_limit/status/status.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/system/rate_limit/status/status_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/system/system.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/system/system_request_builder.rb +40 -0
- data/lib/bella_baxter/generated/api/v1/tenant/billing/billing.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenant/billing/billing_request_builder.rb +37 -0
- data/lib/bella_baxter/generated/api/v1/tenant/billing/statements/statements.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenant/billing/statements/statements_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/tenant/tenant.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenant/tenant_request_builder.rb +40 -0
- data/lib/bella_baxter/generated/api/v1/tenant/usage/usage.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenant/usage/usage_request_builder.rb +69 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/me.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/me_request_builder.rb +37 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/enforce/enforce.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/enforce/enforce_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/oidc/oidc.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/oidc/oidc_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/request/request.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/request/request_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/saml/saml.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/saml/saml_request_builder.rb +81 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/sso.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/me/sso/sso_request_builder.rb +160 -0
- data/lib/bella_baxter/generated/api/v1/tenants/tenants.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/tenants/tenants_request_builder.rb +34 -0
- data/lib/bella_baxter/generated/api/v1/token/token.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/token/token_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/users/change_password/change_password.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/users/change_password/change_password_request_builder.rb +75 -0
- data/lib/bella_baxter/generated/api/v1/users/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/users/item/reactivate/reactivate.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/users/item/reactivate/reactivate_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/users/item/with_user_item_request_builder.rb +112 -0
- data/lib/bella_baxter/generated/api/v1/users/me/me.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/users/me/me_request_builder.rb +104 -0
- data/lib/bella_baxter/generated/api/v1/users/users.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/users/users_request_builder.rb +52 -0
- data/lib/bella_baxter/generated/api/v1/v1.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/v1_request_builder.rb +151 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/deactivate/deactivate.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/deactivate/deactivate_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/deliveries/deliveries.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/deliveries/deliveries_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/item.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/link_provider/link_provider.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/link_provider/link_provider_request_builder.rb +78 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/reactivate/reactivate.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/reactivate/reactivate_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/rotate_secret/rotate_secret.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/rotate_secret/rotate_secret_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/test/test.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/test/test_request_builder.rb +72 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/item/webhooks_item_request_builder.rb +167 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/webhooks.rb +0 -0
- data/lib/bella_baxter/generated/api/v1/webhooks/webhooks_request_builder.rb +84 -0
- data/lib/bella_baxter/generated/api/version/version.rb +0 -0
- data/lib/bella_baxter/generated/api/version/version_request_builder.rb +63 -0
- data/lib/bella_baxter/generated/bella_baxter/generated.rb +0 -0
- data/lib/bella_baxter/generated/bella_client.rb +37 -0
- data/lib/bella_baxter/generated/dead_letters/dead_letters.rb +0 -0
- data/lib/bella_baxter/generated/dead_letters/dead_letters_request_builder.rb +101 -0
- data/lib/bella_baxter/generated/dead_letters/replay/replay.rb +0 -0
- data/lib/bella_baxter/generated/dead_letters/replay/replay_request_builder.rb +65 -0
- data/lib/bella_baxter/generated/models/accept_invite_response.rb +162 -0
- data/lib/bella_baxter/generated/models/access_log_entry.rb +443 -0
- data/lib/bella_baxter/generated/models/access_log_page.rb +142 -0
- data/lib/bella_baxter/generated/models/activity_by_day.rb +103 -0
- data/lib/bella_baxter/generated/models/add_user_to_group_request.rb +82 -0
- data/lib/bella_baxter/generated/models/all_environment_secrets_response.rb +163 -0
- data/lib/bella_baxter/generated/models/all_environment_secrets_response_secrets.rb +62 -0
- data/lib/bella_baxter/generated/models/api_key_operation_response.rb +201 -0
- data/lib/bella_baxter/generated/models/api_key_operation_response_api_key_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/api_key_response.rb +383 -0
- data/lib/bella_baxter/generated/models/assign_group_to_environment_request.rb +102 -0
- data/lib/bella_baxter/generated/models/assign_group_to_project_request.rb +102 -0
- data/lib/bella_baxter/generated/models/assign_providers_command.rb +82 -0
- data/lib/bella_baxter/generated/models/assign_users_request.rb +102 -0
- data/lib/bella_baxter/generated/models/assign_users_to_environment_request.rb +82 -0
- data/lib/bella_baxter/generated/models/auth_config_response.rb +162 -0
- data/lib/bella_baxter/generated/models/auth_diagnostics.rb +202 -0
- data/lib/bella_baxter/generated/models/aws_region_response.rb +82 -0
- data/lib/bella_baxter/generated/models/billing_statement_response.rb +283 -0
- data/lib/bella_baxter/generated/models/change_password_request.rb +102 -0
- data/lib/bella_baxter/generated/models/change_password_response.rb +102 -0
- data/lib/bella_baxter/generated/models/change_role_command.rb +82 -0
- data/lib/bella_baxter/generated/models/change_tenant_plan_request.rb +82 -0
- data/lib/bella_baxter/generated/models/change_tenant_plan_response.rb +122 -0
- data/lib/bella_baxter/generated/models/claim_operator.rb +9 -0
- data/lib/bella_baxter/generated/models/claim_rule.rb +122 -0
- data/lib/bella_baxter/generated/models/command.rb +122 -0
- data/lib/bella_baxter/generated/models/configure_oidc_sso_request.rb +142 -0
- data/lib/bella_baxter/generated/models/configure_saml_sso_request.rb +102 -0
- data/lib/bella_baxter/generated/models/copy_environment_command.rb +142 -0
- data/lib/bella_baxter/generated/models/copy_environment_response.rb +142 -0
- data/lib/bella_baxter/generated/models/create_api_key_request.rb +142 -0
- data/lib/bella_baxter/generated/models/create_environment_command.rb +122 -0
- data/lib/bella_baxter/generated/models/create_group_command.rb +102 -0
- data/lib/bella_baxter/generated/models/create_invite_command.rb +122 -0
- data/lib/bella_baxter/generated/models/create_notification_channel_request.rb +182 -0
- data/lib/bella_baxter/generated/models/create_notification_channel_request_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/create_own_tenant_command.rb +102 -0
- data/lib/bella_baxter/generated/models/create_own_tenant_response.rb +142 -0
- data/lib/bella_baxter/generated/models/create_project_command.rb +122 -0
- data/lib/bella_baxter/generated/models/create_provider_command.rb +142 -0
- data/lib/bella_baxter/generated/models/create_provider_command_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/create_secret_request.rb +162 -0
- data/lib/bella_baxter/generated/models/create_secret_response.rb +122 -0
- data/lib/bella_baxter/generated/models/create_share_command.rb +203 -0
- data/lib/bella_baxter/generated/models/create_share_response.rb +163 -0
- data/lib/bella_baxter/generated/models/create_tenant_response.rb +142 -0
- data/lib/bella_baxter/generated/models/create_trust_domain_command.rb +182 -0
- data/lib/bella_baxter/generated/models/create_user_request.rb +162 -0
- data/lib/bella_baxter/generated/models/create_user_response.rb +201 -0
- data/lib/bella_baxter/generated/models/create_user_response_user_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/create_webhook_request.rb +162 -0
- data/lib/bella_baxter/generated/models/created_api_key_response.rb +183 -0
- data/lib/bella_baxter/generated/models/created_webhook_response.rb +182 -0
- data/lib/bella_baxter/generated/models/current_user_response.rb +223 -0
- data/lib/bella_baxter/generated/models/dashboard_count_pair.rb +102 -0
- data/lib/bella_baxter/generated/models/dashboard_response.rb +222 -0
- data/lib/bella_baxter/generated/models/dead_letter_envelope.rb +263 -0
- data/lib/bella_baxter/generated/models/dead_letter_envelope_get_request.rb +243 -0
- data/lib/bella_baxter/generated/models/dead_letter_envelope_ids_request.rb +102 -0
- data/lib/bella_baxter/generated/models/dead_letter_envelope_results.rb +142 -0
- data/lib/bella_baxter/generated/models/drift_item.rb +182 -0
- data/lib/bella_baxter/generated/models/drift_response.rb +122 -0
- data/lib/bella_baxter/generated/models/drift_summary.rb +142 -0
- data/lib/bella_baxter/generated/models/e2_e_encrypted_payload.rb +182 -0
- data/lib/bella_baxter/generated/models/envelope.rb +683 -0
- data/lib/bella_baxter/generated/models/envelope_headers.rb +62 -0
- data/lib/bella_baxter/generated/models/environment_drift_item.rb +202 -0
- data/lib/bella_baxter/generated/models/environment_drift_response.rb +142 -0
- data/lib/bella_baxter/generated/models/environment_drift_summary.rb +162 -0
- data/lib/bella_baxter/generated/models/environment_export_info.rb +142 -0
- data/lib/bella_baxter/generated/models/environment_operation_response.rb +224 -0
- data/lib/bella_baxter/generated/models/environment_operation_response_environment_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/environment_provider_response.rb +223 -0
- data/lib/bella_baxter/generated/models/environment_response.rb +343 -0
- data/lib/bella_baxter/generated/models/environment_risk_entry.rb +263 -0
- data/lib/bella_baxter/generated/models/environment_secrets_version_response.rb +123 -0
- data/lib/bella_baxter/generated/models/environment_security_report_response.rb +283 -0
- data/lib/bella_baxter/generated/models/environment_security_summary_entry.rb +263 -0
- data/lib/bella_baxter/generated/models/environment_user_response.rb +183 -0
- data/lib/bella_baxter/generated/models/exchange_oidc_token_by_slug_command.rb +122 -0
- data/lib/bella_baxter/generated/models/exchange_oidc_token_command.rb +82 -0
- data/lib/bella_baxter/generated/models/exchange_token_request.rb +102 -0
- data/lib/bella_baxter/generated/models/exchange_token_response.rb +122 -0
- data/lib/bella_baxter/generated/models/generate_credentials_command.rb +102 -0
- data/lib/bella_baxter/generated/models/generate_credentials_response.rb +183 -0
- data/lib/bella_baxter/generated/models/generate_totp_key_request.rb +122 -0
- data/lib/bella_baxter/generated/models/get_project_response.rb +343 -0
- data/lib/bella_baxter/generated/models/get_project_response_members.rb +62 -0
- data/lib/bella_baxter/generated/models/get_tenant_response.rb +203 -0
- data/lib/bella_baxter/generated/models/global_secret_item.rb +223 -0
- data/lib/bella_baxter/generated/models/global_secret_item_tags.rb +62 -0
- data/lib/bella_baxter/generated/models/group_assignment_response.rb +142 -0
- data/lib/bella_baxter/generated/models/group_member_response.rb +122 -0
- data/lib/bella_baxter/generated/models/group_operation_response.rb +201 -0
- data/lib/bella_baxter/generated/models/group_operation_response_group_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/group_response.rb +203 -0
- data/lib/bella_baxter/generated/models/handshake_response.rb +182 -0
- data/lib/bella_baxter/generated/models/i_result.rb +62 -0
- data/lib/bella_baxter/generated/models/import_failure.rb +102 -0
- data/lib/bella_baxter/generated/models/import_preview_response.rb +82 -0
- data/lib/bella_baxter/generated/models/import_secrets_request.rb +142 -0
- data/lib/bella_baxter/generated/models/import_secrets_request_type_overrides.rb +62 -0
- data/lib/bella_baxter/generated/models/import_secrets_response.rb +122 -0
- data/lib/bella_baxter/generated/models/import_totp_key_request.rb +102 -0
- data/lib/bella_baxter/generated/models/importable_secret.rb +144 -0
- data/lib/bella_baxter/generated/models/invite_list_response.rb +243 -0
- data/lib/bella_baxter/generated/models/invite_preview_response.rb +122 -0
- data/lib/bella_baxter/generated/models/invite_response.rb +183 -0
- data/lib/bella_baxter/generated/models/issue_environment_token_request.rb +122 -0
- data/lib/bella_baxter/generated/models/key_context_response.rb +282 -0
- data/lib/bella_baxter/generated/models/lease_policy_response.rb +122 -0
- data/lib/bella_baxter/generated/models/lease_response.rb +303 -0
- data/lib/bella_baxter/generated/models/link_provider_request.rb +122 -0
- data/lib/bella_baxter/generated/models/list_global_secrets_response.rb +142 -0
- data/lib/bella_baxter/generated/models/list_tenants_response.rb +183 -0
- data/lib/bella_baxter/generated/models/models.rb +225 -0
- data/lib/bella_baxter/generated/models/notification_channel_operation_response.rb +201 -0
- data/lib/bella_baxter/generated/models/notification_channel_operation_response_channel_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/notification_channel_response.rb +303 -0
- data/lib/bella_baxter/generated/models/notification_channel_response_public_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/oidc_token_response.rb +103 -0
- data/lib/bella_baxter/generated/models/operation_response.rb +102 -0
- data/lib/bella_baxter/generated/models/page_project_response.rb +282 -0
- data/lib/bella_baxter/generated/models/pageable_object.rb +182 -0
- data/lib/bella_baxter/generated/models/paged_response_of_group_response.rb +242 -0
- data/lib/bella_baxter/generated/models/problem_details.rb +164 -0
- data/lib/bella_baxter/generated/models/project_export_bundle.rb +163 -0
- data/lib/bella_baxter/generated/models/project_export_info.rb +122 -0
- data/lib/bella_baxter/generated/models/project_global_security_report.rb +283 -0
- data/lib/bella_baxter/generated/models/project_import_response.rb +202 -0
- data/lib/bella_baxter/generated/models/project_operation_response.rb +222 -0
- data/lib/bella_baxter/generated/models/project_operation_response_project_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/project_response.rb +363 -0
- data/lib/bella_baxter/generated/models/project_security_response.rb +201 -0
- data/lib/bella_baxter/generated/models/project_security_response_global_secrets_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/project_user_response.rb +203 -0
- data/lib/bella_baxter/generated/models/provider_catalog_item.rb +182 -0
- data/lib/bella_baxter/generated/models/provider_catalog_response.rb +122 -0
- data/lib/bella_baxter/generated/models/provider_export_info.rb +182 -0
- data/lib/bella_baxter/generated/models/provider_export_info_public_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/provider_operation_response.rb +201 -0
- data/lib/bella_baxter/generated/models/provider_operation_response_provider_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/provider_response.rb +303 -0
- data/lib/bella_baxter/generated/models/provider_response_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/region_info.rb +122 -0
- data/lib/bella_baxter/generated/models/request_sso_access_response.rb +102 -0
- data/lib/bella_baxter/generated/models/role_catalog_response.rb +102 -0
- data/lib/bella_baxter/generated/models/role_info.rb +122 -0
- data/lib/bella_baxter/generated/models/rollback_secret_request.rb +82 -0
- data/lib/bella_baxter/generated/models/secret_drift_summary_response.rb +122 -0
- data/lib/bella_baxter/generated/models/secret_manifest_item.rb +122 -0
- data/lib/bella_baxter/generated/models/secret_version_info.rb +163 -0
- data/lib/bella_baxter/generated/models/secret_versions_metadata.rb +142 -0
- data/lib/bella_baxter/generated/models/secrets_hash_response.rb +123 -0
- data/lib/bella_baxter/generated/models/secrets_manifest.rb +143 -0
- data/lib/bella_baxter/generated/models/security_insight.rb +182 -0
- data/lib/bella_baxter/generated/models/security_insight_response.rb +182 -0
- data/lib/bella_baxter/generated/models/security_insight_type.rb +14 -0
- data/lib/bella_baxter/generated/models/security_report_summary.rb +182 -0
- data/lib/bella_baxter/generated/models/security_risk_level.rb +11 -0
- data/lib/bella_baxter/generated/models/set_global_secret_provider_command.rb +82 -0
- data/lib/bella_baxter/generated/models/set_global_secret_provider_response.rb +122 -0
- data/lib/bella_baxter/generated/models/set_rotation_policy_request.rb +102 -0
- data/lib/bella_baxter/generated/models/share_content_response.rb +183 -0
- data/lib/bella_baxter/generated/models/share_list_item.rb +223 -0
- data/lib/bella_baxter/generated/models/share_meta_response.rb +223 -0
- data/lib/bella_baxter/generated/models/sort_object.rb +122 -0
- data/lib/bella_baxter/generated/models/ssh_ca_public_key_response.rb +142 -0
- data/lib/bella_baxter/generated/models/ssh_configure_response.rb +122 -0
- data/lib/bella_baxter/generated/models/ssh_create_role_request.rb +144 -0
- data/lib/bella_baxter/generated/models/ssh_log_entry.rb +483 -0
- data/lib/bella_baxter/generated/models/ssh_log_page.rb +142 -0
- data/lib/bella_baxter/generated/models/ssh_role_response.rb +142 -0
- data/lib/bella_baxter/generated/models/ssh_roles_response.rb +82 -0
- data/lib/bella_baxter/generated/models/ssh_sign_request.rb +142 -0
- data/lib/bella_baxter/generated/models/ssh_signed_cert_response.rb +142 -0
- data/lib/bella_baxter/generated/models/sso_config_response.rb +183 -0
- data/lib/bella_baxter/generated/models/sso_hint_response.rb +102 -0
- data/lib/bella_baxter/generated/models/sso_provider_type.rb +8 -0
- data/lib/bella_baxter/generated/models/sso_status_response.rb +222 -0
- data/lib/bella_baxter/generated/models/sso_status_response_config_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/switch_tenant_response.rb +142 -0
- data/lib/bella_baxter/generated/models/tenant_access.rb +182 -0
- data/lib/bella_baxter/generated/models/tenant_access_response.rb +102 -0
- data/lib/bella_baxter/generated/models/tenant_invite_role.rb +9 -0
- data/lib/bella_baxter/generated/models/tenant_role.rb +10 -0
- data/lib/bella_baxter/generated/models/tenant_security_summary_response.rb +282 -0
- data/lib/bella_baxter/generated/models/tenant_status.rb +9 -0
- data/lib/bella_baxter/generated/models/tenant_usage_response.rb +222 -0
- data/lib/bella_baxter/generated/models/tenant_user_response.rb +203 -0
- data/lib/bella_baxter/generated/models/toggle_sso_enforcement_request.rb +82 -0
- data/lib/bella_baxter/generated/models/toggle_sso_enforcement_response.rb +102 -0
- data/lib/bella_baxter/generated/models/totp_code_response.rb +122 -0
- data/lib/bella_baxter/generated/models/totp_delete_response.rb +102 -0
- data/lib/bella_baxter/generated/models/totp_key_import_response.rb +162 -0
- data/lib/bella_baxter/generated/models/totp_key_list_item.rb +182 -0
- data/lib/bella_baxter/generated/models/trust_domain_response.rb +283 -0
- data/lib/bella_baxter/generated/models/unlock_share_command.rb +82 -0
- data/lib/bella_baxter/generated/models/update_api_key_request.rb +143 -0
- data/lib/bella_baxter/generated/models/update_api_key_status_request.rb +82 -0
- data/lib/bella_baxter/generated/models/update_current_user_request.rb +102 -0
- data/lib/bella_baxter/generated/models/update_environment_command.rb +102 -0
- data/lib/bella_baxter/generated/models/update_environment_user_role_request.rb +82 -0
- data/lib/bella_baxter/generated/models/update_group_command.rb +102 -0
- data/lib/bella_baxter/generated/models/update_lease_policy_command.rb +122 -0
- data/lib/bella_baxter/generated/models/update_notification_channel_request.rb +122 -0
- data/lib/bella_baxter/generated/models/update_notification_channel_request_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/update_project_request.rb +122 -0
- data/lib/bella_baxter/generated/models/update_provider_command.rb +122 -0
- data/lib/bella_baxter/generated/models/update_provider_command_configuration.rb +62 -0
- data/lib/bella_baxter/generated/models/update_secret_metadata_request.rb +142 -0
- data/lib/bella_baxter/generated/models/update_secret_metadata_request_tags.rb +62 -0
- data/lib/bella_baxter/generated/models/update_secret_request.rb +162 -0
- data/lib/bella_baxter/generated/models/update_secret_response.rb +122 -0
- data/lib/bella_baxter/generated/models/update_sso_config_request.rb +142 -0
- data/lib/bella_baxter/generated/models/update_trust_domain_command.rb +202 -0
- data/lib/bella_baxter/generated/models/update_user_permissions_request.rb +82 -0
- data/lib/bella_baxter/generated/models/update_webhook_request.rb +122 -0
- data/lib/bella_baxter/generated/models/upload_failure.rb +102 -0
- data/lib/bella_baxter/generated/models/upload_secrets_file_response.rb +122 -0
- data/lib/bella_baxter/generated/models/user_response.rb +223 -0
- data/lib/bella_baxter/generated/models/user_role_assignment.rb +102 -0
- data/lib/bella_baxter/generated/models/webhook_operation_response.rb +201 -0
- data/lib/bella_baxter/generated/models/webhook_operation_response_webhook_member1.rb +62 -0
- data/lib/bella_baxter/generated/models/webhook_response.rb +363 -0
- data/lib/bella_baxter/hmac_auth_provider.rb +56 -0
- data/lib/bella_baxter/models.rb +46 -0
- data/lib/bella_baxter/railtie.rb +44 -0
- data/lib/bella_baxter/version.rb +5 -0
- data/lib/bella_baxter/webhook_signature.rb +59 -0
- data/lib/bella_baxter.rb +81 -0
- metadata +756 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: cb3fc52da6617b4a90c7911111de5ee39a744bbaf008cef00a383aecd107fca6
|
|
4
|
+
data.tar.gz: fea83d2310a8526ca41cf8a0964662d8b3a5f0fa2331031fb4c5e7d6048052db
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 354fa643232c8793947217234dc6f2eba3d9604016f1efdcb7e24b5da158dc5320adc55d8f1fc4f140d7f355a9aa40785f2366caa3a0baeb54fcfbfd2ad33b65
|
|
7
|
+
data.tar.gz: 40789fc9d388d71ffbf6be69dfd322078be025573fd7d24ecec809e8b1ac7697a226ff6e574ee07a158fbb9b657ff67e0dd79f61c64136cb74baff4dc6eb0ac2
|
data/README.md
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# bella_baxter Ruby SDK
|
|
2
|
+
|
|
3
|
+
Ruby client for [Bella Baxter](https://github.com/cosmic-chimps/bella-baxter) — load secrets into your Ruby or Rails application with zero runtime dependencies.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Zero runtime dependencies** — uses only Ruby's stdlib (`openssl`, `net/http`, `json`)
|
|
8
|
+
- **Rails Railtie** — auto-loads secrets before `database.yml` is evaluated
|
|
9
|
+
- **End-to-end encryption** — optional E2EE using ECDH-P256-HKDF-SHA256-AES256GCM (stdlib OpenSSL)
|
|
10
|
+
- **Thread-safe** — singleton client, mutex-protected HTTP
|
|
11
|
+
- **ENV injection** — `load_into_env!` respects existing values (local dev overrides work)
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
# Gemfile
|
|
17
|
+
gem "bella_baxter"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
bundle install
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quick start
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
require "bella_baxter"
|
|
28
|
+
|
|
29
|
+
client = BellaBaxter::Client.new(
|
|
30
|
+
baxter_url: "https://baxter.example.com",
|
|
31
|
+
api_key: "bax-...",
|
|
32
|
+
project: "my-app",
|
|
33
|
+
environment: "production"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
secrets = client.all_secrets.secrets
|
|
37
|
+
puts secrets["DATABASE_URL"]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Rails integration
|
|
41
|
+
|
|
42
|
+
Add the gem to your Gemfile. That's all.
|
|
43
|
+
|
|
44
|
+
The gem ships a **Railtie** that injects all secrets into `ENV` during Rails' `before_configuration` hook — before `database.yml` is parsed, before any initializers run.
|
|
45
|
+
|
|
46
|
+
**Environment variables to set on your host** (the only secrets you need there):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
BELLA_BAXTER_URL=https://baxter.example.com
|
|
50
|
+
BELLA_API_KEY=bax-...
|
|
51
|
+
BELLA_PROJECT=my-app
|
|
52
|
+
# BELLA_ENV defaults to Rails.env
|
|
53
|
+
# BELLA_E2EE=true to enable end-to-end encryption
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**database.yml** — nothing secret lives here:
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
production:
|
|
60
|
+
adapter: postgresql
|
|
61
|
+
url: <%= ENV.fetch("DATABASE_URL") %>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`DATABASE_URL` is injected by Bella Baxter before Rails reads this file.
|
|
65
|
+
|
|
66
|
+
### Boot order
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
1. Gemfile loaded → Railtie registered
|
|
70
|
+
2. config/application.rb starts
|
|
71
|
+
3. [before_configuration] ← Bella Baxter injects ENV here
|
|
72
|
+
4. database.yml evaluated ← ENV["DATABASE_URL"] available ✓
|
|
73
|
+
5. config/initializers/
|
|
74
|
+
6. App boots
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## ENV injection
|
|
78
|
+
|
|
79
|
+
```ruby
|
|
80
|
+
# Inject into ENV (existing values are NOT overwritten — local dev wins)
|
|
81
|
+
count = BellaBaxter.load_into_env!
|
|
82
|
+
puts "Loaded #{count} secrets"
|
|
83
|
+
|
|
84
|
+
# Force overwrite (e.g. secret rotation without restart)
|
|
85
|
+
BellaBaxter.load_into_env!(overwrite: true)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## End-to-end encryption
|
|
89
|
+
|
|
90
|
+
```ruby
|
|
91
|
+
client = BellaBaxter::Client.new(
|
|
92
|
+
baxter_url: "https://baxter.example.com",
|
|
93
|
+
api_key: "bax-...",
|
|
94
|
+
project: "my-app",
|
|
95
|
+
environment: "production",
|
|
96
|
+
enable_e2ee: true # Client generates P-256 keypair; server encrypts the response
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
# Decryption is transparent — same API
|
|
100
|
+
secrets = client.all_secrets.secrets
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Algorithm: `ECDH-P256 → HKDF-SHA256 → AES-256-GCM`. All operations use Ruby's built-in `openssl` — no extra gems required.
|
|
104
|
+
|
|
105
|
+
## Write operations
|
|
106
|
+
|
|
107
|
+
```ruby
|
|
108
|
+
# Create
|
|
109
|
+
client.create_secret(
|
|
110
|
+
provider: "my-vault", # provider slug
|
|
111
|
+
key: "DATABASE_URL",
|
|
112
|
+
value: "postgres://...",
|
|
113
|
+
description: "Primary database"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# Update
|
|
117
|
+
client.update_secret(
|
|
118
|
+
provider: "my-vault",
|
|
119
|
+
key: "DATABASE_URL",
|
|
120
|
+
value: "postgres://new-host/..."
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
# Delete
|
|
124
|
+
client.delete_secret(provider: "my-vault", key: "DATABASE_URL")
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Lightweight version check
|
|
128
|
+
|
|
129
|
+
Avoid transferring all secret values just to check if anything changed:
|
|
130
|
+
|
|
131
|
+
```ruby
|
|
132
|
+
v = client.secrets_version
|
|
133
|
+
puts "Version #{v.version}, last changed #{v.last_modified}"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Global configuration (optional)
|
|
137
|
+
|
|
138
|
+
```ruby
|
|
139
|
+
# config/initializers/bella_baxter.rb
|
|
140
|
+
BellaBaxter.configure do |c|
|
|
141
|
+
c.baxter_url = ENV["BELLA_BAXTER_URL"]
|
|
142
|
+
c.api_key = ENV["BELLA_API_KEY"]
|
|
143
|
+
c.project = "my-app"
|
|
144
|
+
c.environment = Rails.env
|
|
145
|
+
c.enable_e2ee = Rails.env.production?
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Access the singleton client anywhere
|
|
149
|
+
BellaBaxter.client.all_secrets
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Samples
|
|
153
|
+
|
|
154
|
+
| Sample | Description |
|
|
155
|
+
|--------|-------------|
|
|
156
|
+
| [`samples/01-standalone/`](samples/01-standalone/) | Pure Ruby script — all usage patterns |
|
|
157
|
+
| [`samples/02-rails/`](samples/02-rails/) | Rails integration with `database.yml` example |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Typed Secret Code Generation
|
|
162
|
+
|
|
163
|
+
`bella secrets generate ruby` fetches the secrets manifest (key names + type hints, no values) from the Bella API and generates a typed `AppSecrets` module. Each method calls `ENV.fetch` at runtime — no secret values are ever embedded in the generated file.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
bella secrets generate ruby \
|
|
167
|
+
--project my-app \
|
|
168
|
+
--environment production \
|
|
169
|
+
--output app_secrets.rb
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Generated `app_secrets.rb`:**
|
|
173
|
+
|
|
174
|
+
```ruby
|
|
175
|
+
# Auto-generated by bella secrets generate ruby — do not edit manually.
|
|
176
|
+
|
|
177
|
+
module AppSecrets
|
|
178
|
+
def self.database_url
|
|
179
|
+
ENV.fetch('DATABASE_URL') { raise "Secret 'DATABASE_URL' is not set." }
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def self.port
|
|
183
|
+
ENV.fetch('PORT') { raise "Secret 'PORT' is not set." }.to_i
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def self.enable_feature_x
|
|
187
|
+
v = ENV.fetch('ENABLE_FEATURE_X') { raise "Secret 'ENABLE_FEATURE_X' is not set." }
|
|
188
|
+
%w[1 true yes].include?(v.downcase)
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Usage alongside the Ruby SDK
|
|
194
|
+
|
|
195
|
+
```ruby
|
|
196
|
+
# The Railtie or BellaBaxter.load_into_env! has already populated ENV.
|
|
197
|
+
require_relative "app_secrets"
|
|
198
|
+
|
|
199
|
+
db_url = AppSecrets.database_url # String — raises if missing
|
|
200
|
+
port = AppSecrets.port # Integer — parsed automatically
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Because each method calls `ENV.fetch` on every invocation (not memoized), secrets injected or refreshed at any point are always current.
|
|
204
|
+
|
|
205
|
+
### Options
|
|
206
|
+
|
|
207
|
+
| Option | Default | Description |
|
|
208
|
+
|--------|---------|-------------|
|
|
209
|
+
| `-p, --project <slug>` | `.bella` context | Project slug |
|
|
210
|
+
| `-e, --environment <slug>` | `.bella` context | Environment slug |
|
|
211
|
+
| `--provider <slug>` | `default` | Provider slug |
|
|
212
|
+
| `-o, --output <path>` | `app_secrets.rb` | Output file path |
|
|
213
|
+
| `--class-name <name>` | `AppSecrets` | Module name |
|
|
214
|
+
| `--dry-run` | — | Print to stdout without writing |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Requirements
|
|
219
|
+
|
|
220
|
+
- Ruby >= 2.7
|
|
221
|
+
- No runtime gem dependencies
|
|
222
|
+
|
|
223
|
+
## License
|
|
224
|
+
|
|
225
|
+
[Elastic License 2.0 (ELv2)](https://www.elastic.co/licensing/elastic-license)
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "json"
|
|
4
|
+
require "openssl"
|
|
5
|
+
require "digest"
|
|
6
|
+
require "time"
|
|
7
|
+
require "microsoft_kiota_faraday"
|
|
8
|
+
require_relative "hmac_auth_provider"
|
|
9
|
+
require_relative "e2ee_faraday_middleware"
|
|
10
|
+
require_relative "models"
|
|
11
|
+
require_relative "errors"
|
|
12
|
+
require_relative "e2ee"
|
|
13
|
+
|
|
14
|
+
# require generated Kiota client (generated by apps/sdk/generate.sh)
|
|
15
|
+
begin
|
|
16
|
+
require_relative "generated/bella_client"
|
|
17
|
+
rescue LoadError
|
|
18
|
+
# generated/ not present — run apps/sdk/generate.sh to generate the Kiota client
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
module BellaBaxter
|
|
22
|
+
# Thread-safe Bella Baxter API client backed by the Kiota-generated BellaClient.
|
|
23
|
+
#
|
|
24
|
+
# Instantiate once and reuse across requests (e.g. in a Rails initializer).
|
|
25
|
+
# End-to-end encryption is always enabled — secret values are never visible
|
|
26
|
+
# in plaintext over the wire.
|
|
27
|
+
#
|
|
28
|
+
# == Basic usage
|
|
29
|
+
#
|
|
30
|
+
# client = BellaBaxter::Client.new(
|
|
31
|
+
# baxter_url: "https://baxter.example.com",
|
|
32
|
+
# api_key: "bax-..."
|
|
33
|
+
# )
|
|
34
|
+
# secrets = client.all_secrets.secrets
|
|
35
|
+
# ENV["DATABASE_URL"] = secrets["DATABASE_URL"]
|
|
36
|
+
#
|
|
37
|
+
# Prerequisites: run `apps/sdk/generate.sh` to generate `lib/bella_baxter/generated/` first.
|
|
38
|
+
class Client
|
|
39
|
+
# Convenience constructor — reads BELLA_API_KEY and BELLA_BAXTER_URL from ENV.
|
|
40
|
+
#
|
|
41
|
+
# @return [BellaBaxter::Client]
|
|
42
|
+
def self.from_env
|
|
43
|
+
new(
|
|
44
|
+
baxter_url: ENV.fetch("BELLA_BAXTER_URL", "https://api.bella-baxter.io"),
|
|
45
|
+
api_key: ENV.fetch("BELLA_API_KEY")
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @param opts [Hash, BellaBaxter::Configuration]
|
|
50
|
+
def initialize(**opts)
|
|
51
|
+
config = opts.size == 1 && opts.key?(:config) ? opts[:config] : Configuration.new(**opts)
|
|
52
|
+
|
|
53
|
+
auth = HmacAuthProvider.new(config.api_key)
|
|
54
|
+
|
|
55
|
+
@conn = Faraday.new(url: config.baxter_url.chomp("/")) do |f|
|
|
56
|
+
f.headers["User-Agent"] = "bella-ruby-sdk/1.0"
|
|
57
|
+
f.headers["X-Bella-Client"] = "bella-ruby-sdk"
|
|
58
|
+
f.use E2EEFaradayMiddleware
|
|
59
|
+
f.adapter :net_http
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
adapter = MicrosoftKiotaFaraday::FaradayRequestAdapter.new(auth, nil, nil, @conn)
|
|
63
|
+
adapter.set_base_url(config.baxter_url.chomp("/"))
|
|
64
|
+
|
|
65
|
+
@kiota = BellaBaxterGenerated::BellaClient.new(adapter)
|
|
66
|
+
@config = config
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# ── Key context (auto-discovery) ────────────────────────────────────────────
|
|
70
|
+
|
|
71
|
+
# Calls GET /api/v1/keys/me to discover the project + environment this key
|
|
72
|
+
# is scoped to. Result is cached for the lifetime of the client instance.
|
|
73
|
+
#
|
|
74
|
+
# @return [Hash] parsed JSON response with 'projectSlug', 'environmentSlug', etc.
|
|
75
|
+
def key_context
|
|
76
|
+
@key_context ||= begin
|
|
77
|
+
parts = @config.api_key.split("-", 3)
|
|
78
|
+
key_id = parts[1]
|
|
79
|
+
secret = [parts[2]].pack("H*")
|
|
80
|
+
path = "/api/v1/keys/me"
|
|
81
|
+
timestamp = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
82
|
+
body_hash = Digest::SHA256.hexdigest("")
|
|
83
|
+
sts = "GET\n#{path}\n\n#{timestamp}\n#{body_hash}"
|
|
84
|
+
signature = OpenSSL::HMAC.hexdigest("SHA256", secret, sts)
|
|
85
|
+
|
|
86
|
+
resp = @conn.get(path) do |req|
|
|
87
|
+
req.headers["Accept"] = "application/json"
|
|
88
|
+
req.headers["X-Bella-Key-Id"] = key_id
|
|
89
|
+
req.headers["X-Bella-Timestamp"] = timestamp
|
|
90
|
+
req.headers["X-Bella-Signature"] = signature
|
|
91
|
+
end
|
|
92
|
+
JSON.parse(resp.body)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# ── Secret reads ────────────────────────────────────────────────────────────
|
|
97
|
+
|
|
98
|
+
# Fetch all secrets. Project and environment are auto-discovered from the API key.
|
|
99
|
+
# Can be overridden via keyword args for advanced use cases.
|
|
100
|
+
#
|
|
101
|
+
# @return [BellaBaxter::AllSecretsResponse]
|
|
102
|
+
def all_secrets(project: nil, environment: nil)
|
|
103
|
+
ctx = key_context
|
|
104
|
+
project ||= ctx["projectSlug"]
|
|
105
|
+
environment ||= ctx["environmentSlug"]
|
|
106
|
+
|
|
107
|
+
resp = @kiota.api.v1.projects.by_id(project)
|
|
108
|
+
.environments.by_env_slug(environment).secrets.get.resume
|
|
109
|
+
|
|
110
|
+
secrets = resp&.secrets&.additional_data || {}
|
|
111
|
+
|
|
112
|
+
AllSecretsResponse.new(
|
|
113
|
+
environment_slug: resp&.environment_slug || environment,
|
|
114
|
+
environment_name: resp&.environment_name || "",
|
|
115
|
+
secrets: secrets.transform_values(&:to_s),
|
|
116
|
+
version: resp&.version || 0,
|
|
117
|
+
last_modified: resp&.last_modified&.to_s || ""
|
|
118
|
+
)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Convenience: fetch all secrets and return them as a plain Hash.
|
|
122
|
+
#
|
|
123
|
+
# @return [Hash<String, String>]
|
|
124
|
+
def pull_secrets(project: nil, environment: nil)
|
|
125
|
+
all_secrets(project: project, environment: environment).secrets
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Lightweight version check. Project/environment auto-discovered from the API key.
|
|
129
|
+
#
|
|
130
|
+
# @return [BellaBaxter::SecretsVersionResponse]
|
|
131
|
+
def secrets_version(project: nil, environment: nil)
|
|
132
|
+
ctx = key_context
|
|
133
|
+
project ||= ctx["projectSlug"]
|
|
134
|
+
environment ||= ctx["environmentSlug"]
|
|
135
|
+
|
|
136
|
+
resp = @kiota.api.v1.projects.by_id(project)
|
|
137
|
+
.environments.by_env_slug(environment).secrets.version.get.resume
|
|
138
|
+
|
|
139
|
+
SecretsVersionResponse.new(
|
|
140
|
+
environment_slug: resp&.environment_slug || environment,
|
|
141
|
+
version: resp&.version || 0,
|
|
142
|
+
last_modified: resp&.last_modified&.to_s || ""
|
|
143
|
+
)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Convenience: load all secrets into ENV.
|
|
147
|
+
#
|
|
148
|
+
# Secrets that are already set in ENV are NOT overwritten (existing
|
|
149
|
+
# environment variables take precedence — useful for local dev overrides).
|
|
150
|
+
#
|
|
151
|
+
# @param overwrite [Boolean] force-overwrite existing ENV values (default: false)
|
|
152
|
+
# @return [Integer] number of secrets injected
|
|
153
|
+
def load_into_env!(project: nil, environment: nil, overwrite: false)
|
|
154
|
+
resp = all_secrets(project: project, environment: environment)
|
|
155
|
+
count = 0
|
|
156
|
+
resp.secrets.each do |key, value|
|
|
157
|
+
next if !overwrite && ENV.key?(key)
|
|
158
|
+
ENV[key] = value
|
|
159
|
+
count += 1
|
|
160
|
+
end
|
|
161
|
+
count
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Access the full Kiota API navigator for all other endpoints
|
|
165
|
+
# (TOTP, projects, providers, environments, etc.).
|
|
166
|
+
#
|
|
167
|
+
# Example:
|
|
168
|
+
# client.client.api.v1.projects.by_id("my-app")
|
|
169
|
+
# .environments.by_env_slug("prod").totp.get
|
|
170
|
+
def client
|
|
171
|
+
@kiota
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openssl"
|
|
4
|
+
require "base64"
|
|
5
|
+
require "json"
|
|
6
|
+
|
|
7
|
+
module BellaBaxter
|
|
8
|
+
# End-to-end encryption using ECDH-P256-HKDF-SHA256-AES256GCM.
|
|
9
|
+
#
|
|
10
|
+
# The client generates a P-256 keypair on initialization and sends
|
|
11
|
+
# +X-E2E-Public-Key+ with every secrets request. The server encrypts
|
|
12
|
+
# the response payload; this class transparently decrypts it.
|
|
13
|
+
#
|
|
14
|
+
# No extra gems required — uses Ruby's built-in +openssl+ stdlib.
|
|
15
|
+
module E2EE
|
|
16
|
+
class KeyPair
|
|
17
|
+
# Base64-encoded DER/SPKI public key to send as X-E2E-Public-Key header.
|
|
18
|
+
attr_reader :public_key_b64
|
|
19
|
+
|
|
20
|
+
def initialize
|
|
21
|
+
@ec = OpenSSL::PKey::EC.generate("prime256v1")
|
|
22
|
+
|
|
23
|
+
# Export public key in SubjectPublicKeyInfo (SPKI/DER) format — what the server expects.
|
|
24
|
+
# public_to_der is available in Ruby 3.0+ (openssl gem 3.x) via OpenSSL::PKey::PKey.
|
|
25
|
+
@public_key_b64 = Base64.strict_encode64(@ec.public_to_der)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Decrypt a response payload.
|
|
29
|
+
#
|
|
30
|
+
# @param payload [Hash] Parsed JSON with keys:
|
|
31
|
+
# encrypted, algorithm, serverPublicKey, nonce, tag, ciphertext
|
|
32
|
+
# @return [Hash] Decrypted secrets hash
|
|
33
|
+
# @raise [BellaBaxter::DecryptionError]
|
|
34
|
+
def decrypt(payload)
|
|
35
|
+
return payload unless payload["encrypted"] == true
|
|
36
|
+
|
|
37
|
+
server_key_der = Base64.strict_decode64(payload["serverPublicKey"])
|
|
38
|
+
nonce = Base64.strict_decode64(payload["nonce"])
|
|
39
|
+
tag = Base64.strict_decode64(payload["tag"])
|
|
40
|
+
ciphertext = Base64.strict_decode64(payload["ciphertext"])
|
|
41
|
+
|
|
42
|
+
# Load server public key from SPKI DER and compute ECDH shared secret.
|
|
43
|
+
# OpenSSL::PKey.read handles SPKI DER for all key types (Ruby 4.0 / openssl gem 4.x).
|
|
44
|
+
server_key = OpenSSL::PKey.read(server_key_der)
|
|
45
|
+
shared_secret = @ec.derive(server_key)
|
|
46
|
+
|
|
47
|
+
# HKDF-SHA256: extract + expand to 32-byte AES key.
|
|
48
|
+
key = hkdf_sha256(shared_secret, 32)
|
|
49
|
+
|
|
50
|
+
# AES-256-GCM decrypt.
|
|
51
|
+
cipher = OpenSSL::Cipher.new("aes-256-gcm")
|
|
52
|
+
cipher.decrypt
|
|
53
|
+
cipher.key = key
|
|
54
|
+
cipher.iv = nonce
|
|
55
|
+
cipher.auth_tag = tag
|
|
56
|
+
cipher.auth_data = ""
|
|
57
|
+
|
|
58
|
+
plaintext = cipher.update(ciphertext) + cipher.final
|
|
59
|
+
parsed = JSON.parse(plaintext)
|
|
60
|
+
|
|
61
|
+
# Three possible server response shapes:
|
|
62
|
+
# 1. Full AllEnvironmentSecretsResponse: {"environmentSlug":..., "secrets":{...}, ...}
|
|
63
|
+
# 2. Array of SecretItem: [{"key":"K","value":"V"}, ...]
|
|
64
|
+
# 3. Legacy flat dict: {"K":"V", ...}
|
|
65
|
+
if parsed.is_a?(Hash) && parsed.key?("secrets") && parsed["secrets"].is_a?(Hash)
|
|
66
|
+
parsed["secrets"].transform_values(&:to_s)
|
|
67
|
+
elsif parsed.is_a?(Array)
|
|
68
|
+
parsed.each_with_object({}) do |item, h|
|
|
69
|
+
h[item["key"]] = item.fetch("value", "").to_s if item["key"]
|
|
70
|
+
end
|
|
71
|
+
else
|
|
72
|
+
parsed
|
|
73
|
+
end
|
|
74
|
+
rescue OpenSSL::Cipher::CipherError => e
|
|
75
|
+
raise BellaBaxter::DecryptionError, "AES-GCM decryption failed: #{e.message}"
|
|
76
|
+
rescue JSON::ParserError => e
|
|
77
|
+
raise BellaBaxter::DecryptionError, "Decrypted payload is not valid JSON: #{e.message}"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Decrypt a response payload, returning the raw parsed JSON without transformation.
|
|
81
|
+
#
|
|
82
|
+
# Unlike +decrypt+, this preserves the full server response shape (including
|
|
83
|
+
# +environmentSlug+, +version+, +lastModified+, etc.).
|
|
84
|
+
#
|
|
85
|
+
# @param payload [Hash] Parsed JSON encrypted payload.
|
|
86
|
+
# @return [Hash] Full decrypted + parsed JSON hash.
|
|
87
|
+
# @raise [BellaBaxter::DecryptionError]
|
|
88
|
+
def decrypt_raw(payload)
|
|
89
|
+
return payload unless payload["encrypted"] == true
|
|
90
|
+
|
|
91
|
+
server_key_der = Base64.strict_decode64(payload["serverPublicKey"])
|
|
92
|
+
nonce = Base64.strict_decode64(payload["nonce"])
|
|
93
|
+
tag = Base64.strict_decode64(payload["tag"])
|
|
94
|
+
ciphertext = Base64.strict_decode64(payload["ciphertext"])
|
|
95
|
+
|
|
96
|
+
server_key = OpenSSL::PKey.read(server_key_der)
|
|
97
|
+
shared_secret = @ec.derive(server_key)
|
|
98
|
+
key = hkdf_sha256(shared_secret, 32)
|
|
99
|
+
|
|
100
|
+
cipher = OpenSSL::Cipher.new("aes-256-gcm")
|
|
101
|
+
cipher.decrypt
|
|
102
|
+
cipher.key = key
|
|
103
|
+
cipher.iv = nonce
|
|
104
|
+
cipher.auth_tag = tag
|
|
105
|
+
cipher.auth_data = ""
|
|
106
|
+
|
|
107
|
+
plaintext = cipher.update(ciphertext) + cipher.final
|
|
108
|
+
JSON.parse(plaintext)
|
|
109
|
+
rescue OpenSSL::Cipher::CipherError => e
|
|
110
|
+
raise BellaBaxter::DecryptionError, "AES-GCM decryption failed: #{e.message}"
|
|
111
|
+
rescue JSON::ParserError => e
|
|
112
|
+
raise BellaBaxter::DecryptionError, "Decrypted payload is not valid JSON: #{e.message}"
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
private
|
|
116
|
+
|
|
117
|
+
# HKDF (RFC 5869) using HMAC-SHA256. Salt is 32 zero bytes (matches server).
|
|
118
|
+
def hkdf_sha256(ikm, length)
|
|
119
|
+
salt = "\x00" * 32
|
|
120
|
+
info = "bella-e2ee-v1"
|
|
121
|
+
prk = OpenSSL::HMAC.digest("SHA256", salt, ikm)
|
|
122
|
+
|
|
123
|
+
t = "".b
|
|
124
|
+
okm = "".b
|
|
125
|
+
n = (length.to_f / 32).ceil
|
|
126
|
+
|
|
127
|
+
n.times do |i|
|
|
128
|
+
t = OpenSSL::HMAC.digest("SHA256", prk, t + info + (i + 1).chr)
|
|
129
|
+
okm += t
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
okm[0, length]
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "faraday"
|
|
4
|
+
require "json"
|
|
5
|
+
|
|
6
|
+
module BellaBaxter
|
|
7
|
+
# Faraday middleware that transparently adds E2EE to GET /secrets requests.
|
|
8
|
+
#
|
|
9
|
+
# On outbound: adds X-E2E-Public-Key header so the server encrypts the response.
|
|
10
|
+
# On inbound: decrypts the encrypted payload and reconstructs a normal secrets response.
|
|
11
|
+
class E2EEFaradayMiddleware < Faraday::Middleware
|
|
12
|
+
def initialize(app)
|
|
13
|
+
super
|
|
14
|
+
@e2ee = E2EE::KeyPair.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def call(env)
|
|
18
|
+
is_secrets_get = env.method == :get && env.url.path.end_with?("/secrets")
|
|
19
|
+
|
|
20
|
+
if is_secrets_get
|
|
21
|
+
env.request_headers["X-E2E-Public-Key"] = @e2ee.public_key_b64
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
@app.call(env).on_complete do |resp_env|
|
|
25
|
+
next unless is_secrets_get && resp_env.status == 200
|
|
26
|
+
|
|
27
|
+
data = JSON.parse(resp_env.body)
|
|
28
|
+
next unless data["encrypted"]
|
|
29
|
+
|
|
30
|
+
decrypted = @e2ee.decrypt_raw(data)
|
|
31
|
+
if decrypted.is_a?(Hash) && decrypted.key?("secrets") && decrypted["secrets"].is_a?(Hash)
|
|
32
|
+
resp_env[:body] = JSON.generate(decrypted)
|
|
33
|
+
else
|
|
34
|
+
secrets = @e2ee.decrypt(data)
|
|
35
|
+
resp_env[:body] = JSON.generate(
|
|
36
|
+
"secrets" => secrets,
|
|
37
|
+
"version" => 0,
|
|
38
|
+
"environmentSlug" => "",
|
|
39
|
+
"environmentName" => "",
|
|
40
|
+
"lastModified" => ""
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BellaBaxter
|
|
4
|
+
class Error < StandardError; end
|
|
5
|
+
|
|
6
|
+
# Raised when the API key format is invalid (must be bax-{keyId}-{signingSecret}).
|
|
7
|
+
class InvalidApiKeyError < Error; end
|
|
8
|
+
|
|
9
|
+
# Raised when the server returns a non-2xx response.
|
|
10
|
+
class ApiError < Error
|
|
11
|
+
attr_reader :status, :body
|
|
12
|
+
|
|
13
|
+
def initialize(status, body)
|
|
14
|
+
@status = status
|
|
15
|
+
@body = body
|
|
16
|
+
super("Bella Baxter API error #{status}: #{body}")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Raised when E2EE decryption fails.
|
|
21
|
+
class DecryptionError < Error; end
|
|
22
|
+
|
|
23
|
+
# Raised when required configuration is missing.
|
|
24
|
+
class ConfigurationError < Error; end
|
|
25
|
+
|
|
26
|
+
# Raised when webhook signature verification fails due to a malformed header
|
|
27
|
+
# or a timestamp that exceeds the tolerance window.
|
|
28
|
+
class WebhookSignatureError < Error; end
|
|
29
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'microsoft_kiota_abstractions'
|
|
2
|
+
require_relative '../bella_baxter/generated'
|
|
3
|
+
require_relative './api'
|
|
4
|
+
require_relative './diagnostics/diagnostics_request_builder'
|
|
5
|
+
require_relative './tenants/tenants_request_builder'
|
|
6
|
+
require_relative './users/users_request_builder'
|
|
7
|
+
require_relative './v1/v1_request_builder'
|
|
8
|
+
require_relative './version/version_request_builder'
|
|
9
|
+
|
|
10
|
+
module Bella_baxter/generated
|
|
11
|
+
module Api
|
|
12
|
+
##
|
|
13
|
+
# Builds and executes requests for operations under \api
|
|
14
|
+
class ApiRequestBuilder < MicrosoftKiotaAbstractions::BaseRequestBuilder
|
|
15
|
+
|
|
16
|
+
##
|
|
17
|
+
# The diagnostics property
|
|
18
|
+
def diagnostics()
|
|
19
|
+
return Bella_baxter/generated::Api::Diagnostics::DiagnosticsRequestBuilder.new(@path_parameters, @request_adapter)
|
|
20
|
+
end
|
|
21
|
+
##
|
|
22
|
+
# The tenants property
|
|
23
|
+
def tenants()
|
|
24
|
+
return Bella_baxter/generated::Api::Tenants::TenantsRequestBuilder.new(@path_parameters, @request_adapter)
|
|
25
|
+
end
|
|
26
|
+
##
|
|
27
|
+
# The users property
|
|
28
|
+
def users()
|
|
29
|
+
return Bella_baxter/generated::Api::Users::UsersRequestBuilder.new(@path_parameters, @request_adapter)
|
|
30
|
+
end
|
|
31
|
+
##
|
|
32
|
+
# The v1 property
|
|
33
|
+
def v1()
|
|
34
|
+
return Bella_baxter/generated::Api::V1::V1RequestBuilder.new(@path_parameters, @request_adapter)
|
|
35
|
+
end
|
|
36
|
+
##
|
|
37
|
+
# The version property
|
|
38
|
+
def version()
|
|
39
|
+
return Bella_baxter/generated::Api::Version::VersionRequestBuilder.new(@path_parameters, @request_adapter)
|
|
40
|
+
end
|
|
41
|
+
##
|
|
42
|
+
## Instantiates a new ApiRequestBuilder and sets the default values.
|
|
43
|
+
## @param path_parameters Path parameters for the request
|
|
44
|
+
## @param request_adapter The request adapter to use to execute the requests.
|
|
45
|
+
## @return a void
|
|
46
|
+
##
|
|
47
|
+
def initialize(path_parameters, request_adapter)
|
|
48
|
+
super(path_parameters, request_adapter, "{+baseurl}/api")
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
File without changes
|