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.
Files changed (602) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +225 -0
  3. data/lib/bella_baxter/client.rb +174 -0
  4. data/lib/bella_baxter/e2ee.rb +136 -0
  5. data/lib/bella_baxter/e2ee_faraday_middleware.rb +46 -0
  6. data/lib/bella_baxter/errors.rb +29 -0
  7. data/lib/bella_baxter/generated/api/api.rb +0 -0
  8. data/lib/bella_baxter/generated/api/api_request_builder.rb +52 -0
  9. data/lib/bella_baxter/generated/api/diagnostics/auth/auth.rb +0 -0
  10. data/lib/bella_baxter/generated/api/diagnostics/auth/auth_request_builder.rb +66 -0
  11. data/lib/bella_baxter/generated/api/diagnostics/diagnostics.rb +0 -0
  12. data/lib/bella_baxter/generated/api/diagnostics/diagnostics_request_builder.rb +31 -0
  13. data/lib/bella_baxter/generated/api/tenants/invites/invites.rb +0 -0
  14. data/lib/bella_baxter/generated/api/tenants/invites/invites_request_builder.rb +40 -0
  15. data/lib/bella_baxter/generated/api/tenants/invites/item/accept/accept.rb +0 -0
  16. data/lib/bella_baxter/generated/api/tenants/invites/item/accept/accept_request_builder.rb +72 -0
  17. data/lib/bella_baxter/generated/api/tenants/invites/item/item.rb +0 -0
  18. data/lib/bella_baxter/generated/api/tenants/invites/item/preview/preview.rb +0 -0
  19. data/lib/bella_baxter/generated/api/tenants/invites/item/preview/preview_request_builder.rb +72 -0
  20. data/lib/bella_baxter/generated/api/tenants/invites/item/with_token_item_request_builder.rb +43 -0
  21. data/lib/bella_baxter/generated/api/tenants/item/identifier_item_request_builder.rb +96 -0
  22. data/lib/bella_baxter/generated/api/tenants/item/invites/invites.rb +0 -0
  23. data/lib/bella_baxter/generated/api/tenants/item/invites/invites_request_builder.rb +116 -0
  24. data/lib/bella_baxter/generated/api/tenants/item/invites/item/item.rb +0 -0
  25. data/lib/bella_baxter/generated/api/tenants/item/invites/item/with_token_item_request_builder.rb +72 -0
  26. data/lib/bella_baxter/generated/api/tenants/item/item.rb +0 -0
  27. data/lib/bella_baxter/generated/api/tenants/item/settings/settings.rb +0 -0
  28. data/lib/bella_baxter/generated/api/tenants/item/settings/settings_request_builder.rb +69 -0
  29. data/lib/bella_baxter/generated/api/tenants/item/switch/switch.rb +0 -0
  30. data/lib/bella_baxter/generated/api/tenants/item/switch/switch_request_builder.rb +69 -0
  31. data/lib/bella_baxter/generated/api/tenants/item/users/item/item.rb +0 -0
  32. data/lib/bella_baxter/generated/api/tenants/item/users/item/role/role.rb +0 -0
  33. data/lib/bella_baxter/generated/api/tenants/item/users/item/role/role_request_builder.rb +81 -0
  34. data/lib/bella_baxter/generated/api/tenants/item/users/item/with_user_item_request_builder.rb +78 -0
  35. data/lib/bella_baxter/generated/api/tenants/item/users/users.rb +0 -0
  36. data/lib/bella_baxter/generated/api/tenants/item/users/users_request_builder.rb +81 -0
  37. data/lib/bella_baxter/generated/api/tenants/item/verify_access/verify_access.rb +0 -0
  38. data/lib/bella_baxter/generated/api/tenants/item/verify_access/verify_access_request_builder.rb +69 -0
  39. data/lib/bella_baxter/generated/api/tenants/my_tenants/my_tenants.rb +0 -0
  40. data/lib/bella_baxter/generated/api/tenants/my_tenants/my_tenants_request_builder.rb +66 -0
  41. data/lib/bella_baxter/generated/api/tenants/new/new.rb +0 -0
  42. data/lib/bella_baxter/generated/api/tenants/new/new_request_builder.rb +72 -0
  43. data/lib/bella_baxter/generated/api/tenants/tenants.rb +0 -0
  44. data/lib/bella_baxter/generated/api/tenants/tenants_request_builder.rb +151 -0
  45. data/lib/bella_baxter/generated/api/users/handshake/handshake.rb +0 -0
  46. data/lib/bella_baxter/generated/api/users/handshake/handshake_request_builder.rb +66 -0
  47. data/lib/bella_baxter/generated/api/users/users.rb +0 -0
  48. data/lib/bella_baxter/generated/api/users/users_request_builder.rb +31 -0
  49. data/lib/bella_baxter/generated/api/v1/access_logs/access_logs.rb +0 -0
  50. data/lib/bella_baxter/generated/api/v1/access_logs/access_logs_request_builder.rb +103 -0
  51. data/lib/bella_baxter/generated/api/v1/admin/admin.rb +0 -0
  52. data/lib/bella_baxter/generated/api/v1/admin/admin_request_builder.rb +64 -0
  53. data/lib/bella_baxter/generated/api/v1/admin/change_password/change_password.rb +0 -0
  54. data/lib/bella_baxter/generated/api/v1/admin/change_password/change_password_request_builder.rb +75 -0
  55. data/lib/bella_baxter/generated/api/v1/admin/notifications/notifications.rb +0 -0
  56. data/lib/bella_baxter/generated/api/v1/admin/notifications/notifications_request_builder.rb +69 -0
  57. data/lib/bella_baxter/generated/api/v1/admin/roles/roles.rb +0 -0
  58. data/lib/bella_baxter/generated/api/v1/admin/roles/roles_request_builder.rb +69 -0
  59. data/lib/bella_baxter/generated/api/v1/admin/tenants/item/item.rb +0 -0
  60. data/lib/bella_baxter/generated/api/v1/admin/tenants/item/plan/plan.rb +0 -0
  61. data/lib/bella_baxter/generated/api/v1/admin/tenants/item/plan/plan_request_builder.rb +81 -0
  62. data/lib/bella_baxter/generated/api/v1/admin/tenants/item/tenants_item_request_builder.rb +40 -0
  63. data/lib/bella_baxter/generated/api/v1/admin/tenants/tenants.rb +0 -0
  64. data/lib/bella_baxter/generated/api/v1/admin/tenants/tenants_request_builder.rb +43 -0
  65. data/lib/bella_baxter/generated/api/v1/admin/users/item/item.rb +0 -0
  66. data/lib/bella_baxter/generated/api/v1/admin/users/item/users_item_request_builder.rb +72 -0
  67. data/lib/bella_baxter/generated/api/v1/admin/users/users.rb +0 -0
  68. data/lib/bella_baxter/generated/api/v1/admin/users/users_request_builder.rb +87 -0
  69. data/lib/bella_baxter/generated/api/v1/admin/webhooks/webhooks.rb +0 -0
  70. data/lib/bella_baxter/generated/api/v1/admin/webhooks/webhooks_request_builder.rb +69 -0
  71. data/lib/bella_baxter/generated/api/v1/api_keys/api_keys.rb +0 -0
  72. data/lib/bella_baxter/generated/api/v1/api_keys/api_keys_request_builder.rb +84 -0
  73. data/lib/bella_baxter/generated/api/v1/api_keys/item/api_keys_item_request_builder.rb +138 -0
  74. data/lib/bella_baxter/generated/api/v1/api_keys/item/item.rb +0 -0
  75. data/lib/bella_baxter/generated/api/v1/api_keys/item/toggle_status/toggle_status.rb +0 -0
  76. data/lib/bella_baxter/generated/api/v1/api_keys/item/toggle_status/toggle_status_request_builder.rb +78 -0
  77. data/lib/bella_baxter/generated/api/v1/auth/auth.rb +0 -0
  78. data/lib/bella_baxter/generated/api/v1/auth/auth_request_builder.rb +46 -0
  79. data/lib/bella_baxter/generated/api/v1/auth/config/config.rb +0 -0
  80. data/lib/bella_baxter/generated/api/v1/auth/config/config_request_builder.rb +69 -0
  81. data/lib/bella_baxter/generated/api/v1/auth/sso_hint/sso_hint.rb +0 -0
  82. data/lib/bella_baxter/generated/api/v1/auth/sso_hint/sso_hint_request_builder.rb +77 -0
  83. data/lib/bella_baxter/generated/api/v1/auth/token/token.rb +0 -0
  84. data/lib/bella_baxter/generated/api/v1/auth/token/token_request_builder.rb +75 -0
  85. data/lib/bella_baxter/generated/api/v1/dashboard/dashboard.rb +0 -0
  86. data/lib/bella_baxter/generated/api/v1/dashboard/dashboard_request_builder.rb +66 -0
  87. data/lib/bella_baxter/generated/api/v1/environments/environments.rb +0 -0
  88. data/lib/bella_baxter/generated/api/v1/environments/environments_request_builder.rb +40 -0
  89. data/lib/bella_baxter/generated/api/v1/environments/item/api_keys/api_keys.rb +0 -0
  90. data/lib/bella_baxter/generated/api/v1/environments/item/api_keys/api_keys_request_builder.rb +129 -0
  91. data/lib/bella_baxter/generated/api/v1/environments/item/drift/drift.rb +0 -0
  92. data/lib/bella_baxter/generated/api/v1/environments/item/drift/drift_request_builder.rb +72 -0
  93. data/lib/bella_baxter/generated/api/v1/environments/item/env_item_request_builder.rb +85 -0
  94. data/lib/bella_baxter/generated/api/v1/environments/item/item.rb +0 -0
  95. data/lib/bella_baxter/generated/api/v1/environments/item/notifications/notifications.rb +0 -0
  96. data/lib/bella_baxter/generated/api/v1/environments/item/notifications/notifications_request_builder.rb +72 -0
  97. data/lib/bella_baxter/generated/api/v1/environments/item/secret_drift_summary/secret_drift_summary.rb +0 -0
  98. data/lib/bella_baxter/generated/api/v1/environments/item/secret_drift_summary/secret_drift_summary_request_builder.rb +72 -0
  99. data/lib/bella_baxter/generated/api/v1/environments/item/security/scan/scan.rb +0 -0
  100. data/lib/bella_baxter/generated/api/v1/environments/item/security/scan/scan_request_builder.rb +75 -0
  101. data/lib/bella_baxter/generated/api/v1/environments/item/security/security.rb +0 -0
  102. data/lib/bella_baxter/generated/api/v1/environments/item/security/security_request_builder.rb +78 -0
  103. data/lib/bella_baxter/generated/api/v1/environments/item/token/token.rb +0 -0
  104. data/lib/bella_baxter/generated/api/v1/environments/item/token/token_request_builder.rb +78 -0
  105. data/lib/bella_baxter/generated/api/v1/environments/item/tokens/issue/issue.rb +0 -0
  106. data/lib/bella_baxter/generated/api/v1/environments/item/tokens/issue/issue_request_builder.rb +81 -0
  107. data/lib/bella_baxter/generated/api/v1/environments/item/tokens/tokens.rb +0 -0
  108. data/lib/bella_baxter/generated/api/v1/environments/item/tokens/tokens_request_builder.rb +40 -0
  109. data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/item/item.rb +0 -0
  110. data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/item/trust_domains_item_request_builder.rb +138 -0
  111. data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/trust_domains.rb +0 -0
  112. data/lib/bella_baxter/generated/api/v1/environments/item/trust_domains/trust_domains_request_builder.rb +118 -0
  113. data/lib/bella_baxter/generated/api/v1/environments/item/webhooks/webhooks.rb +0 -0
  114. data/lib/bella_baxter/generated/api/v1/environments/item/webhooks/webhooks_request_builder.rb +72 -0
  115. data/lib/bella_baxter/generated/api/v1/events/events.rb +0 -0
  116. data/lib/bella_baxter/generated/api/v1/events/events_request_builder.rb +34 -0
  117. data/lib/bella_baxter/generated/api/v1/events/stream/stream.rb +0 -0
  118. data/lib/bella_baxter/generated/api/v1/events/stream/stream_request_builder.rb +69 -0
  119. data/lib/bella_baxter/generated/api/v1/groups/groups.rb +0 -0
  120. data/lib/bella_baxter/generated/api/v1/groups/groups_request_builder.rb +123 -0
  121. data/lib/bella_baxter/generated/api/v1/groups/item/groups_item_request_builder.rb +138 -0
  122. data/lib/bella_baxter/generated/api/v1/groups/item/item.rb +0 -0
  123. data/lib/bella_baxter/generated/api/v1/groups/item/members/item/item.rb +0 -0
  124. data/lib/bella_baxter/generated/api/v1/groups/item/members/item/with_user_item_request_builder.rb +75 -0
  125. data/lib/bella_baxter/generated/api/v1/groups/item/members/members.rb +0 -0
  126. data/lib/bella_baxter/generated/api/v1/groups/item/members/members_request_builder.rb +119 -0
  127. data/lib/bella_baxter/generated/api/v1/keys/keys.rb +0 -0
  128. data/lib/bella_baxter/generated/api/v1/keys/keys_request_builder.rb +34 -0
  129. data/lib/bella_baxter/generated/api/v1/keys/me/me.rb +0 -0
  130. data/lib/bella_baxter/generated/api/v1/keys/me/me_request_builder.rb +69 -0
  131. data/lib/bella_baxter/generated/api/v1/notifications/item/item.rb +0 -0
  132. data/lib/bella_baxter/generated/api/v1/notifications/item/notifications_item_request_builder.rb +115 -0
  133. data/lib/bella_baxter/generated/api/v1/notifications/item/test/test.rb +0 -0
  134. data/lib/bella_baxter/generated/api/v1/notifications/item/test/test_request_builder.rb +72 -0
  135. data/lib/bella_baxter/generated/api/v1/notifications/item/toggle/toggle.rb +0 -0
  136. data/lib/bella_baxter/generated/api/v1/notifications/item/toggle/toggle_request_builder.rb +72 -0
  137. data/lib/bella_baxter/generated/api/v1/notifications/item/update/update.rb +0 -0
  138. data/lib/bella_baxter/generated/api/v1/notifications/item/update/update_request_builder.rb +78 -0
  139. data/lib/bella_baxter/generated/api/v1/notifications/notifications.rb +0 -0
  140. data/lib/bella_baxter/generated/api/v1/notifications/notifications_request_builder.rb +84 -0
  141. data/lib/bella_baxter/generated/api/v1/projects/import/import.rb +0 -0
  142. data/lib/bella_baxter/generated/api/v1/projects/import/import_request_builder.rb +75 -0
  143. data/lib/bella_baxter/generated/api/v1/projects/item/environments/environments.rb +0 -0
  144. data/lib/bella_baxter/generated/api/v1/projects/item/environments/environments_request_builder.rb +122 -0
  145. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/copy/copy.rb +0 -0
  146. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/copy/copy_request_builder.rb +84 -0
  147. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/groups.rb +0 -0
  148. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/groups_request_builder.rb +125 -0
  149. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/item/item.rb +0 -0
  150. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/groups/item/with_group_item_request_builder.rb +81 -0
  151. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/item.rb +0 -0
  152. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/lease_policy/lease_policy.rb +0 -0
  153. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/lease_policy/lease_policy_request_builder.rb +84 -0
  154. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/item/item.rb +0 -0
  155. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/item/with_lease_item_request_builder.rb +81 -0
  156. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/leases.rb +0 -0
  157. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/leases/leases_request_builder.rb +98 -0
  158. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/credentials.rb +0 -0
  159. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/credentials_request_builder.rb +58 -0
  160. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/generate/generate.rb +0 -0
  161. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/generate/generate_request_builder.rb +96 -0
  162. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/roles/roles.rb +0 -0
  163. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/credentials/roles/roles_request_builder.rb +86 -0
  164. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/item.rb +0 -0
  165. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/export/export.rb +0 -0
  166. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/export/export_request_builder.rb +99 -0
  167. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/hash/hash.rb +0 -0
  168. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/hash/hash_request_builder.rb +90 -0
  169. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/import.rb +0 -0
  170. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/import_request_builder.rb +103 -0
  171. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/preview/preview.rb +0 -0
  172. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/import/preview/preview_request_builder.rb +116 -0
  173. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/item.rb +0 -0
  174. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/metadata/metadata.rb +0 -0
  175. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/metadata/metadata_request_builder.rb +99 -0
  176. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rollback/rollback.rb +0 -0
  177. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rollback/rollback_request_builder.rb +100 -0
  178. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rotation_policy/rotation_policy.rb +0 -0
  179. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/rotation_policy/rotation_policy_request_builder.rb +100 -0
  180. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/destroy/destroy.rb +0 -0
  181. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/destroy/destroy_request_builder.rb +100 -0
  182. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/item.rb +0 -0
  183. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/undelete/undelete.rb +0 -0
  184. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/item/undelete/undelete_request_builder.rb +100 -0
  185. 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
  186. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/versions.rb +0 -0
  187. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/versions/versions_request_builder.rb +106 -0
  188. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/item/with_key_item_request_builder.rb +184 -0
  189. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/secrets.rb +0 -0
  190. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/secrets_request_builder.rb +162 -0
  191. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/upload/upload.rb +1 -0
  192. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/upload/upload_post_request_body.rb +149 -0
  193. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/secrets/upload/upload_request_builder.rb +96 -0
  194. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/item/with_provider_slug_item_request_builder.rb +93 -0
  195. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/providers.rb +0 -0
  196. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/providers/providers_request_builder.rb +125 -0
  197. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/export/export.rb +0 -0
  198. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/export/export_request_builder.rb +92 -0
  199. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/manifest/manifest.rb +0 -0
  200. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/manifest/manifest_request_builder.rb +84 -0
  201. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/secrets.rb +0 -0
  202. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/secrets_request_builder.rb +99 -0
  203. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/version/version.rb +0 -0
  204. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/secrets/version/version_request_builder.rb +84 -0
  205. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ca_public_key/ca_public_key.rb +0 -0
  206. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ca_public_key/ca_public_key_request_builder.rb +81 -0
  207. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/configure/configure.rb +0 -0
  208. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/configure/configure_request_builder.rb +81 -0
  209. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/item/item.rb +0 -0
  210. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/item/with_role_name_item_request_builder.rb +84 -0
  211. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/roles.rb +0 -0
  212. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/roles/roles_request_builder.rb +128 -0
  213. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/sign/sign.rb +0 -0
  214. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/sign/sign_request_builder.rb +87 -0
  215. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ssh.rb +0 -0
  216. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/ssh/ssh_request_builder.rb +64 -0
  217. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/generate/generate.rb +0 -0
  218. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/generate/generate_request_builder.rb +87 -0
  219. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/import/import.rb +0 -0
  220. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/import/import_request_builder.rb +87 -0
  221. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/code/code.rb +0 -0
  222. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/code/code_request_builder.rb +84 -0
  223. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/item.rb +0 -0
  224. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/item/with_name_item_request_builder.rb +87 -0
  225. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/totp.rb +0 -0
  226. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/totp/totp_request_builder.rb +102 -0
  227. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/item/item.rb +0 -0
  228. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/item/with_user_item_request_builder.rb +115 -0
  229. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/users.rb +0 -0
  230. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/users/users_request_builder.rb +125 -0
  231. data/lib/bella_baxter/generated/api/v1/projects/item/environments/item/with_env_slug_item_request_builder.rb +192 -0
  232. data/lib/bella_baxter/generated/api/v1/projects/item/export/export.rb +0 -0
  233. data/lib/bella_baxter/generated/api/v1/projects/item/export/export_request_builder.rb +72 -0
  234. data/lib/bella_baxter/generated/api/v1/projects/item/global_secret_provider/global_secret_provider.rb +0 -0
  235. data/lib/bella_baxter/generated/api/v1/projects/item/global_secret_provider/global_secret_provider_request_builder.rb +78 -0
  236. data/lib/bella_baxter/generated/api/v1/projects/item/groups/groups.rb +0 -0
  237. data/lib/bella_baxter/generated/api/v1/projects/item/groups/groups_request_builder.rb +119 -0
  238. data/lib/bella_baxter/generated/api/v1/projects/item/groups/item/item.rb +0 -0
  239. data/lib/bella_baxter/generated/api/v1/projects/item/groups/item/with_group_item_request_builder.rb +75 -0
  240. data/lib/bella_baxter/generated/api/v1/projects/item/item.rb +0 -0
  241. data/lib/bella_baxter/generated/api/v1/projects/item/item_request_builder.rb +198 -0
  242. data/lib/bella_baxter/generated/api/v1/projects/item/notifications/notifications.rb +0 -0
  243. data/lib/bella_baxter/generated/api/v1/projects/item/notifications/notifications_request_builder.rb +72 -0
  244. data/lib/bella_baxter/generated/api/v1/projects/item/providers/item/item.rb +0 -0
  245. data/lib/bella_baxter/generated/api/v1/projects/item/providers/item/with_provider_item_request_builder.rb +75 -0
  246. data/lib/bella_baxter/generated/api/v1/projects/item/providers/providers.rb +0 -0
  247. data/lib/bella_baxter/generated/api/v1/projects/item/providers/providers_request_builder.rb +119 -0
  248. data/lib/bella_baxter/generated/api/v1/projects/item/secret_drift/secret_drift.rb +0 -0
  249. data/lib/bella_baxter/generated/api/v1/projects/item/secret_drift/secret_drift_request_builder.rb +72 -0
  250. data/lib/bella_baxter/generated/api/v1/projects/item/secrets/item/item.rb +0 -0
  251. data/lib/bella_baxter/generated/api/v1/projects/item/secrets/item/with_key_item_request_builder.rb +117 -0
  252. data/lib/bella_baxter/generated/api/v1/projects/item/secrets/secrets.rb +0 -0
  253. data/lib/bella_baxter/generated/api/v1/projects/item/secrets/secrets_request_builder.rb +125 -0
  254. data/lib/bella_baxter/generated/api/v1/projects/item/security/scan/scan.rb +0 -0
  255. data/lib/bella_baxter/generated/api/v1/projects/item/security/scan/scan_request_builder.rb +75 -0
  256. data/lib/bella_baxter/generated/api/v1/projects/item/security/security.rb +0 -0
  257. data/lib/bella_baxter/generated/api/v1/projects/item/security/security_request_builder.rb +78 -0
  258. data/lib/bella_baxter/generated/api/v1/projects/item/users/item/item.rb +0 -0
  259. data/lib/bella_baxter/generated/api/v1/projects/item/users/item/permissions/permissions.rb +0 -0
  260. data/lib/bella_baxter/generated/api/v1/projects/item/users/item/permissions/permissions_request_builder.rb +84 -0
  261. data/lib/bella_baxter/generated/api/v1/projects/item/users/item/with_user_item_request_builder.rb +81 -0
  262. data/lib/bella_baxter/generated/api/v1/projects/item/users/users.rb +0 -0
  263. data/lib/bella_baxter/generated/api/v1/projects/item/users/users_request_builder.rb +119 -0
  264. data/lib/bella_baxter/generated/api/v1/projects/item/webhooks/webhooks.rb +0 -0
  265. data/lib/bella_baxter/generated/api/v1/projects/item/webhooks/webhooks_request_builder.rb +72 -0
  266. data/lib/bella_baxter/generated/api/v1/projects/projects.rb +0 -0
  267. data/lib/bella_baxter/generated/api/v1/projects/projects_request_builder.rb +159 -0
  268. data/lib/bella_baxter/generated/api/v1/projects/search/search.rb +0 -0
  269. data/lib/bella_baxter/generated/api/v1/projects/search/search_request_builder.rb +80 -0
  270. data/lib/bella_baxter/generated/api/v1/projects/tags/tags.rb +0 -0
  271. data/lib/bella_baxter/generated/api/v1/projects/tags/tags_request_builder.rb +68 -0
  272. data/lib/bella_baxter/generated/api/v1/providers/catalog/catalog.rb +0 -0
  273. data/lib/bella_baxter/generated/api/v1/providers/catalog/catalog_request_builder.rb +69 -0
  274. data/lib/bella_baxter/generated/api/v1/providers/init_system/init_system.rb +0 -0
  275. data/lib/bella_baxter/generated/api/v1/providers/init_system/init_system_request_builder.rb +69 -0
  276. data/lib/bella_baxter/generated/api/v1/providers/item/item.rb +0 -0
  277. data/lib/bella_baxter/generated/api/v1/providers/item/with_provider_slug_item_request_builder.rb +133 -0
  278. data/lib/bella_baxter/generated/api/v1/providers/providers.rb +0 -0
  279. data/lib/bella_baxter/generated/api/v1/providers/providers_request_builder.rb +137 -0
  280. data/lib/bella_baxter/generated/api/v1/providers/regions/aws/aws.rb +0 -0
  281. data/lib/bella_baxter/generated/api/v1/providers/regions/aws/aws_request_builder.rb +72 -0
  282. data/lib/bella_baxter/generated/api/v1/providers/regions/regions.rb +0 -0
  283. data/lib/bella_baxter/generated/api/v1/providers/regions/regions_request_builder.rb +37 -0
  284. data/lib/bella_baxter/generated/api/v1/providers/search/search.rb +0 -0
  285. data/lib/bella_baxter/generated/api/v1/providers/search/search_request_builder.rb +77 -0
  286. data/lib/bella_baxter/generated/api/v1/security/security.rb +0 -0
  287. data/lib/bella_baxter/generated/api/v1/security/security_request_builder.rb +34 -0
  288. data/lib/bella_baxter/generated/api/v1/security/summary/summary.rb +0 -0
  289. data/lib/bella_baxter/generated/api/v1/security/summary/summary_request_builder.rb +69 -0
  290. data/lib/bella_baxter/generated/api/v1/shares/item/item.rb +0 -0
  291. data/lib/bella_baxter/generated/api/v1/shares/item/shares_item_request_builder.rb +104 -0
  292. data/lib/bella_baxter/generated/api/v1/shares/item/unlock/unlock.rb +0 -0
  293. data/lib/bella_baxter/generated/api/v1/shares/item/unlock/unlock_request_builder.rb +78 -0
  294. data/lib/bella_baxter/generated/api/v1/shares/shares.rb +0 -0
  295. data/lib/bella_baxter/generated/api/v1/shares/shares_request_builder.rb +113 -0
  296. data/lib/bella_baxter/generated/api/v1/ssh/logs/logs.rb +0 -0
  297. data/lib/bella_baxter/generated/api/v1/ssh/logs/logs_request_builder.rb +109 -0
  298. data/lib/bella_baxter/generated/api/v1/ssh/ssh.rb +0 -0
  299. data/lib/bella_baxter/generated/api/v1/ssh/ssh_request_builder.rb +34 -0
  300. data/lib/bella_baxter/generated/api/v1/system/health/health.rb +0 -0
  301. data/lib/bella_baxter/generated/api/v1/system/health/health_request_builder.rb +37 -0
  302. data/lib/bella_baxter/generated/api/v1/system/health/rate_limit/rate_limit.rb +0 -0
  303. data/lib/bella_baxter/generated/api/v1/system/health/rate_limit/rate_limit_request_builder.rb +72 -0
  304. data/lib/bella_baxter/generated/api/v1/system/rate_limit/rate_limit.rb +0 -0
  305. data/lib/bella_baxter/generated/api/v1/system/rate_limit/rate_limit_request_builder.rb +37 -0
  306. data/lib/bella_baxter/generated/api/v1/system/rate_limit/status/status.rb +0 -0
  307. data/lib/bella_baxter/generated/api/v1/system/rate_limit/status/status_request_builder.rb +72 -0
  308. data/lib/bella_baxter/generated/api/v1/system/system.rb +0 -0
  309. data/lib/bella_baxter/generated/api/v1/system/system_request_builder.rb +40 -0
  310. data/lib/bella_baxter/generated/api/v1/tenant/billing/billing.rb +0 -0
  311. data/lib/bella_baxter/generated/api/v1/tenant/billing/billing_request_builder.rb +37 -0
  312. data/lib/bella_baxter/generated/api/v1/tenant/billing/statements/statements.rb +0 -0
  313. data/lib/bella_baxter/generated/api/v1/tenant/billing/statements/statements_request_builder.rb +81 -0
  314. data/lib/bella_baxter/generated/api/v1/tenant/tenant.rb +0 -0
  315. data/lib/bella_baxter/generated/api/v1/tenant/tenant_request_builder.rb +40 -0
  316. data/lib/bella_baxter/generated/api/v1/tenant/usage/usage.rb +0 -0
  317. data/lib/bella_baxter/generated/api/v1/tenant/usage/usage_request_builder.rb +69 -0
  318. data/lib/bella_baxter/generated/api/v1/tenants/me/me.rb +0 -0
  319. data/lib/bella_baxter/generated/api/v1/tenants/me/me_request_builder.rb +37 -0
  320. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/enforce/enforce.rb +0 -0
  321. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/enforce/enforce_request_builder.rb +81 -0
  322. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/oidc/oidc.rb +0 -0
  323. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/oidc/oidc_request_builder.rb +81 -0
  324. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/request/request.rb +0 -0
  325. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/request/request_request_builder.rb +75 -0
  326. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/saml/saml.rb +0 -0
  327. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/saml/saml_request_builder.rb +81 -0
  328. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/sso.rb +0 -0
  329. data/lib/bella_baxter/generated/api/v1/tenants/me/sso/sso_request_builder.rb +160 -0
  330. data/lib/bella_baxter/generated/api/v1/tenants/tenants.rb +0 -0
  331. data/lib/bella_baxter/generated/api/v1/tenants/tenants_request_builder.rb +34 -0
  332. data/lib/bella_baxter/generated/api/v1/token/token.rb +0 -0
  333. data/lib/bella_baxter/generated/api/v1/token/token_request_builder.rb +72 -0
  334. data/lib/bella_baxter/generated/api/v1/users/change_password/change_password.rb +0 -0
  335. data/lib/bella_baxter/generated/api/v1/users/change_password/change_password_request_builder.rb +75 -0
  336. data/lib/bella_baxter/generated/api/v1/users/item/item.rb +0 -0
  337. data/lib/bella_baxter/generated/api/v1/users/item/reactivate/reactivate.rb +0 -0
  338. data/lib/bella_baxter/generated/api/v1/users/item/reactivate/reactivate_request_builder.rb +72 -0
  339. data/lib/bella_baxter/generated/api/v1/users/item/with_user_item_request_builder.rb +112 -0
  340. data/lib/bella_baxter/generated/api/v1/users/me/me.rb +0 -0
  341. data/lib/bella_baxter/generated/api/v1/users/me/me_request_builder.rb +104 -0
  342. data/lib/bella_baxter/generated/api/v1/users/users.rb +0 -0
  343. data/lib/bella_baxter/generated/api/v1/users/users_request_builder.rb +52 -0
  344. data/lib/bella_baxter/generated/api/v1/v1.rb +0 -0
  345. data/lib/bella_baxter/generated/api/v1/v1_request_builder.rb +151 -0
  346. data/lib/bella_baxter/generated/api/v1/webhooks/item/deactivate/deactivate.rb +0 -0
  347. data/lib/bella_baxter/generated/api/v1/webhooks/item/deactivate/deactivate_request_builder.rb +72 -0
  348. data/lib/bella_baxter/generated/api/v1/webhooks/item/deliveries/deliveries.rb +0 -0
  349. data/lib/bella_baxter/generated/api/v1/webhooks/item/deliveries/deliveries_request_builder.rb +72 -0
  350. data/lib/bella_baxter/generated/api/v1/webhooks/item/item.rb +0 -0
  351. data/lib/bella_baxter/generated/api/v1/webhooks/item/link_provider/link_provider.rb +0 -0
  352. data/lib/bella_baxter/generated/api/v1/webhooks/item/link_provider/link_provider_request_builder.rb +78 -0
  353. data/lib/bella_baxter/generated/api/v1/webhooks/item/reactivate/reactivate.rb +0 -0
  354. data/lib/bella_baxter/generated/api/v1/webhooks/item/reactivate/reactivate_request_builder.rb +72 -0
  355. data/lib/bella_baxter/generated/api/v1/webhooks/item/rotate_secret/rotate_secret.rb +0 -0
  356. data/lib/bella_baxter/generated/api/v1/webhooks/item/rotate_secret/rotate_secret_request_builder.rb +72 -0
  357. data/lib/bella_baxter/generated/api/v1/webhooks/item/test/test.rb +0 -0
  358. data/lib/bella_baxter/generated/api/v1/webhooks/item/test/test_request_builder.rb +72 -0
  359. data/lib/bella_baxter/generated/api/v1/webhooks/item/webhooks_item_request_builder.rb +167 -0
  360. data/lib/bella_baxter/generated/api/v1/webhooks/webhooks.rb +0 -0
  361. data/lib/bella_baxter/generated/api/v1/webhooks/webhooks_request_builder.rb +84 -0
  362. data/lib/bella_baxter/generated/api/version/version.rb +0 -0
  363. data/lib/bella_baxter/generated/api/version/version_request_builder.rb +63 -0
  364. data/lib/bella_baxter/generated/bella_baxter/generated.rb +0 -0
  365. data/lib/bella_baxter/generated/bella_client.rb +37 -0
  366. data/lib/bella_baxter/generated/dead_letters/dead_letters.rb +0 -0
  367. data/lib/bella_baxter/generated/dead_letters/dead_letters_request_builder.rb +101 -0
  368. data/lib/bella_baxter/generated/dead_letters/replay/replay.rb +0 -0
  369. data/lib/bella_baxter/generated/dead_letters/replay/replay_request_builder.rb +65 -0
  370. data/lib/bella_baxter/generated/models/accept_invite_response.rb +162 -0
  371. data/lib/bella_baxter/generated/models/access_log_entry.rb +443 -0
  372. data/lib/bella_baxter/generated/models/access_log_page.rb +142 -0
  373. data/lib/bella_baxter/generated/models/activity_by_day.rb +103 -0
  374. data/lib/bella_baxter/generated/models/add_user_to_group_request.rb +82 -0
  375. data/lib/bella_baxter/generated/models/all_environment_secrets_response.rb +163 -0
  376. data/lib/bella_baxter/generated/models/all_environment_secrets_response_secrets.rb +62 -0
  377. data/lib/bella_baxter/generated/models/api_key_operation_response.rb +201 -0
  378. data/lib/bella_baxter/generated/models/api_key_operation_response_api_key_member1.rb +62 -0
  379. data/lib/bella_baxter/generated/models/api_key_response.rb +383 -0
  380. data/lib/bella_baxter/generated/models/assign_group_to_environment_request.rb +102 -0
  381. data/lib/bella_baxter/generated/models/assign_group_to_project_request.rb +102 -0
  382. data/lib/bella_baxter/generated/models/assign_providers_command.rb +82 -0
  383. data/lib/bella_baxter/generated/models/assign_users_request.rb +102 -0
  384. data/lib/bella_baxter/generated/models/assign_users_to_environment_request.rb +82 -0
  385. data/lib/bella_baxter/generated/models/auth_config_response.rb +162 -0
  386. data/lib/bella_baxter/generated/models/auth_diagnostics.rb +202 -0
  387. data/lib/bella_baxter/generated/models/aws_region_response.rb +82 -0
  388. data/lib/bella_baxter/generated/models/billing_statement_response.rb +283 -0
  389. data/lib/bella_baxter/generated/models/change_password_request.rb +102 -0
  390. data/lib/bella_baxter/generated/models/change_password_response.rb +102 -0
  391. data/lib/bella_baxter/generated/models/change_role_command.rb +82 -0
  392. data/lib/bella_baxter/generated/models/change_tenant_plan_request.rb +82 -0
  393. data/lib/bella_baxter/generated/models/change_tenant_plan_response.rb +122 -0
  394. data/lib/bella_baxter/generated/models/claim_operator.rb +9 -0
  395. data/lib/bella_baxter/generated/models/claim_rule.rb +122 -0
  396. data/lib/bella_baxter/generated/models/command.rb +122 -0
  397. data/lib/bella_baxter/generated/models/configure_oidc_sso_request.rb +142 -0
  398. data/lib/bella_baxter/generated/models/configure_saml_sso_request.rb +102 -0
  399. data/lib/bella_baxter/generated/models/copy_environment_command.rb +142 -0
  400. data/lib/bella_baxter/generated/models/copy_environment_response.rb +142 -0
  401. data/lib/bella_baxter/generated/models/create_api_key_request.rb +142 -0
  402. data/lib/bella_baxter/generated/models/create_environment_command.rb +122 -0
  403. data/lib/bella_baxter/generated/models/create_group_command.rb +102 -0
  404. data/lib/bella_baxter/generated/models/create_invite_command.rb +122 -0
  405. data/lib/bella_baxter/generated/models/create_notification_channel_request.rb +182 -0
  406. data/lib/bella_baxter/generated/models/create_notification_channel_request_configuration.rb +62 -0
  407. data/lib/bella_baxter/generated/models/create_own_tenant_command.rb +102 -0
  408. data/lib/bella_baxter/generated/models/create_own_tenant_response.rb +142 -0
  409. data/lib/bella_baxter/generated/models/create_project_command.rb +122 -0
  410. data/lib/bella_baxter/generated/models/create_provider_command.rb +142 -0
  411. data/lib/bella_baxter/generated/models/create_provider_command_configuration.rb +62 -0
  412. data/lib/bella_baxter/generated/models/create_secret_request.rb +162 -0
  413. data/lib/bella_baxter/generated/models/create_secret_response.rb +122 -0
  414. data/lib/bella_baxter/generated/models/create_share_command.rb +203 -0
  415. data/lib/bella_baxter/generated/models/create_share_response.rb +163 -0
  416. data/lib/bella_baxter/generated/models/create_tenant_response.rb +142 -0
  417. data/lib/bella_baxter/generated/models/create_trust_domain_command.rb +182 -0
  418. data/lib/bella_baxter/generated/models/create_user_request.rb +162 -0
  419. data/lib/bella_baxter/generated/models/create_user_response.rb +201 -0
  420. data/lib/bella_baxter/generated/models/create_user_response_user_member1.rb +62 -0
  421. data/lib/bella_baxter/generated/models/create_webhook_request.rb +162 -0
  422. data/lib/bella_baxter/generated/models/created_api_key_response.rb +183 -0
  423. data/lib/bella_baxter/generated/models/created_webhook_response.rb +182 -0
  424. data/lib/bella_baxter/generated/models/current_user_response.rb +223 -0
  425. data/lib/bella_baxter/generated/models/dashboard_count_pair.rb +102 -0
  426. data/lib/bella_baxter/generated/models/dashboard_response.rb +222 -0
  427. data/lib/bella_baxter/generated/models/dead_letter_envelope.rb +263 -0
  428. data/lib/bella_baxter/generated/models/dead_letter_envelope_get_request.rb +243 -0
  429. data/lib/bella_baxter/generated/models/dead_letter_envelope_ids_request.rb +102 -0
  430. data/lib/bella_baxter/generated/models/dead_letter_envelope_results.rb +142 -0
  431. data/lib/bella_baxter/generated/models/drift_item.rb +182 -0
  432. data/lib/bella_baxter/generated/models/drift_response.rb +122 -0
  433. data/lib/bella_baxter/generated/models/drift_summary.rb +142 -0
  434. data/lib/bella_baxter/generated/models/e2_e_encrypted_payload.rb +182 -0
  435. data/lib/bella_baxter/generated/models/envelope.rb +683 -0
  436. data/lib/bella_baxter/generated/models/envelope_headers.rb +62 -0
  437. data/lib/bella_baxter/generated/models/environment_drift_item.rb +202 -0
  438. data/lib/bella_baxter/generated/models/environment_drift_response.rb +142 -0
  439. data/lib/bella_baxter/generated/models/environment_drift_summary.rb +162 -0
  440. data/lib/bella_baxter/generated/models/environment_export_info.rb +142 -0
  441. data/lib/bella_baxter/generated/models/environment_operation_response.rb +224 -0
  442. data/lib/bella_baxter/generated/models/environment_operation_response_environment_member1.rb +62 -0
  443. data/lib/bella_baxter/generated/models/environment_provider_response.rb +223 -0
  444. data/lib/bella_baxter/generated/models/environment_response.rb +343 -0
  445. data/lib/bella_baxter/generated/models/environment_risk_entry.rb +263 -0
  446. data/lib/bella_baxter/generated/models/environment_secrets_version_response.rb +123 -0
  447. data/lib/bella_baxter/generated/models/environment_security_report_response.rb +283 -0
  448. data/lib/bella_baxter/generated/models/environment_security_summary_entry.rb +263 -0
  449. data/lib/bella_baxter/generated/models/environment_user_response.rb +183 -0
  450. data/lib/bella_baxter/generated/models/exchange_oidc_token_by_slug_command.rb +122 -0
  451. data/lib/bella_baxter/generated/models/exchange_oidc_token_command.rb +82 -0
  452. data/lib/bella_baxter/generated/models/exchange_token_request.rb +102 -0
  453. data/lib/bella_baxter/generated/models/exchange_token_response.rb +122 -0
  454. data/lib/bella_baxter/generated/models/generate_credentials_command.rb +102 -0
  455. data/lib/bella_baxter/generated/models/generate_credentials_response.rb +183 -0
  456. data/lib/bella_baxter/generated/models/generate_totp_key_request.rb +122 -0
  457. data/lib/bella_baxter/generated/models/get_project_response.rb +343 -0
  458. data/lib/bella_baxter/generated/models/get_project_response_members.rb +62 -0
  459. data/lib/bella_baxter/generated/models/get_tenant_response.rb +203 -0
  460. data/lib/bella_baxter/generated/models/global_secret_item.rb +223 -0
  461. data/lib/bella_baxter/generated/models/global_secret_item_tags.rb +62 -0
  462. data/lib/bella_baxter/generated/models/group_assignment_response.rb +142 -0
  463. data/lib/bella_baxter/generated/models/group_member_response.rb +122 -0
  464. data/lib/bella_baxter/generated/models/group_operation_response.rb +201 -0
  465. data/lib/bella_baxter/generated/models/group_operation_response_group_member1.rb +62 -0
  466. data/lib/bella_baxter/generated/models/group_response.rb +203 -0
  467. data/lib/bella_baxter/generated/models/handshake_response.rb +182 -0
  468. data/lib/bella_baxter/generated/models/i_result.rb +62 -0
  469. data/lib/bella_baxter/generated/models/import_failure.rb +102 -0
  470. data/lib/bella_baxter/generated/models/import_preview_response.rb +82 -0
  471. data/lib/bella_baxter/generated/models/import_secrets_request.rb +142 -0
  472. data/lib/bella_baxter/generated/models/import_secrets_request_type_overrides.rb +62 -0
  473. data/lib/bella_baxter/generated/models/import_secrets_response.rb +122 -0
  474. data/lib/bella_baxter/generated/models/import_totp_key_request.rb +102 -0
  475. data/lib/bella_baxter/generated/models/importable_secret.rb +144 -0
  476. data/lib/bella_baxter/generated/models/invite_list_response.rb +243 -0
  477. data/lib/bella_baxter/generated/models/invite_preview_response.rb +122 -0
  478. data/lib/bella_baxter/generated/models/invite_response.rb +183 -0
  479. data/lib/bella_baxter/generated/models/issue_environment_token_request.rb +122 -0
  480. data/lib/bella_baxter/generated/models/key_context_response.rb +282 -0
  481. data/lib/bella_baxter/generated/models/lease_policy_response.rb +122 -0
  482. data/lib/bella_baxter/generated/models/lease_response.rb +303 -0
  483. data/lib/bella_baxter/generated/models/link_provider_request.rb +122 -0
  484. data/lib/bella_baxter/generated/models/list_global_secrets_response.rb +142 -0
  485. data/lib/bella_baxter/generated/models/list_tenants_response.rb +183 -0
  486. data/lib/bella_baxter/generated/models/models.rb +225 -0
  487. data/lib/bella_baxter/generated/models/notification_channel_operation_response.rb +201 -0
  488. data/lib/bella_baxter/generated/models/notification_channel_operation_response_channel_member1.rb +62 -0
  489. data/lib/bella_baxter/generated/models/notification_channel_response.rb +303 -0
  490. data/lib/bella_baxter/generated/models/notification_channel_response_public_configuration.rb +62 -0
  491. data/lib/bella_baxter/generated/models/oidc_token_response.rb +103 -0
  492. data/lib/bella_baxter/generated/models/operation_response.rb +102 -0
  493. data/lib/bella_baxter/generated/models/page_project_response.rb +282 -0
  494. data/lib/bella_baxter/generated/models/pageable_object.rb +182 -0
  495. data/lib/bella_baxter/generated/models/paged_response_of_group_response.rb +242 -0
  496. data/lib/bella_baxter/generated/models/problem_details.rb +164 -0
  497. data/lib/bella_baxter/generated/models/project_export_bundle.rb +163 -0
  498. data/lib/bella_baxter/generated/models/project_export_info.rb +122 -0
  499. data/lib/bella_baxter/generated/models/project_global_security_report.rb +283 -0
  500. data/lib/bella_baxter/generated/models/project_import_response.rb +202 -0
  501. data/lib/bella_baxter/generated/models/project_operation_response.rb +222 -0
  502. data/lib/bella_baxter/generated/models/project_operation_response_project_member1.rb +62 -0
  503. data/lib/bella_baxter/generated/models/project_response.rb +363 -0
  504. data/lib/bella_baxter/generated/models/project_security_response.rb +201 -0
  505. data/lib/bella_baxter/generated/models/project_security_response_global_secrets_member1.rb +62 -0
  506. data/lib/bella_baxter/generated/models/project_user_response.rb +203 -0
  507. data/lib/bella_baxter/generated/models/provider_catalog_item.rb +182 -0
  508. data/lib/bella_baxter/generated/models/provider_catalog_response.rb +122 -0
  509. data/lib/bella_baxter/generated/models/provider_export_info.rb +182 -0
  510. data/lib/bella_baxter/generated/models/provider_export_info_public_configuration.rb +62 -0
  511. data/lib/bella_baxter/generated/models/provider_operation_response.rb +201 -0
  512. data/lib/bella_baxter/generated/models/provider_operation_response_provider_member1.rb +62 -0
  513. data/lib/bella_baxter/generated/models/provider_response.rb +303 -0
  514. data/lib/bella_baxter/generated/models/provider_response_configuration.rb +62 -0
  515. data/lib/bella_baxter/generated/models/region_info.rb +122 -0
  516. data/lib/bella_baxter/generated/models/request_sso_access_response.rb +102 -0
  517. data/lib/bella_baxter/generated/models/role_catalog_response.rb +102 -0
  518. data/lib/bella_baxter/generated/models/role_info.rb +122 -0
  519. data/lib/bella_baxter/generated/models/rollback_secret_request.rb +82 -0
  520. data/lib/bella_baxter/generated/models/secret_drift_summary_response.rb +122 -0
  521. data/lib/bella_baxter/generated/models/secret_manifest_item.rb +122 -0
  522. data/lib/bella_baxter/generated/models/secret_version_info.rb +163 -0
  523. data/lib/bella_baxter/generated/models/secret_versions_metadata.rb +142 -0
  524. data/lib/bella_baxter/generated/models/secrets_hash_response.rb +123 -0
  525. data/lib/bella_baxter/generated/models/secrets_manifest.rb +143 -0
  526. data/lib/bella_baxter/generated/models/security_insight.rb +182 -0
  527. data/lib/bella_baxter/generated/models/security_insight_response.rb +182 -0
  528. data/lib/bella_baxter/generated/models/security_insight_type.rb +14 -0
  529. data/lib/bella_baxter/generated/models/security_report_summary.rb +182 -0
  530. data/lib/bella_baxter/generated/models/security_risk_level.rb +11 -0
  531. data/lib/bella_baxter/generated/models/set_global_secret_provider_command.rb +82 -0
  532. data/lib/bella_baxter/generated/models/set_global_secret_provider_response.rb +122 -0
  533. data/lib/bella_baxter/generated/models/set_rotation_policy_request.rb +102 -0
  534. data/lib/bella_baxter/generated/models/share_content_response.rb +183 -0
  535. data/lib/bella_baxter/generated/models/share_list_item.rb +223 -0
  536. data/lib/bella_baxter/generated/models/share_meta_response.rb +223 -0
  537. data/lib/bella_baxter/generated/models/sort_object.rb +122 -0
  538. data/lib/bella_baxter/generated/models/ssh_ca_public_key_response.rb +142 -0
  539. data/lib/bella_baxter/generated/models/ssh_configure_response.rb +122 -0
  540. data/lib/bella_baxter/generated/models/ssh_create_role_request.rb +144 -0
  541. data/lib/bella_baxter/generated/models/ssh_log_entry.rb +483 -0
  542. data/lib/bella_baxter/generated/models/ssh_log_page.rb +142 -0
  543. data/lib/bella_baxter/generated/models/ssh_role_response.rb +142 -0
  544. data/lib/bella_baxter/generated/models/ssh_roles_response.rb +82 -0
  545. data/lib/bella_baxter/generated/models/ssh_sign_request.rb +142 -0
  546. data/lib/bella_baxter/generated/models/ssh_signed_cert_response.rb +142 -0
  547. data/lib/bella_baxter/generated/models/sso_config_response.rb +183 -0
  548. data/lib/bella_baxter/generated/models/sso_hint_response.rb +102 -0
  549. data/lib/bella_baxter/generated/models/sso_provider_type.rb +8 -0
  550. data/lib/bella_baxter/generated/models/sso_status_response.rb +222 -0
  551. data/lib/bella_baxter/generated/models/sso_status_response_config_member1.rb +62 -0
  552. data/lib/bella_baxter/generated/models/switch_tenant_response.rb +142 -0
  553. data/lib/bella_baxter/generated/models/tenant_access.rb +182 -0
  554. data/lib/bella_baxter/generated/models/tenant_access_response.rb +102 -0
  555. data/lib/bella_baxter/generated/models/tenant_invite_role.rb +9 -0
  556. data/lib/bella_baxter/generated/models/tenant_role.rb +10 -0
  557. data/lib/bella_baxter/generated/models/tenant_security_summary_response.rb +282 -0
  558. data/lib/bella_baxter/generated/models/tenant_status.rb +9 -0
  559. data/lib/bella_baxter/generated/models/tenant_usage_response.rb +222 -0
  560. data/lib/bella_baxter/generated/models/tenant_user_response.rb +203 -0
  561. data/lib/bella_baxter/generated/models/toggle_sso_enforcement_request.rb +82 -0
  562. data/lib/bella_baxter/generated/models/toggle_sso_enforcement_response.rb +102 -0
  563. data/lib/bella_baxter/generated/models/totp_code_response.rb +122 -0
  564. data/lib/bella_baxter/generated/models/totp_delete_response.rb +102 -0
  565. data/lib/bella_baxter/generated/models/totp_key_import_response.rb +162 -0
  566. data/lib/bella_baxter/generated/models/totp_key_list_item.rb +182 -0
  567. data/lib/bella_baxter/generated/models/trust_domain_response.rb +283 -0
  568. data/lib/bella_baxter/generated/models/unlock_share_command.rb +82 -0
  569. data/lib/bella_baxter/generated/models/update_api_key_request.rb +143 -0
  570. data/lib/bella_baxter/generated/models/update_api_key_status_request.rb +82 -0
  571. data/lib/bella_baxter/generated/models/update_current_user_request.rb +102 -0
  572. data/lib/bella_baxter/generated/models/update_environment_command.rb +102 -0
  573. data/lib/bella_baxter/generated/models/update_environment_user_role_request.rb +82 -0
  574. data/lib/bella_baxter/generated/models/update_group_command.rb +102 -0
  575. data/lib/bella_baxter/generated/models/update_lease_policy_command.rb +122 -0
  576. data/lib/bella_baxter/generated/models/update_notification_channel_request.rb +122 -0
  577. data/lib/bella_baxter/generated/models/update_notification_channel_request_configuration.rb +62 -0
  578. data/lib/bella_baxter/generated/models/update_project_request.rb +122 -0
  579. data/lib/bella_baxter/generated/models/update_provider_command.rb +122 -0
  580. data/lib/bella_baxter/generated/models/update_provider_command_configuration.rb +62 -0
  581. data/lib/bella_baxter/generated/models/update_secret_metadata_request.rb +142 -0
  582. data/lib/bella_baxter/generated/models/update_secret_metadata_request_tags.rb +62 -0
  583. data/lib/bella_baxter/generated/models/update_secret_request.rb +162 -0
  584. data/lib/bella_baxter/generated/models/update_secret_response.rb +122 -0
  585. data/lib/bella_baxter/generated/models/update_sso_config_request.rb +142 -0
  586. data/lib/bella_baxter/generated/models/update_trust_domain_command.rb +202 -0
  587. data/lib/bella_baxter/generated/models/update_user_permissions_request.rb +82 -0
  588. data/lib/bella_baxter/generated/models/update_webhook_request.rb +122 -0
  589. data/lib/bella_baxter/generated/models/upload_failure.rb +102 -0
  590. data/lib/bella_baxter/generated/models/upload_secrets_file_response.rb +122 -0
  591. data/lib/bella_baxter/generated/models/user_response.rb +223 -0
  592. data/lib/bella_baxter/generated/models/user_role_assignment.rb +102 -0
  593. data/lib/bella_baxter/generated/models/webhook_operation_response.rb +201 -0
  594. data/lib/bella_baxter/generated/models/webhook_operation_response_webhook_member1.rb +62 -0
  595. data/lib/bella_baxter/generated/models/webhook_response.rb +363 -0
  596. data/lib/bella_baxter/hmac_auth_provider.rb +56 -0
  597. data/lib/bella_baxter/models.rb +46 -0
  598. data/lib/bella_baxter/railtie.rb +44 -0
  599. data/lib/bella_baxter/version.rb +5 -0
  600. data/lib/bella_baxter/webhook_signature.rb +59 -0
  601. data/lib/bella_baxter.rb +81 -0
  602. 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