workos 8.0.1 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -2
  3. data/.github/workflows/docs.yml +2 -2
  4. data/.github/workflows/lint.yml +2 -2
  5. data/.github/workflows/release-please.yml +199 -4
  6. data/.github/workflows/release.yml +2 -2
  7. data/.last-synced-sha +1 -1
  8. data/.oagen-manifest.json +154 -43
  9. data/.release-please-manifest.json +1 -1
  10. data/.ruby-version +1 -1
  11. data/CHANGELOG.md +92 -0
  12. data/Gemfile.lock +6 -6
  13. data/lib/workos/api_keys/api_key.rb +3 -0
  14. data/lib/workos/api_keys/api_key_created.rb +5 -5
  15. data/lib/workos/api_keys/api_key_created_data.rb +3 -0
  16. data/lib/workos/api_keys/api_key_revoked.rb +5 -5
  17. data/lib/workos/{audit_logs/audit_log_export_json.rb → api_keys/api_key_updated.rb} +10 -10
  18. data/lib/workos/api_keys/api_key_updated_data.rb +49 -0
  19. data/lib/workos/{directory_sync/dsync_deactivated_data_domain.rb → api_keys/api_key_updated_data_owner.rb} +1 -1
  20. data/lib/workos/api_keys/api_key_updated_data_previous_attribute.rb +18 -0
  21. data/lib/workos/api_keys/create_organization_api_key.rb +5 -2
  22. data/lib/workos/api_keys/expire_api_key.rb +18 -0
  23. data/lib/workos/api_keys/organization_api_key.rb +3 -0
  24. data/lib/workos/api_keys/organization_api_key_with_value.rb +3 -0
  25. data/lib/workos/api_keys.rb +29 -1
  26. data/lib/workos/audit_logs/audit_log_action.rb +2 -7
  27. data/lib/workos/audit_logs/audit_log_export.rb +2 -7
  28. data/lib/workos/audit_logs/audit_log_schema.rb +11 -2
  29. data/lib/workos/{types/radar_type.rb → audit_logs/audit_log_schema_actor_input.rb} +1 -3
  30. data/lib/workos/audit_logs/audit_log_schema_input.rb +25 -0
  31. data/lib/workos/audit_logs/audit_log_schema_target.rb +16 -1
  32. data/lib/workos/audit_logs/audit_log_schema_target_input.rb +7 -0
  33. data/lib/workos/audit_logs.rb +16 -16
  34. data/lib/workos/authorization/permission_created.rb +5 -5
  35. data/lib/workos/authorization/permission_deleted.rb +5 -5
  36. data/lib/workos/authorization/permission_updated.rb +5 -5
  37. data/lib/workos/authorization/role_created.rb +5 -5
  38. data/lib/workos/authorization/role_deleted.rb +5 -5
  39. data/lib/workos/authorization/role_updated.rb +5 -5
  40. data/lib/workos/authorization.rb +38 -22
  41. data/lib/workos/base_client.rb +19 -2
  42. data/lib/workos/client.rb +6 -6
  43. data/lib/workos/connect/connect_application.rb +12 -0
  44. data/lib/workos/{audit_logs/audit_log_schema_json_target.rb → connect/connect_application_redirect_uri.rb} +7 -7
  45. data/lib/workos/connect/user_object.rb +3 -0
  46. data/lib/workos/connect.rb +1 -1
  47. data/lib/workos/directory_sync/dsync_activated.rb +5 -5
  48. data/lib/workos/directory_sync/dsync_deleted.rb +5 -5
  49. data/lib/workos/directory_sync/dsync_group_created.rb +5 -5
  50. data/lib/workos/directory_sync/dsync_group_deleted.rb +5 -5
  51. data/lib/workos/directory_sync/dsync_group_updated.rb +5 -5
  52. data/lib/workos/directory_sync/dsync_group_user_added.rb +5 -5
  53. data/lib/workos/directory_sync/dsync_group_user_removed.rb +5 -5
  54. data/lib/workos/directory_sync/dsync_token_created.rb +34 -0
  55. data/lib/workos/directory_sync/dsync_token_created_data.rb +34 -0
  56. data/lib/workos/directory_sync/dsync_token_revoked.rb +34 -0
  57. data/lib/workos/{audit_logs/audit_log_schema_json_actor.rb → directory_sync/dsync_token_revoked_data.rb} +1 -1
  58. data/lib/workos/directory_sync/dsync_user_created.rb +5 -5
  59. data/lib/workos/directory_sync/dsync_user_deleted.rb +5 -5
  60. data/lib/workos/directory_sync/dsync_user_updated.rb +5 -5
  61. data/lib/workos/directory_sync.rb +2 -2
  62. data/lib/workos/events.rb +1 -1
  63. data/lib/workos/feature_flags/flag_created.rb +5 -5
  64. data/lib/workos/feature_flags/flag_deleted.rb +5 -5
  65. data/lib/workos/feature_flags/flag_rule_updated.rb +5 -5
  66. data/lib/workos/feature_flags/flag_rule_updated_context_configured_target_organization.rb +1 -16
  67. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context_configured_target_organization.rb +1 -1
  68. data/lib/workos/feature_flags/flag_updated.rb +5 -5
  69. data/lib/workos/groups.rb +2 -2
  70. data/lib/workos/inflections.rb +3 -1
  71. data/lib/workos/organization_domains/organization_domain_created.rb +5 -5
  72. data/lib/workos/organization_domains/organization_domain_deleted.rb +5 -5
  73. data/lib/workos/organization_domains/organization_domain_updated.rb +5 -5
  74. data/lib/workos/organization_domains/organization_domain_verification_failed.rb +5 -5
  75. data/lib/workos/organization_domains/organization_domain_verified.rb +5 -5
  76. data/lib/workos/organization_membership_service.rb +273 -0
  77. data/lib/workos/organizations/audit_logs_retention.rb +2 -7
  78. data/lib/workos/organizations/organization_created.rb +5 -5
  79. data/lib/workos/organizations/organization_deleted.rb +5 -5
  80. data/lib/workos/organizations/organization_membership_created.rb +5 -5
  81. data/lib/workos/organizations/organization_membership_deleted.rb +5 -5
  82. data/lib/workos/organizations/organization_membership_updated.rb +5 -5
  83. data/lib/workos/organizations/organization_role_created.rb +5 -5
  84. data/lib/workos/organizations/organization_role_deleted.rb +5 -5
  85. data/lib/workos/organizations/organization_role_updated.rb +5 -5
  86. data/lib/workos/organizations/organization_updated.rb +5 -5
  87. data/lib/workos/organizations.rb +1 -1
  88. data/lib/workos/radar/radar_standalone_assess_request.rb +2 -8
  89. data/lib/workos/radar.rb +6 -12
  90. data/lib/workos/shared/connect_application_m2m.rb +46 -0
  91. data/lib/workos/shared/connect_application_oauth.rb +58 -0
  92. data/lib/workos/shared/connect_application_oauth_redirect_uris.rb +22 -0
  93. data/lib/workos/shared/error_response.rb +18 -0
  94. data/lib/workos/shared/group_created.rb +5 -5
  95. data/lib/workos/shared/group_deleted.rb +5 -5
  96. data/lib/workos/shared/group_member_added.rb +5 -5
  97. data/lib/workos/shared/group_member_removed.rb +5 -5
  98. data/lib/workos/shared/group_updated.rb +5 -5
  99. data/lib/workos/{directory_sync/dsync_deactivated_data.rb → shared/pipe_connected_account.rb} +15 -15
  100. data/lib/workos/{directory_sync/dsync_deactivated.rb → shared/pipes_connected_account_connected.rb} +7 -7
  101. data/lib/workos/shared/pipes_connected_account_disconnected.rb +34 -0
  102. data/lib/workos/shared/pipes_connected_account_reauthorization_needed.rb +34 -0
  103. data/lib/workos/shared/waitlist_user_approved.rb +5 -5
  104. data/lib/workos/shared/waitlist_user_created.rb +5 -5
  105. data/lib/workos/shared/waitlist_user_denied.rb +5 -5
  106. data/lib/workos/sso/connection_activated.rb +5 -5
  107. data/lib/workos/sso/connection_deactivated.rb +5 -5
  108. data/lib/workos/sso/connection_deleted.rb +5 -5
  109. data/lib/workos/sso/connection_saml_certificate_renewal_required.rb +5 -5
  110. data/lib/workos/sso/connection_saml_certificate_renewed.rb +5 -5
  111. data/lib/workos/types/audit_log_configuration_log_stream_type.rb +2 -1
  112. data/lib/workos/types/create_webhook_endpoint_events.rb +5 -1
  113. data/lib/workos/types/pipe_connected_account_state.rb +13 -0
  114. data/lib/workos/types/{radar_action.rb → radar_list_action.rb} +1 -1
  115. data/lib/workos/types/radar_list_type.rb +18 -0
  116. data/lib/workos/types/radar_standalone_assess_request_action.rb +1 -7
  117. data/lib/workos/types/radar_standalone_response_blocklist_type.rb +1 -10
  118. data/lib/workos/types/radar_standalone_response_control.rb +1 -4
  119. data/lib/workos/types/user_management_authentication_screen_hint.rb +1 -5
  120. data/{rbi/workos/types/request_options.rbi → lib/workos/types/vault_order.rb} +4 -3
  121. data/lib/workos/types/webhook_endpoint_status.rb +1 -5
  122. data/lib/workos/user_management/action_authentication_denied.rb +6 -6
  123. data/lib/workos/user_management/action_user_registration_denied.rb +6 -6
  124. data/lib/workos/user_management/authentication_email_verification_failed.rb +5 -5
  125. data/lib/workos/user_management/authentication_email_verification_succeeded.rb +5 -5
  126. data/lib/workos/user_management/authentication_magic_auth_failed.rb +5 -5
  127. data/lib/workos/user_management/authentication_magic_auth_succeeded.rb +5 -5
  128. data/lib/workos/user_management/authentication_mfa_failed.rb +5 -5
  129. data/lib/workos/user_management/authentication_mfa_succeeded.rb +5 -5
  130. data/lib/workos/user_management/authentication_oauth_failed.rb +5 -5
  131. data/lib/workos/user_management/authentication_oauth_succeeded.rb +5 -5
  132. data/lib/workos/user_management/authentication_passkey_failed.rb +5 -5
  133. data/lib/workos/user_management/authentication_passkey_succeeded.rb +5 -5
  134. data/lib/workos/user_management/authentication_password_failed.rb +5 -5
  135. data/lib/workos/user_management/authentication_password_succeeded.rb +5 -5
  136. data/lib/workos/user_management/authentication_radar_risk_detected.rb +5 -5
  137. data/lib/workos/user_management/authentication_sso_failed.rb +5 -5
  138. data/lib/workos/user_management/authentication_sso_started.rb +5 -5
  139. data/lib/workos/user_management/authentication_sso_succeeded.rb +5 -5
  140. data/lib/workos/user_management/authentication_sso_timed_out.rb +5 -5
  141. data/lib/workos/user_management/create_user.rb +3 -0
  142. data/lib/workos/user_management/create_user_api_key.rb +5 -2
  143. data/lib/workos/user_management/email_change_confirmation_user.rb +3 -0
  144. data/lib/workos/user_management/email_verification_created.rb +5 -5
  145. data/lib/workos/user_management/invitation_accepted.rb +5 -5
  146. data/lib/workos/user_management/invitation_created.rb +5 -5
  147. data/lib/workos/user_management/invitation_resent.rb +5 -5
  148. data/lib/workos/user_management/invitation_revoked.rb +5 -5
  149. data/lib/workos/user_management/magic_auth_created.rb +5 -5
  150. data/lib/workos/user_management/password_reset_created.rb +5 -5
  151. data/lib/workos/user_management/password_reset_succeeded.rb +5 -5
  152. data/lib/workos/user_management/revoke_session.rb +2 -6
  153. data/lib/workos/user_management/session_created.rb +5 -5
  154. data/lib/workos/user_management/session_revoked.rb +5 -5
  155. data/lib/workos/user_management/update_user.rb +3 -0
  156. data/lib/workos/user_management/user_api_key.rb +3 -0
  157. data/lib/workos/user_management/user_api_key_updated_data_owner.rb +7 -0
  158. data/lib/workos/user_management/user_api_key_with_value.rb +3 -0
  159. data/lib/workos/user_management/user_created.rb +5 -5
  160. data/lib/workos/user_management/user_deleted.rb +5 -5
  161. data/lib/workos/user_management/user_updated.rb +5 -5
  162. data/lib/workos/user_management.rb +16 -223
  163. data/lib/workos/vault/actor.rb +22 -0
  164. data/lib/workos/vault/create_data_key_request.rb +18 -0
  165. data/lib/workos/vault/create_data_key_response.rb +28 -0
  166. data/lib/workos/vault/create_object_request.rb +25 -0
  167. data/lib/workos/vault/decrypt_request.rb +18 -0
  168. data/lib/workos/vault/decrypt_response.rb +22 -0
  169. data/lib/workos/vault/delete_object_response.rb +22 -0
  170. data/lib/workos/vault/object_metadata.rb +37 -0
  171. data/lib/workos/{audit_logs/audit_log_action_json.rb → vault/object_summary.rb} +4 -10
  172. data/lib/workos/vault/object_version.rb +31 -0
  173. data/lib/workos/vault/object_without_value.rb +25 -0
  174. data/lib/workos/vault/rekey_request.rb +22 -0
  175. data/lib/workos/vault/update_object_request.rb +22 -0
  176. data/lib/workos/vault/vault_byok_key_deleted.rb +5 -5
  177. data/lib/workos/vault/vault_byok_key_verification_completed.rb +5 -5
  178. data/lib/workos/vault/vault_data_created.rb +5 -5
  179. data/lib/workos/vault/vault_data_deleted.rb +5 -5
  180. data/lib/workos/vault/vault_data_read.rb +5 -5
  181. data/lib/workos/vault/vault_data_updated.rb +5 -5
  182. data/lib/workos/vault/vault_dek_decrypted.rb +5 -5
  183. data/lib/workos/vault/vault_dek_read.rb +5 -5
  184. data/lib/workos/vault/vault_kek_created.rb +5 -5
  185. data/lib/workos/vault/vault_metadata_read.rb +5 -5
  186. data/lib/workos/vault/vault_names_listed.rb +5 -5
  187. data/lib/workos/vault/vault_object.rb +28 -0
  188. data/lib/workos/vault/version_list_response.rb +22 -0
  189. data/lib/workos/vault.rb +273 -139
  190. data/lib/workos/version.rb +1 -1
  191. data/lib/workos/webhooks/webhook_endpoint.rb +2 -7
  192. data/lib/workos/webhooks.rb +8 -9
  193. data/lib/workos.rb +1 -0
  194. data/rbi/workos/action_authentication_denied.rbi +10 -10
  195. data/rbi/workos/action_user_registration_denied.rbi +10 -10
  196. data/rbi/workos/actor.rbi +30 -0
  197. data/rbi/workos/api_key.rbi +6 -0
  198. data/rbi/workos/api_key_created.rbi +6 -6
  199. data/rbi/workos/api_key_created_data.rbi +6 -0
  200. data/rbi/workos/api_key_revoked.rbi +6 -6
  201. data/rbi/workos/api_key_revoked_data.rbi +6 -0
  202. data/rbi/workos/{dsync_deactivated.rbi → api_key_updated.rbi} +9 -9
  203. data/rbi/workos/api_key_updated_data.rbi +84 -0
  204. data/rbi/workos/api_key_updated_data_owner.rbi +30 -0
  205. data/rbi/workos/{audit_logs_retention_json.rbi → api_key_updated_data_previous_attribute.rbi} +5 -5
  206. data/rbi/workos/api_keys.rbi +11 -1
  207. data/rbi/workos/audit_log_action.rbi +1 -0
  208. data/rbi/workos/audit_log_export.rbi +1 -0
  209. data/rbi/workos/audit_log_schema.rbi +18 -0
  210. data/rbi/workos/{audit_log_schema_json_actor.rbi → audit_log_schema_actor_input.rbi} +1 -1
  211. data/rbi/workos/audit_log_schema_input.rbi +36 -0
  212. data/rbi/workos/{audit_log_schema_json_target.rbi → audit_log_schema_target_input.rbi} +1 -1
  213. data/rbi/workos/audit_logs.rbi +9 -9
  214. data/rbi/workos/audit_logs_retention.rbi +1 -0
  215. data/rbi/workos/authentication_email_verification_failed.rbi +6 -6
  216. data/rbi/workos/authentication_email_verification_succeeded.rbi +6 -6
  217. data/rbi/workos/authentication_magic_auth_failed.rbi +6 -6
  218. data/rbi/workos/authentication_magic_auth_succeeded.rbi +6 -6
  219. data/rbi/workos/authentication_mfa_failed.rbi +6 -6
  220. data/rbi/workos/authentication_mfa_succeeded.rbi +6 -6
  221. data/rbi/workos/authentication_oauth_failed.rbi +6 -6
  222. data/rbi/workos/authentication_oauth_succeeded.rbi +6 -6
  223. data/rbi/workos/authentication_passkey_failed.rbi +6 -6
  224. data/rbi/workos/authentication_passkey_succeeded.rbi +6 -6
  225. data/rbi/workos/authentication_password_failed.rbi +6 -6
  226. data/rbi/workos/authentication_password_succeeded.rbi +6 -6
  227. data/rbi/workos/authentication_radar_risk_detected.rbi +6 -6
  228. data/rbi/workos/authentication_sso_failed.rbi +6 -6
  229. data/rbi/workos/authentication_sso_started.rbi +6 -6
  230. data/rbi/workos/authentication_sso_succeeded.rbi +6 -6
  231. data/rbi/workos/authentication_sso_timed_out.rbi +6 -6
  232. data/rbi/workos/authorization.rbi +9 -5
  233. data/rbi/workos/client.rbi +6 -3
  234. data/rbi/workos/connect_application.rbi +0 -12
  235. data/rbi/workos/{dsync_deactivated_data.rbi → connect_application_m2m.rbi} +19 -19
  236. data/rbi/workos/connect_application_oauth.rbi +102 -0
  237. data/rbi/workos/connect_application_oauth_redirect_uris.rbi +30 -0
  238. data/rbi/workos/connection_activated.rbi +6 -6
  239. data/rbi/workos/connection_deactivated.rbi +6 -6
  240. data/rbi/workos/connection_deleted.rbi +6 -6
  241. data/rbi/workos/connection_saml_certificate_renewal_required.rbi +6 -6
  242. data/rbi/workos/connection_saml_certificate_renewed.rbi +6 -6
  243. data/rbi/workos/create_data_key_request.rbi +24 -0
  244. data/rbi/workos/create_data_key_response.rbi +42 -0
  245. data/rbi/workos/create_object_request.rbi +36 -0
  246. data/rbi/workos/create_organization_api_key.rbi +6 -0
  247. data/rbi/workos/create_user.rbi +6 -0
  248. data/rbi/workos/create_user_api_key.rbi +6 -0
  249. data/rbi/workos/decrypt_request.rbi +24 -0
  250. data/rbi/workos/decrypt_response.rbi +30 -0
  251. data/rbi/workos/delete_object_response.rbi +30 -0
  252. data/rbi/workos/dsync_activated.rbi +6 -6
  253. data/rbi/workos/dsync_deleted.rbi +6 -6
  254. data/rbi/workos/dsync_group_created.rbi +6 -6
  255. data/rbi/workos/dsync_group_deleted.rbi +6 -6
  256. data/rbi/workos/dsync_group_updated.rbi +6 -6
  257. data/rbi/workos/dsync_group_user_added.rbi +6 -6
  258. data/rbi/workos/dsync_group_user_removed.rbi +6 -6
  259. data/rbi/workos/dsync_token_created.rbi +54 -0
  260. data/rbi/workos/{audit_log_export_json.rbi → dsync_token_created_data.rbi} +9 -9
  261. data/rbi/workos/dsync_token_revoked.rbi +54 -0
  262. data/rbi/workos/{audit_log_action_json.rbi → dsync_token_revoked_data.rbi} +17 -11
  263. data/rbi/workos/dsync_user_created.rbi +6 -6
  264. data/rbi/workos/dsync_user_deleted.rbi +6 -6
  265. data/rbi/workos/dsync_user_updated.rbi +6 -6
  266. data/rbi/workos/email_change_confirmation_user.rbi +6 -0
  267. data/rbi/workos/email_verification_created.rbi +6 -6
  268. data/rbi/workos/error_response.rbi +24 -0
  269. data/rbi/workos/expire_api_key.rbi +24 -0
  270. data/rbi/workos/flag_created.rbi +6 -6
  271. data/rbi/workos/flag_deleted.rbi +6 -6
  272. data/rbi/workos/flag_rule_updated.rbi +6 -6
  273. data/rbi/workos/flag_updated.rbi +6 -6
  274. data/rbi/workos/group_created.rbi +6 -6
  275. data/rbi/workos/group_deleted.rbi +6 -6
  276. data/rbi/workos/group_member_added.rbi +6 -6
  277. data/rbi/workos/group_member_removed.rbi +6 -6
  278. data/rbi/workos/group_updated.rbi +6 -6
  279. data/rbi/workos/invitation_accepted.rbi +6 -6
  280. data/rbi/workos/invitation_created.rbi +6 -6
  281. data/rbi/workos/invitation_resent.rbi +6 -6
  282. data/rbi/workos/invitation_revoked.rbi +6 -6
  283. data/rbi/workos/magic_auth_created.rbi +6 -6
  284. data/rbi/workos/object_metadata.rbi +60 -0
  285. data/rbi/workos/object_summary.rbi +36 -0
  286. data/rbi/workos/object_version.rbi +48 -0
  287. data/rbi/workos/object_without_value.rbi +36 -0
  288. data/rbi/workos/organization_api_key.rbi +6 -0
  289. data/rbi/workos/organization_api_key_with_value.rbi +6 -0
  290. data/rbi/workos/organization_created.rbi +6 -6
  291. data/rbi/workos/organization_deleted.rbi +6 -6
  292. data/rbi/workos/organization_domain_created.rbi +6 -6
  293. data/rbi/workos/organization_domain_deleted.rbi +6 -6
  294. data/rbi/workos/organization_domain_updated.rbi +6 -6
  295. data/rbi/workos/organization_domain_verification_failed.rbi +6 -6
  296. data/rbi/workos/organization_domain_verified.rbi +6 -6
  297. data/rbi/workos/organization_membership_created.rbi +6 -6
  298. data/rbi/workos/organization_membership_deleted.rbi +6 -6
  299. data/rbi/workos/organization_membership_service.rbi +114 -0
  300. data/rbi/workos/organization_membership_updated.rbi +6 -6
  301. data/rbi/workos/organization_role_created.rbi +6 -6
  302. data/rbi/workos/organization_role_deleted.rbi +6 -6
  303. data/rbi/workos/organization_role_updated.rbi +6 -6
  304. data/rbi/workos/organization_updated.rbi +6 -6
  305. data/rbi/workos/password_reset_created.rbi +6 -6
  306. data/rbi/workos/password_reset_succeeded.rbi +6 -6
  307. data/rbi/workos/permission_created.rbi +6 -6
  308. data/rbi/workos/permission_deleted.rbi +6 -6
  309. data/rbi/workos/permission_updated.rbi +6 -6
  310. data/rbi/workos/{webhook_endpoint_json.rbi → pipe_connected_account.rbi} +23 -11
  311. data/rbi/workos/pipes_connected_account_connected.rbi +54 -0
  312. data/rbi/workos/pipes_connected_account_disconnected.rbi +54 -0
  313. data/rbi/workos/pipes_connected_account_reauthorization_needed.rbi +54 -0
  314. data/rbi/workos/radar.rbi +1 -3
  315. data/rbi/workos/radar_standalone_assess_request.rbi +0 -12
  316. data/rbi/workos/rekey_request.rbi +30 -0
  317. data/rbi/workos/revoke_session.rbi +0 -6
  318. data/rbi/workos/role_created.rbi +6 -6
  319. data/rbi/workos/role_deleted.rbi +6 -6
  320. data/rbi/workos/role_updated.rbi +6 -6
  321. data/rbi/workos/session_created.rbi +6 -6
  322. data/rbi/workos/session_manager.rbi +1 -1
  323. data/rbi/workos/session_revoked.rbi +6 -6
  324. data/rbi/workos/update_object_request.rbi +30 -0
  325. data/rbi/workos/update_user.rbi +6 -0
  326. data/rbi/workos/user.rbi +6 -0
  327. data/rbi/workos/user_api_key.rbi +6 -0
  328. data/rbi/workos/{dsync_deactivated_data_domain.rbi → user_api_key_updated_data_owner.rbi} +5 -5
  329. data/rbi/workos/user_api_key_with_value.rbi +6 -0
  330. data/rbi/workos/user_created.rbi +6 -6
  331. data/rbi/workos/user_deleted.rbi +6 -6
  332. data/rbi/workos/user_management.rbi +7 -94
  333. data/rbi/workos/user_object.rbi +6 -0
  334. data/rbi/workos/user_updated.rbi +6 -6
  335. data/rbi/workos/vault.rbi +70 -95
  336. data/rbi/workos/vault_byok_key_deleted.rbi +6 -6
  337. data/rbi/workos/vault_byok_key_verification_completed.rbi +6 -6
  338. data/rbi/workos/vault_data_created.rbi +6 -6
  339. data/rbi/workos/vault_data_deleted.rbi +6 -6
  340. data/rbi/workos/vault_data_read.rbi +6 -6
  341. data/rbi/workos/vault_data_updated.rbi +6 -6
  342. data/rbi/workos/vault_dek_decrypted.rbi +6 -6
  343. data/rbi/workos/vault_dek_read.rbi +6 -6
  344. data/rbi/workos/vault_kek_created.rbi +6 -6
  345. data/rbi/workos/vault_metadata_read.rbi +6 -6
  346. data/rbi/workos/vault_names_listed.rbi +6 -6
  347. data/rbi/workos/vault_object.rbi +42 -0
  348. data/rbi/workos/waitlist_user_approved.rbi +6 -6
  349. data/rbi/workos/waitlist_user_created.rbi +6 -6
  350. data/rbi/workos/waitlist_user_denied.rbi +6 -6
  351. data/rbi/workos/webhook_endpoint.rbi +1 -0
  352. data/rbi/workos/webhooks.rbi +2 -2
  353. data/renovate.json +1 -61
  354. data/test/workos/test_api_keys.rb +9 -1
  355. data/test/workos/test_base_client.rb +64 -0
  356. data/test/workos/test_model_round_trip.rb +740 -261
  357. data/test/workos/test_organization_membership_service.rb +107 -0
  358. data/test/workos/test_user_management.rb +0 -74
  359. data/test/workos/test_vault.rb +91 -88
  360. metadata +87 -54
  361. data/lib/workos/audit_logs/audit_log_schema_json.rb +0 -34
  362. data/lib/workos/organizations/audit_logs_retention_json.rb +0 -18
  363. data/lib/workos/types/audit_log_export_json_state.rb +0 -14
  364. data/lib/workos/types/dsync_deactivated_data_state.rb +0 -9
  365. data/lib/workos/types/dsync_deactivated_data_type.rb +0 -9
  366. data/lib/workos/types/webhook_endpoint_json_status.rb +0 -9
  367. data/lib/workos/user_management_organization_membership_groups.rb +0 -60
  368. data/lib/workos/webhooks/webhook_endpoint_json.rb +0 -40
  369. data/rbi/workos/actions.rbi +0 -48
  370. data/rbi/workos/audit_log_schema_json.rbi +0 -54
  371. data/rbi/workos/base_client.rbi +0 -132
  372. data/rbi/workos/configuration.rbi +0 -68
  373. data/rbi/workos/encryptors/aes_gcm.rbi +0 -19
  374. data/rbi/workos/errors.rbi +0 -43
  375. data/rbi/workos/hash_provider.rbi +0 -18
  376. data/rbi/workos/passwordless.rbi +0 -47
  377. data/rbi/workos/public_client.rbi +0 -12
  378. data/rbi/workos/session.rbi +0 -43
  379. data/rbi/workos/types/api_response.rbi +0 -29
  380. data/rbi/workos/types/base_model.rbi +0 -22
  381. data/rbi/workos/types/list_struct.rbi +0 -89
  382. data/rbi/workos/user_management_organization_membership_groups.rbi +0 -25
  383. data/rbi/workos/util.rbi +0 -12
  384. data/test/workos/test_user_management_organization_membership_groups.rb +0 -33
  385. /data/lib/workos/{authorization → groups}/user_organization_membership_base_list_data.rb +0 -0
  386. /data/lib/workos/{user_management → organization_membership}/create_user_organization_membership.rb +0 -0
  387. /data/lib/workos/{user_management → organization_membership}/organization_membership.rb +0 -0
  388. /data/lib/workos/{user_management → organization_membership}/update_user_organization_membership.rb +0 -0
  389. /data/lib/workos/{user_management → organization_membership}/user_organization_membership.rb +0 -0
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ require "test_helper"
6
+
7
+ class OrganizationMembershipServiceTest < Minitest::Test
8
+ include FixtureHelper
9
+
10
+ def setup
11
+ @client = WorkOS::Client.new(api_key: "sk_test_123")
12
+ end
13
+
14
+ def test_list_organization_memberships_returns_expected_result
15
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
16
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
17
+ result = @client.organization_membership.list_organization_memberships
18
+ assert_kind_of WorkOS::Types::ListStruct, result
19
+ end
20
+
21
+ def test_create_organization_membership_returns_expected_result
22
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
23
+ .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slug" => "stub"))
24
+ .to_return(body: "{}", status: 200)
25
+ result = @client.organization_membership.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub"))
26
+ refute_nil result
27
+ end
28
+
29
+ def test_create_organization_membership_with_role_multiple_returns_expected_result
30
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
31
+ .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slugs" => ["stub"]))
32
+ .to_return(body: "{}", status: 200)
33
+ result = @client.organization_membership.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::OrganizationMembershipService::RoleMultiple.new(role_slugs: ["stub"]))
34
+ refute_nil result
35
+ end
36
+
37
+ def test_get_organization_membership_returns_expected_result
38
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
39
+ .to_return(body: "{}", status: 200)
40
+ result = @client.organization_membership.get_organization_membership(id: "stub")
41
+ refute_nil result
42
+ end
43
+
44
+ def test_update_organization_membership_returns_expected_result
45
+ stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
46
+ .with(body: hash_including("role_slug" => "stub"))
47
+ .to_return(body: "{}", status: 200)
48
+ result = @client.organization_membership.update_organization_membership(id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub"))
49
+ refute_nil result
50
+ end
51
+
52
+ def test_update_organization_membership_with_role_multiple_returns_expected_result
53
+ stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
54
+ .with(body: hash_including("role_slugs" => ["stub"]))
55
+ .to_return(body: "{}", status: 200)
56
+ result = @client.organization_membership.update_organization_membership(id: "stub", role: WorkOS::OrganizationMembershipService::RoleMultiple.new(role_slugs: ["stub"]))
57
+ refute_nil result
58
+ end
59
+
60
+ def test_delete_organization_membership_returns_expected_result
61
+ stub_request(:delete, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
62
+ .to_return(body: "{}", status: 200)
63
+ result = @client.organization_membership.delete_organization_membership(id: "stub")
64
+ assert_nil result
65
+ end
66
+
67
+ def test_deactivate_organization_membership_returns_expected_result
68
+ stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)})
69
+ .to_return(body: "{}", status: 200)
70
+ result = @client.organization_membership.deactivate_organization_membership(id: "stub")
71
+ refute_nil result
72
+ end
73
+
74
+ def test_reactivate_organization_membership_returns_expected_result
75
+ stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)})
76
+ .to_return(body: "{}", status: 200)
77
+ result = @client.organization_membership.reactivate_organization_membership(id: "stub")
78
+ refute_nil result
79
+ end
80
+
81
+ def test_list_organization_membership_groups_returns_expected_result
82
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/groups(\?|\z)})
83
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
84
+ result = @client.organization_membership.list_organization_membership_groups(om_id: "stub")
85
+ assert_kind_of WorkOS::Types::ListStruct, result
86
+ end
87
+
88
+ # Parameterized authentication error tests (one per endpoint).
89
+ [
90
+ {name: :list_organization_memberships, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}},
91
+ {name: :create_organization_membership, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}, args: {user_id: "stub", organization_id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub")}},
92
+ {name: :get_organization_membership, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}},
93
+ {name: :update_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub")}},
94
+ {name: :delete_organization_membership, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}},
95
+ {name: :deactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}, args: {id: "stub"}},
96
+ {name: :reactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}, args: {id: "stub"}},
97
+ {name: :list_organization_membership_groups, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/groups(\?|\z)}, args: {om_id: "stub"}}
98
+ ].each do |spec|
99
+ define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do
100
+ stub_request(spec[:verb], spec[:url])
101
+ .to_return(body: '{"message": "Unauthorized"}', status: 401)
102
+ assert_raises(WorkOS::AuthenticationError) do
103
+ @client.organization_membership.send(spec[:name], **(spec[:args] || {}))
104
+ end
105
+ end
106
+ end
107
+ end
@@ -373,73 +373,6 @@ class UserManagementTest < Minitest::Test
373
373
  refute_nil result
374
374
  end
375
375
 
376
- def test_list_organization_memberships_returns_expected_result
377
- stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
378
- .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
379
- result = @client.user_management.list_organization_memberships
380
- assert_kind_of WorkOS::Types::ListStruct, result
381
- end
382
-
383
- def test_create_organization_membership_returns_expected_result
384
- stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
385
- .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slug" => "stub"))
386
- .to_return(body: "{}", status: 200)
387
- result = @client.user_management.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub"))
388
- refute_nil result
389
- end
390
-
391
- def test_create_organization_membership_with_role_multiple_returns_expected_result
392
- stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
393
- .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slugs" => ["stub"]))
394
- .to_return(body: "{}", status: 200)
395
- result = @client.user_management.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleMultiple.new(role_slugs: ["stub"]))
396
- refute_nil result
397
- end
398
-
399
- def test_get_organization_membership_returns_expected_result
400
- stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
401
- .to_return(body: "{}", status: 200)
402
- result = @client.user_management.get_organization_membership(id: "stub")
403
- refute_nil result
404
- end
405
-
406
- def test_update_organization_membership_returns_expected_result
407
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
408
- .with(body: hash_including("role_slug" => "stub"))
409
- .to_return(body: "{}", status: 200)
410
- result = @client.user_management.update_organization_membership(id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub"))
411
- refute_nil result
412
- end
413
-
414
- def test_update_organization_membership_with_role_multiple_returns_expected_result
415
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
416
- .with(body: hash_including("role_slugs" => ["stub"]))
417
- .to_return(body: "{}", status: 200)
418
- result = @client.user_management.update_organization_membership(id: "stub", role: WorkOS::UserManagement::RoleMultiple.new(role_slugs: ["stub"]))
419
- refute_nil result
420
- end
421
-
422
- def test_delete_organization_membership_returns_expected_result
423
- stub_request(:delete, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
424
- .to_return(body: "{}", status: 200)
425
- result = @client.user_management.delete_organization_membership(id: "stub")
426
- assert_nil result
427
- end
428
-
429
- def test_deactivate_organization_membership_returns_expected_result
430
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)})
431
- .to_return(body: "{}", status: 200)
432
- result = @client.user_management.deactivate_organization_membership(id: "stub")
433
- refute_nil result
434
- end
435
-
436
- def test_reactivate_organization_membership_returns_expected_result
437
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)})
438
- .to_return(body: "{}", status: 200)
439
- result = @client.user_management.reactivate_organization_membership(id: "stub")
440
- refute_nil result
441
- end
442
-
443
376
  def test_create_redirect_uri_returns_expected_result
444
377
  stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)})
445
378
  .to_return(body: "{}", status: 200)
@@ -509,13 +442,6 @@ class UserManagementTest < Minitest::Test
509
442
  {name: :update_jwt_template, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}, args: {content: "stub"}},
510
443
  {name: :create_magic_auth, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/magic_auth(\?|\z)}, args: {email: "stub"}},
511
444
  {name: :get_magic_auth, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/magic_auth/stub(\?|\z)}, args: {id: "stub"}},
512
- {name: :list_organization_memberships, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}},
513
- {name: :create_organization_membership, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}, args: {user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub")}},
514
- {name: :get_organization_membership, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}},
515
- {name: :update_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub")}},
516
- {name: :delete_organization_membership, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}},
517
- {name: :deactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}, args: {id: "stub"}},
518
- {name: :reactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}, args: {id: "stub"}},
519
445
  {name: :create_redirect_uri, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)}, args: {uri: "stub"}},
520
446
  {name: :list_user_authorized_applications, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/authorized_applications(\?|\z)}, args: {user_id: "stub"}},
521
447
  {name: :delete_user_authorized_application, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/authorized_applications/stub(\?|\z)}, args: {application_id: "stub", user_id: "stub"}},
@@ -1,119 +1,117 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # @oagen-ignore-file
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
4
5
  require "test_helper"
5
- require "base64"
6
6
 
7
7
  class VaultTest < Minitest::Test
8
+ include FixtureHelper
9
+
8
10
  def setup
9
- @client = WorkOS::Client.new(api_key: "sk_test_vault")
11
+ @client = WorkOS::Client.new(api_key: "sk_test_123")
10
12
  end
11
13
 
12
- def test_vault_accessor_exists
13
- assert_kind_of WorkOS::Vault, @client.vault
14
+ def test_create_data_key_returns_expected_result
15
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/vault/v1/keys/data-key(\?|\z)})
16
+ .to_return(body: "{}", status: 200)
17
+ result = @client.vault.create_data_key(context: {})
18
+ refute_nil result
14
19
  end
15
20
 
16
- def test_create_object_returns_metadata
17
- body = {
18
- "id" => "obj_01", "key_id" => "key_01", "version_id" => "v1",
19
- "context" => {"tenant" => "t1"}, "environment_id" => "env_1",
20
- "updated_at" => "2026-04-15T00:00:00Z",
21
- "updated_by" => {"id" => "u1", "name" => "alice"}
22
- }
23
- stub_request(:post, "https://api.workos.com/vault/v1/kv")
24
- .with(body: hash_including("name" => "secret", "value" => "hello"))
25
- .to_return(status: 200, body: body.to_json)
26
-
27
- meta = @client.vault.create_object(name: "secret", value: "hello", key_context: {"tenant" => "t1"})
28
- assert_equal "obj_01", meta.id
29
- assert_equal "v1", meta.version_id
30
- assert_equal "alice", meta.updated_by.name
21
+ def test_create_decrypt_returns_expected_result
22
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/vault/v1/keys/decrypt(\?|\z)})
23
+ .to_return(body: "{}", status: 200)
24
+ result = @client.vault.create_decrypt(keys: "stub")
25
+ refute_nil result
31
26
  end
32
27
 
33
- def test_read_object_returns_decrypted_value
34
- body = {
35
- "id" => "obj_01", "name" => "secret", "value" => "hello",
36
- "metadata" => {
37
- "id" => "obj_01", "key_id" => "k", "version_id" => "v",
38
- "context" => {}, "environment_id" => "env",
39
- "updated_at" => "x", "updated_by" => {"id" => "u", "name" => "n"}
40
- }
41
- }
42
- stub_request(:get, "https://api.workos.com/vault/v1/kv/obj_01")
43
- .to_return(status: 200, body: body.to_json)
44
-
45
- obj = @client.vault.read_object(object_id: "obj_01")
46
- assert_equal "hello", obj.value
47
- assert_equal "secret", obj.name
28
+ def test_create_rekey_returns_expected_result
29
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/vault/v1/keys/rekey(\?|\z)})
30
+ .to_return(body: "{}", status: 200)
31
+ result = @client.vault.create_rekey(context: {}, encrypted_keys: "stub")
32
+ refute_nil result
48
33
  end
49
34
 
50
- def test_list_objects_returns_digests
51
- body = {"data" => [{"id" => "o1", "name" => "a", "updated_at" => "x"}, {"id" => "o2", "name" => "b", "updated_at" => "y"}]}
52
- stub_request(:get, /vault\/v1\/kv\?/).to_return(status: 200, body: body.to_json)
53
-
54
- digests = @client.vault.list_objects(limit: 10)
55
- assert_equal 2, digests.size
56
- assert_equal "o1", digests.first.id
35
+ def test_list_kv_returns_expected_result
36
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/vault/v1/kv(\?|\z)})
37
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
38
+ result = @client.vault.list_kv
39
+ assert_kind_of WorkOS::Types::ListStruct, result
57
40
  end
58
41
 
59
- def test_list_object_versions
60
- body = {"data" => [{"id" => "v1", "created_at" => "x", "current_version" => true}]}
61
- stub_request(:get, "https://api.workos.com/vault/v1/kv/obj_1/versions").to_return(status: 200, body: body.to_json)
62
-
63
- versions = @client.vault.list_object_versions(object_id: "obj_1")
64
- assert_equal 1, versions.size
65
- assert versions.first.current_version
42
+ def test_create_kv_returns_expected_result
43
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/vault/v1/kv(\?|\z)})
44
+ .to_return(body: "{}", status: 200)
45
+ result = @client.vault.create_kv(key_context: {}, name: "stub", value: "stub")
46
+ refute_nil result
66
47
  end
67
48
 
68
- def test_get_object_metadata
69
- body = {"id" => "obj_1", "name" => "n", "metadata" => {
70
- "id" => "obj_1", "key_id" => "k", "version_id" => "v",
71
- "context" => {}, "environment_id" => "env",
72
- "updated_at" => "x", "updated_by" => {"id" => "u", "name" => "n"}
73
- }}
74
- stub_request(:get, "https://api.workos.com/vault/v1/kv/obj_1/metadata").to_return(status: 200, body: body.to_json)
75
-
76
- obj = @client.vault.get_object_metadata(object_id: "obj_1")
77
- assert_nil obj.value
78
- assert_equal "obj_1", obj.metadata.id
49
+ def test_get_name_returns_expected_result
50
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/vault/v1/kv/name/stub(\?|\z)})
51
+ .to_return(body: "{}", status: 200)
52
+ result = @client.vault.get_name(name: "stub")
53
+ refute_nil result
79
54
  end
80
55
 
81
- def test_delete_object_returns_nil
82
- stub_request(:delete, "https://api.workos.com/vault/v1/kv/obj_1").to_return(status: 200, body: "")
83
- assert_nil @client.vault.delete_object(object_id: "obj_1")
56
+ def test_get_kv_returns_expected_result
57
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub(\?|\z)})
58
+ .to_return(body: "{}", status: 200)
59
+ result = @client.vault.get_kv(id: "stub")
60
+ refute_nil result
84
61
  end
85
62
 
86
- def test_update_object_with_version_check
87
- body = {"id" => "obj_1", "name" => "n", "value" => "newval", "metadata" => nil}
88
- stub_request(:put, "https://api.workos.com/vault/v1/kv/obj_1")
89
- .with(body: hash_including("value" => "newval", "version_check" => "v1"))
90
- .to_return(status: 200, body: body.to_json)
91
-
92
- obj = @client.vault.update_object(object_id: "obj_1", value: "newval", version_check: "v1")
93
- assert_equal "newval", obj.value
63
+ def test_update_kv_returns_expected_result
64
+ stub_request(:put, %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub(\?|\z)})
65
+ .to_return(body: "{}", status: 200)
66
+ result = @client.vault.update_kv(id: "stub", value: "stub")
67
+ refute_nil result
94
68
  end
95
69
 
96
- def test_create_data_key
97
- body = {"context" => {"t" => "1"}, "id" => "dek_1", "data_key" => Base64.strict_encode64("k" * 32), "encrypted_keys" => Base64.strict_encode64("blob")}
98
- stub_request(:post, "https://api.workos.com/vault/v1/keys/data-key")
99
- .with(body: hash_including("context" => {"t" => "1"}))
100
- .to_return(status: 200, body: body.to_json)
70
+ def test_delete_kv_returns_expected_result
71
+ stub_request(:delete, %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub(\?|\z)})
72
+ .to_return(body: "{}", status: 200)
73
+ result = @client.vault.delete_kv(id: "stub")
74
+ refute_nil result
75
+ end
101
76
 
102
- pair = @client.vault.create_data_key(key_context: {"t" => "1"})
103
- assert_equal "dek_1", pair.data_key.id
104
- assert_equal "blob", Base64.decode64(pair.encrypted_keys)
77
+ def test_list_kv_metadata_returns_expected_result
78
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub/metadata(\?|\z)})
79
+ .to_return(body: "{}", status: 200)
80
+ result = @client.vault.list_kv_metadata(id: "stub")
81
+ refute_nil result
105
82
  end
106
83
 
107
- def test_decrypt_data_key
108
- body = {"id" => "dek_1", "data_key" => Base64.strict_encode64("k" * 32)}
109
- stub_request(:post, "https://api.workos.com/vault/v1/keys/decrypt")
110
- .with(body: hash_including("keys" => "abc"))
111
- .to_return(status: 200, body: body.to_json)
84
+ def test_list_kv_versions_returns_expected_result
85
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub/versions(\?|\z)})
86
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
87
+ result = @client.vault.list_kv_versions(id: "stub")
88
+ assert_kind_of WorkOS::Types::ListStruct, result
89
+ end
112
90
 
113
- dk = @client.vault.decrypt_data_key(keys: "abc")
114
- assert_equal "dek_1", dk.id
91
+ # Parameterized authentication error tests (one per endpoint).
92
+ [
93
+ {name: :create_data_key, verb: :post, url: %r{\Ahttps://api\.workos\.com/vault/v1/keys/data-key(\?|\z)}, args: {context: {}}},
94
+ {name: :create_decrypt, verb: :post, url: %r{\Ahttps://api\.workos\.com/vault/v1/keys/decrypt(\?|\z)}, args: {keys: "stub"}},
95
+ {name: :create_rekey, verb: :post, url: %r{\Ahttps://api\.workos\.com/vault/v1/keys/rekey(\?|\z)}, args: {context: {}, encrypted_keys: "stub"}},
96
+ {name: :list_kv, verb: :get, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv(\?|\z)}},
97
+ {name: :create_kv, verb: :post, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv(\?|\z)}, args: {key_context: {}, name: "stub", value: "stub"}},
98
+ {name: :get_name, verb: :get, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv/name/stub(\?|\z)}, args: {name: "stub"}},
99
+ {name: :get_kv, verb: :get, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub(\?|\z)}, args: {id: "stub"}},
100
+ {name: :update_kv, verb: :put, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub(\?|\z)}, args: {id: "stub", value: "stub"}},
101
+ {name: :delete_kv, verb: :delete, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub(\?|\z)}, args: {id: "stub"}},
102
+ {name: :list_kv_metadata, verb: :get, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub/metadata(\?|\z)}, args: {id: "stub"}},
103
+ {name: :list_kv_versions, verb: :get, url: %r{\Ahttps://api\.workos\.com/vault/v1/kv/stub/versions(\?|\z)}, args: {id: "stub"}}
104
+ ].each do |spec|
105
+ define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do
106
+ stub_request(spec[:verb], spec[:url])
107
+ .to_return(body: '{"message": "Unauthorized"}', status: 401)
108
+ assert_raises(WorkOS::AuthenticationError) do
109
+ @client.vault.send(spec[:name], **(spec[:args] || {}))
110
+ end
111
+ end
115
112
  end
116
113
 
114
+ # @oagen-ignore-start — client-side AES-GCM encrypt/decrypt tests (hand-maintained)
117
115
  def test_local_encrypt_then_decrypt_roundtrip
118
116
  plaintext_key = "k" * 32
119
117
  create_resp = {"context" => {"t" => "1"}, "id" => "dek_1",
@@ -125,7 +123,7 @@ class VaultTest < Minitest::Test
125
123
  stub_request(:post, "https://api.workos.com/vault/v1/keys/decrypt").to_return(status: 200, body: decrypt_resp.to_json)
126
124
 
127
125
  payload = "the quick brown fox"
128
- encrypted = @client.vault.encrypt(data: payload, key_context: {"t" => "1"})
126
+ encrypted = @client.vault.encrypt(data: payload, context: {"t" => "1"})
129
127
  refute_equal payload, encrypted
130
128
 
131
129
  plaintext = @client.vault.decrypt(encrypted_data: encrypted)
@@ -140,7 +138,7 @@ class VaultTest < Minitest::Test
140
138
  stub_request(:post, "https://api.workos.com/vault/v1/keys/data-key").to_return(status: 200, body: create_resp.to_json)
141
139
  stub_request(:post, "https://api.workos.com/vault/v1/keys/decrypt").to_return(status: 200, body: decrypt_resp.to_json)
142
140
 
143
- encrypted = @client.vault.encrypt(data: "secret", key_context: {}, associated_data: "tenant=42")
141
+ encrypted = @client.vault.encrypt(data: "secret", context: {}, associated_data: "tenant=42")
144
142
  plaintext = @client.vault.decrypt(encrypted_data: encrypted, associated_data: "tenant=42")
145
143
  assert_equal "secret", plaintext
146
144
 
@@ -148,4 +146,9 @@ class VaultTest < Minitest::Test
148
146
  @client.vault.decrypt(encrypted_data: encrypted, associated_data: "wrong")
149
147
  end
150
148
  end
149
+ # @oagen-ignore-end
150
+
151
+ # @oagen-ignore-start — client-side encrypt/decrypt test requires
152
+ require "base64"
153
+ # @oagen-ignore-end
151
154
  end