workos 7.1.2 → 9.5.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 (582) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -2
  3. data/.github/workflows/docs.yml +49 -0
  4. data/.github/workflows/lint.yml +2 -2
  5. data/.github/workflows/release-please.yml +164 -10
  6. data/.github/workflows/release.yml +2 -2
  7. data/.gitignore +2 -0
  8. data/.last-synced-sha +1 -1
  9. data/.oagen-manifest.json +403 -84
  10. data/.release-please-manifest.json +1 -1
  11. data/.ruby-version +1 -1
  12. data/.yardopts +6 -0
  13. data/CHANGELOG.md +331 -0
  14. data/Gemfile +6 -0
  15. data/Gemfile.lock +35 -4
  16. data/README.md +19 -0
  17. data/docs/V7_MIGRATION_GUIDE.md +21 -0
  18. data/lib/workos/actions.rb +1 -1
  19. data/lib/workos/admin_portal/generate_link.rb +0 -3
  20. data/lib/workos/admin_portal.rb +0 -3
  21. data/lib/workos/api_keys/api_key.rb +4 -1
  22. data/lib/workos/api_keys/api_key_created.rb +5 -5
  23. data/lib/workos/api_keys/api_key_created_data.rb +4 -1
  24. data/lib/workos/api_keys/api_key_revoked.rb +5 -5
  25. data/lib/workos/{audit_logs/audit_log_export_json.rb → api_keys/api_key_updated.rb} +10 -10
  26. data/lib/workos/api_keys/api_key_updated_data.rb +49 -0
  27. data/lib/workos/{directory_sync/dsync_deactivated_data_domain.rb → api_keys/api_key_updated_data_owner.rb} +1 -1
  28. data/lib/workos/api_keys/api_key_updated_data_previous_attribute.rb +18 -0
  29. data/lib/workos/api_keys/create_organization_api_key.rb +5 -2
  30. data/lib/workos/api_keys/expire_api_key.rb +18 -0
  31. data/lib/workos/api_keys/organization_api_key.rb +46 -0
  32. data/lib/workos/{types/events_order.rb → api_keys/organization_api_key_owner.rb} +1 -3
  33. data/lib/workos/api_keys/organization_api_key_with_value.rb +49 -0
  34. data/lib/workos/{types/audit_logs_order.rb → api_keys/organization_api_key_with_value_owner.rb} +1 -3
  35. data/lib/workos/api_keys.rb +75 -47
  36. data/lib/workos/audit_logs/audit_log_action.rb +2 -7
  37. data/lib/workos/audit_logs/audit_log_export.rb +2 -7
  38. data/lib/workos/audit_logs/audit_log_schema.rb +11 -2
  39. data/lib/workos/audit_logs/audit_log_schema_actor_input.rb +7 -0
  40. data/lib/workos/audit_logs/audit_log_schema_input.rb +25 -0
  41. data/lib/workos/audit_logs/audit_log_schema_target.rb +16 -1
  42. data/lib/workos/audit_logs/audit_log_schema_target_input.rb +7 -0
  43. data/lib/workos/audit_logs.rb +20 -20
  44. data/lib/workos/{audit_logs/audit_log_schema_json_actor.rb → authorization/create_group_role_assignment.rb} +1 -1
  45. data/lib/workos/authorization/delete_group_role_assignments_by_criteria.rb +7 -0
  46. data/lib/workos/authorization/{role_assignment.rb → group_role_assignment.rb} +5 -2
  47. data/lib/workos/authorization/group_role_assignment_list.rb +25 -0
  48. data/lib/workos/authorization/{role_assignment_resource.rb → group_role_assignment_resource.rb} +1 -1
  49. data/lib/workos/authorization/permission_created.rb +5 -5
  50. data/lib/workos/authorization/permission_deleted.rb +5 -5
  51. data/lib/workos/authorization/permission_updated.rb +5 -5
  52. data/lib/workos/{api_keys/api_key_with_value_owner.rb → authorization/replace_group_role_assignment_entry.rb} +1 -1
  53. data/lib/workos/authorization/replace_group_role_assignments.rb +18 -0
  54. data/lib/workos/authorization/role_created.rb +5 -5
  55. data/lib/workos/authorization/role_deleted.rb +5 -5
  56. data/lib/workos/authorization/role_updated.rb +5 -5
  57. data/lib/workos/authorization/user_role_assignment.rb +40 -0
  58. data/lib/workos/authorization/user_role_assignment_resource.rb +7 -0
  59. data/lib/workos/{audit_logs/audit_log_schema_json_target.rb → authorization/user_role_assignment_source.rb} +4 -4
  60. data/lib/workos/authorization.rb +326 -30
  61. data/lib/workos/base_client.rb +90 -7
  62. data/lib/workos/client.rb +18 -10
  63. data/lib/workos/client_api/client_api_token.rb +22 -0
  64. data/lib/workos/client_api/client_api_token_response.rb +18 -0
  65. data/lib/workos/client_api.rb +39 -0
  66. data/lib/workos/connect/connect_application.rb +12 -0
  67. data/lib/workos/connect/connect_application_redirect_uri.rb +22 -0
  68. data/lib/workos/connect/user_object.rb +3 -0
  69. data/lib/workos/connect.rb +2 -2
  70. data/lib/workos/directory_sync/directory_user.rb +3 -0
  71. data/lib/workos/directory_sync/directory_user_with_groups.rb +4 -1
  72. data/lib/workos/directory_sync/dsync_activated.rb +5 -5
  73. data/lib/workos/directory_sync/dsync_deleted.rb +5 -5
  74. data/lib/workos/directory_sync/dsync_group_created.rb +5 -5
  75. data/lib/workos/directory_sync/dsync_group_deleted.rb +5 -5
  76. data/lib/workos/directory_sync/dsync_group_updated.rb +5 -5
  77. data/lib/workos/directory_sync/dsync_group_user_added.rb +5 -5
  78. data/lib/workos/directory_sync/dsync_group_user_removed.rb +5 -5
  79. data/lib/workos/directory_sync/dsync_token_created.rb +34 -0
  80. data/lib/workos/directory_sync/dsync_token_created_data.rb +34 -0
  81. data/lib/workos/directory_sync/dsync_token_revoked.rb +34 -0
  82. data/lib/workos/directory_sync/dsync_token_revoked_data.rb +7 -0
  83. data/lib/workos/directory_sync/dsync_user_created.rb +5 -5
  84. data/lib/workos/directory_sync/dsync_user_deleted.rb +5 -5
  85. data/lib/workos/directory_sync/dsync_user_updated.rb +5 -5
  86. data/lib/workos/directory_sync/dsync_user_updated_data.rb +3 -0
  87. data/lib/workos/directory_sync.rb +6 -6
  88. data/lib/workos/encryptors/aes_gcm.rb +19 -5
  89. data/lib/workos/events.rb +2 -2
  90. data/lib/workos/feature_flags/flag_created.rb +5 -5
  91. data/lib/workos/feature_flags/flag_deleted.rb +5 -5
  92. data/lib/workos/feature_flags/flag_rule_updated.rb +5 -5
  93. data/lib/workos/feature_flags/flag_rule_updated_context_configured_target_organization.rb +1 -16
  94. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context_configured_target_organization.rb +1 -1
  95. data/lib/workos/feature_flags/flag_updated.rb +5 -5
  96. data/lib/workos/feature_flags.rb +6 -6
  97. data/lib/workos/{authorization → groups}/user_organization_membership_base_list_data.rb +5 -2
  98. data/lib/workos/groups.rb +4 -4
  99. data/lib/workos/inflections.rb +3 -1
  100. data/lib/workos/multi_factor_auth.rb +2 -2
  101. data/lib/workos/organization_domains/organization_domain_created.rb +5 -5
  102. data/lib/workos/organization_domains/organization_domain_deleted.rb +5 -5
  103. data/lib/workos/organization_domains/organization_domain_updated.rb +5 -5
  104. data/lib/workos/organization_domains/organization_domain_verification_failed.rb +5 -5
  105. data/lib/workos/organization_domains/organization_domain_verified.rb +5 -5
  106. data/lib/workos/{user_management → organization_membership}/organization_membership.rb +8 -2
  107. data/lib/workos/{user_management → organization_membership}/user_organization_membership.rb +8 -2
  108. data/lib/workos/organization_membership_service.rb +273 -0
  109. data/lib/workos/organizations/audit_logs_retention.rb +2 -7
  110. data/lib/workos/organizations/organization_created.rb +5 -5
  111. data/lib/workos/organizations/organization_deleted.rb +5 -5
  112. data/lib/workos/organizations/organization_membership_created.rb +5 -5
  113. data/lib/workos/organizations/organization_membership_deleted.rb +5 -5
  114. data/lib/workos/organizations/organization_membership_updated.rb +5 -5
  115. data/lib/workos/organizations/organization_role_created.rb +5 -5
  116. data/lib/workos/organizations/organization_role_deleted.rb +5 -5
  117. data/lib/workos/organizations/organization_role_updated.rb +5 -5
  118. data/lib/workos/organizations/organization_updated.rb +5 -5
  119. data/lib/workos/organizations.rb +2 -2
  120. data/lib/workos/pipes/connected_account.rb +6 -0
  121. data/lib/workos/pipes/connected_account_dto.rb +31 -0
  122. data/lib/workos/pipes/create_data_integration.rb +34 -0
  123. data/lib/workos/pipes/custom_provider_definition.rb +49 -0
  124. data/lib/workos/pipes/data_integration.rb +55 -0
  125. data/lib/workos/pipes/data_integration_credential.rb +25 -0
  126. data/lib/workos/pipes/data_integration_credentials_dto.rb +25 -0
  127. data/lib/workos/pipes/data_integration_credentials_response.rb +25 -0
  128. data/lib/workos/pipes/data_integration_credentials_response_credential.rb +34 -0
  129. data/lib/workos/pipes/data_integration_custom_provider.rb +49 -0
  130. data/lib/workos/pipes/data_integrations_list_response_data.rb +3 -0
  131. data/lib/workos/pipes/data_integrations_list_response_data_connected_account.rb +6 -0
  132. data/lib/workos/pipes/data_integrations_upsert_api_key_request.rb +25 -0
  133. data/lib/workos/pipes/data_integrations_vend_credentials_request.rb +22 -0
  134. data/lib/workos/pipes/update_custom_provider_definition.rb +49 -0
  135. data/lib/workos/pipes/update_data_integration.rb +31 -0
  136. data/lib/workos/pipes.rb +309 -5
  137. data/lib/workos/pipes_provider/configure_data_integration_body.rb +28 -0
  138. data/lib/workos/pipes_provider/data_integration_configuration_list_response.rb +22 -0
  139. data/lib/workos/{directory_sync/dsync_deactivated_data.rb → pipes_provider/data_integration_configuration_response.rb} +13 -13
  140. data/lib/workos/pipes_provider/data_integration_credentials.rb +31 -0
  141. data/lib/workos/pipes_provider.rb +68 -0
  142. data/lib/workos/radar/radar_standalone_assess_request.rb +3 -6
  143. data/lib/workos/radar.rb +7 -10
  144. data/lib/workos/session.rb +28 -7
  145. data/lib/workos/session_manager.rb +24 -1
  146. data/lib/workos/shared/auth_method_mismatch_error.rb +22 -0
  147. data/lib/workos/shared/connect_application_m2m.rb +46 -0
  148. data/lib/workos/shared/connect_application_oauth.rb +58 -0
  149. data/lib/workos/shared/connect_application_oauth_redirect_uris.rb +22 -0
  150. data/lib/workos/shared/error_response.rb +18 -0
  151. data/lib/workos/shared/group_created.rb +5 -5
  152. data/lib/workos/shared/group_deleted.rb +5 -5
  153. data/lib/workos/shared/group_member_added.rb +5 -5
  154. data/lib/workos/shared/group_member_removed.rb +5 -5
  155. data/lib/workos/shared/group_updated.rb +5 -5
  156. data/lib/workos/shared/pipe_connected_account.rb +46 -0
  157. data/lib/workos/{directory_sync/dsync_deactivated.rb → shared/pipes_connected_account_connected.rb} +7 -7
  158. data/lib/workos/shared/pipes_connected_account_disconnected.rb +34 -0
  159. data/lib/workos/shared/pipes_connected_account_reauthorization_needed.rb +34 -0
  160. data/lib/workos/shared/waitlist_user_approved.rb +5 -5
  161. data/lib/workos/shared/waitlist_user_created.rb +5 -5
  162. data/lib/workos/shared/waitlist_user_denied.rb +5 -5
  163. data/lib/workos/sso/connection_activated.rb +5 -5
  164. data/lib/workos/sso/connection_deactivated.rb +5 -5
  165. data/lib/workos/sso/connection_deleted.rb +5 -5
  166. data/lib/workos/sso/connection_saml_certificate_renewal_required.rb +5 -5
  167. data/lib/workos/sso/connection_saml_certificate_renewed.rb +5 -5
  168. data/lib/workos/sso/profile.rb +3 -0
  169. data/lib/workos/sso.rb +2 -2
  170. data/lib/workos/types/audit_log_configuration_log_stream_type.rb +2 -1
  171. data/lib/workos/types/audit_log_export_state.rb +2 -1
  172. data/lib/workos/types/connected_account_auth_method.rb +13 -0
  173. data/lib/workos/types/connected_account_state.rb +1 -2
  174. data/lib/workos/types/create_webhook_endpoint_events.rb +12 -1
  175. data/lib/workos/types/custom_provider_definition_authenticate_via.rb +13 -0
  176. data/lib/workos/types/data_integration_access_token_response_error.rb +2 -2
  177. data/lib/workos/types/data_integration_credential_type.rb +13 -0
  178. data/lib/workos/types/data_integration_credentials_credentials_type.rb +14 -0
  179. data/lib/workos/types/{directories_order.rb → data_integration_credentials_response_error.rb} +1 -1
  180. data/lib/workos/types/{authorization_order.rb → data_integration_credentials_type.rb} +1 -1
  181. data/lib/workos/types/data_integration_custom_provider_authenticate_via.rb +9 -0
  182. data/lib/workos/types/data_integration_state.rb +14 -0
  183. data/lib/workos/types/{connections_order.rb → data_integrations_list_response_data_auth_methods.rb} +1 -1
  184. data/lib/workos/types/data_integrations_list_response_data_connected_account_auth_method.rb +9 -0
  185. data/lib/workos/types/data_integrations_list_response_data_connected_account_state.rb +6 -1
  186. data/lib/workos/types/event_context_actor_source.rb +2 -1
  187. data/lib/workos/types/{applications_order.rb → pagination_order.rb} +1 -1
  188. data/lib/workos/types/pipe_connected_account_state.rb +13 -0
  189. data/lib/workos/types/{radar_action.rb → radar_list_action.rb} +1 -1
  190. data/lib/workos/types/radar_list_type.rb +18 -0
  191. data/lib/workos/types/radar_standalone_assess_request_action.rb +1 -7
  192. data/lib/workos/types/radar_standalone_response_blocklist_type.rb +1 -10
  193. data/lib/workos/types/radar_standalone_response_control.rb +1 -4
  194. data/lib/workos/types/update_custom_provider_definition_authenticate_via.rb +9 -0
  195. data/lib/workos/types/user_management_authentication_screen_hint.rb +1 -5
  196. data/lib/workos/types/user_role_assignment_source_type.rb +13 -0
  197. data/lib/workos/types/{vault_byok_key_verification_completed_data_key_provider.rb → vault_byok_key_provider.rb} +1 -1
  198. data/{rbi/workos/types/request_options.rbi → lib/workos/types/vault_order.rb} +4 -3
  199. data/lib/workos/types/webhook_endpoint_status.rb +1 -5
  200. data/lib/workos/types/widget_session_token_scopes.rb +2 -1
  201. data/lib/workos/user_management/action_authentication_denied.rb +6 -6
  202. data/lib/workos/user_management/action_user_registration_denied.rb +6 -6
  203. data/lib/workos/user_management/authentication_email_verification_failed.rb +5 -5
  204. data/lib/workos/user_management/authentication_email_verification_succeeded.rb +5 -5
  205. data/lib/workos/user_management/authentication_magic_auth_failed.rb +5 -5
  206. data/lib/workos/user_management/authentication_magic_auth_succeeded.rb +5 -5
  207. data/lib/workos/user_management/authentication_mfa_failed.rb +5 -5
  208. data/lib/workos/user_management/authentication_mfa_succeeded.rb +5 -5
  209. data/lib/workos/user_management/authentication_oauth_failed.rb +5 -5
  210. data/lib/workos/user_management/authentication_oauth_succeeded.rb +5 -5
  211. data/lib/workos/user_management/authentication_passkey_failed.rb +5 -5
  212. data/lib/workos/user_management/authentication_passkey_succeeded.rb +5 -5
  213. data/lib/workos/user_management/authentication_password_failed.rb +5 -5
  214. data/lib/workos/user_management/authentication_password_succeeded.rb +5 -5
  215. data/lib/workos/user_management/authentication_radar_risk_detected.rb +5 -5
  216. data/lib/workos/user_management/authentication_sso_failed.rb +5 -5
  217. data/lib/workos/user_management/authentication_sso_started.rb +5 -5
  218. data/lib/workos/user_management/authentication_sso_succeeded.rb +5 -5
  219. data/lib/workos/user_management/authentication_sso_timed_out.rb +5 -5
  220. data/lib/workos/user_management/authorization_code_session_authenticate_request.rb +5 -2
  221. data/lib/workos/user_management/create_magic_code_and_return.rb +14 -2
  222. data/lib/workos/user_management/create_user.rb +12 -0
  223. data/lib/workos/user_management/create_user_api_key.rb +28 -0
  224. data/lib/workos/user_management/email_change_confirmation_user.rb +3 -0
  225. data/lib/workos/user_management/email_verification_created.rb +5 -5
  226. data/lib/workos/user_management/invitation_accepted.rb +5 -5
  227. data/lib/workos/user_management/invitation_created.rb +5 -5
  228. data/lib/workos/user_management/invitation_resent.rb +5 -5
  229. data/lib/workos/user_management/invitation_revoked.rb +5 -5
  230. data/lib/workos/user_management/magic_auth_code_session_authenticate_request.rb +5 -2
  231. data/lib/workos/user_management/magic_auth_created.rb +5 -5
  232. data/lib/workos/user_management/magic_auth_send_magic_auth_code_and_return_response.rb +43 -0
  233. data/lib/workos/user_management/password_reset_created.rb +5 -5
  234. data/lib/workos/user_management/password_reset_succeeded.rb +5 -5
  235. data/lib/workos/user_management/password_session_authenticate_request.rb +8 -2
  236. data/lib/workos/user_management/radar_email_challenge_code_session_authenticate_request.rb +43 -0
  237. data/lib/workos/user_management/radar_sms_challenge_code_session_authenticate_request.rb +46 -0
  238. data/lib/workos/user_management/revoke_session.rb +2 -6
  239. data/lib/workos/user_management/send_radar_sms_challenge.rb +31 -0
  240. data/lib/workos/user_management/send_radar_sms_challenge_response.rb +22 -0
  241. data/lib/workos/user_management/session_created.rb +5 -5
  242. data/lib/workos/user_management/session_revoked.rb +5 -5
  243. data/lib/workos/user_management/update_user.rb +3 -0
  244. data/lib/workos/user_management/user_api_key.rb +46 -0
  245. data/lib/workos/user_management/user_api_key_created_data_owner.rb +25 -0
  246. data/lib/workos/user_management/user_api_key_owner.rb +7 -0
  247. data/lib/workos/user_management/user_api_key_revoked_data_owner.rb +7 -0
  248. data/lib/workos/user_management/user_api_key_updated_data_owner.rb +7 -0
  249. data/lib/workos/{api_keys/api_key_with_value.rb → user_management/user_api_key_with_value.rb} +5 -2
  250. data/lib/workos/user_management/user_api_key_with_value_owner.rb +7 -0
  251. data/lib/workos/user_management/user_create_response.rb +61 -0
  252. data/lib/workos/user_management/user_created.rb +5 -5
  253. data/lib/workos/user_management/user_deleted.rb +5 -5
  254. data/lib/workos/user_management/user_updated.rb +5 -5
  255. data/lib/workos/user_management.rb +351 -202
  256. data/lib/workos/vault/actor.rb +22 -0
  257. data/lib/workos/vault/create_data_key_request.rb +18 -0
  258. data/lib/workos/vault/create_data_key_response.rb +28 -0
  259. data/lib/workos/vault/create_object_request.rb +25 -0
  260. data/lib/workos/vault/decrypt_request.rb +18 -0
  261. data/lib/workos/vault/decrypt_response.rb +22 -0
  262. data/lib/workos/vault/delete_object_response.rb +22 -0
  263. data/lib/workos/vault/object_metadata.rb +37 -0
  264. data/lib/workos/{audit_logs/audit_log_action_json.rb → vault/object_summary.rb} +4 -10
  265. data/lib/workos/vault/object_version.rb +31 -0
  266. data/lib/workos/vault/object_without_value.rb +25 -0
  267. data/lib/workos/vault/rekey_request.rb +22 -0
  268. data/lib/workos/vault/update_object_request.rb +22 -0
  269. data/lib/workos/vault/vault_byok_key_deleted.rb +34 -0
  270. data/lib/workos/vault/vault_byok_key_deleted_data.rb +22 -0
  271. data/lib/workos/vault/vault_byok_key_verification_completed.rb +5 -5
  272. data/lib/workos/vault/vault_data_created.rb +5 -5
  273. data/lib/workos/vault/vault_data_deleted.rb +5 -5
  274. data/lib/workos/vault/vault_data_read.rb +5 -5
  275. data/lib/workos/vault/vault_data_updated.rb +5 -5
  276. data/lib/workos/vault/vault_dek_decrypted.rb +5 -5
  277. data/lib/workos/vault/vault_dek_read.rb +5 -5
  278. data/lib/workos/vault/vault_kek_created.rb +5 -5
  279. data/lib/workos/vault/vault_metadata_read.rb +5 -5
  280. data/lib/workos/vault/vault_names_listed.rb +5 -5
  281. data/lib/workos/vault/vault_object.rb +28 -0
  282. data/lib/workos/vault/version_list_response.rb +22 -0
  283. data/lib/workos/vault.rb +273 -139
  284. data/lib/workos/version.rb +1 -1
  285. data/lib/workos/webhooks/webhook_endpoint.rb +2 -7
  286. data/lib/workos/webhooks.rb +10 -11
  287. data/lib/workos/widgets/widget_session_token_response.rb +1 -12
  288. data/lib/workos.rb +3 -0
  289. data/rbi/workos/action_authentication_denied.rbi +10 -10
  290. data/rbi/workos/action_user_registration_denied.rbi +10 -10
  291. data/rbi/workos/actor.rbi +30 -0
  292. data/rbi/workos/admin_portal.rbi +1 -2
  293. data/rbi/workos/api_key.rbi +8 -2
  294. data/rbi/workos/api_key_created.rbi +6 -6
  295. data/rbi/workos/api_key_created_data.rbi +8 -2
  296. data/rbi/workos/api_key_revoked.rbi +6 -6
  297. data/rbi/workos/api_key_revoked_data.rbi +8 -2
  298. data/rbi/workos/{dsync_deactivated.rbi → api_key_updated.rbi} +9 -9
  299. data/rbi/workos/api_key_updated_data.rbi +84 -0
  300. data/rbi/workos/{api_key_with_value_owner.rbi → api_key_updated_data_owner.rbi} +1 -1
  301. data/rbi/workos/{audit_logs_retention_json.rbi → api_key_updated_data_previous_attribute.rbi} +5 -5
  302. data/rbi/workos/api_keys.rbi +27 -17
  303. data/rbi/workos/audit_log_action.rbi +1 -0
  304. data/rbi/workos/audit_log_export.rbi +1 -0
  305. data/rbi/workos/audit_log_schema.rbi +18 -0
  306. data/rbi/workos/{audit_log_schema_json_actor.rbi → audit_log_schema_actor_input.rbi} +1 -1
  307. data/rbi/workos/audit_log_schema_input.rbi +36 -0
  308. data/rbi/workos/{audit_log_schema_json_target.rbi → audit_log_schema_target_input.rbi} +1 -1
  309. data/rbi/workos/audit_logs.rbi +9 -9
  310. data/rbi/workos/audit_logs_retention.rbi +1 -0
  311. data/rbi/workos/auth_method_mismatch_error.rbi +30 -0
  312. data/rbi/workos/authentication_email_verification_failed.rbi +6 -6
  313. data/rbi/workos/authentication_email_verification_succeeded.rbi +6 -6
  314. data/rbi/workos/authentication_magic_auth_failed.rbi +6 -6
  315. data/rbi/workos/authentication_magic_auth_succeeded.rbi +6 -6
  316. data/rbi/workos/authentication_mfa_failed.rbi +6 -6
  317. data/rbi/workos/authentication_mfa_succeeded.rbi +6 -6
  318. data/rbi/workos/authentication_oauth_failed.rbi +6 -6
  319. data/rbi/workos/authentication_oauth_succeeded.rbi +6 -6
  320. data/rbi/workos/authentication_passkey_failed.rbi +6 -6
  321. data/rbi/workos/authentication_passkey_succeeded.rbi +6 -6
  322. data/rbi/workos/authentication_password_failed.rbi +6 -6
  323. data/rbi/workos/authentication_password_succeeded.rbi +6 -6
  324. data/rbi/workos/authentication_radar_risk_detected.rbi +6 -6
  325. data/rbi/workos/authentication_sso_failed.rbi +6 -6
  326. data/rbi/workos/authentication_sso_started.rbi +6 -6
  327. data/rbi/workos/authentication_sso_succeeded.rbi +6 -6
  328. data/rbi/workos/authentication_sso_timed_out.rbi +6 -6
  329. data/rbi/workos/authorization.rbi +97 -4
  330. data/rbi/workos/authorization_code_session_authenticate_request.rbi +8 -2
  331. data/rbi/workos/client.rbi +15 -6
  332. data/rbi/workos/client_api.rbi +22 -0
  333. data/rbi/workos/client_api_token.rbi +30 -0
  334. data/rbi/workos/client_api_token_response.rbi +24 -0
  335. data/rbi/workos/configure_data_integration_body.rbi +42 -0
  336. data/rbi/workos/connect_application.rbi +0 -12
  337. data/rbi/workos/{dsync_deactivated_data.rbi → connect_application_m2m.rbi} +19 -19
  338. data/rbi/workos/connect_application_oauth.rbi +102 -0
  339. data/rbi/workos/connect_application_oauth_redirect_uris.rbi +30 -0
  340. data/rbi/workos/connected_account.rbi +12 -0
  341. data/rbi/workos/connected_account_dto.rbi +48 -0
  342. data/rbi/workos/connection_activated.rbi +6 -6
  343. data/rbi/workos/connection_deactivated.rbi +6 -6
  344. data/rbi/workos/connection_deleted.rbi +6 -6
  345. data/rbi/workos/connection_saml_certificate_renewal_required.rbi +6 -6
  346. data/rbi/workos/connection_saml_certificate_renewed.rbi +6 -6
  347. data/rbi/workos/create_data_integration.rbi +54 -0
  348. data/rbi/workos/create_data_key_request.rbi +24 -0
  349. data/rbi/workos/create_data_key_response.rbi +42 -0
  350. data/rbi/workos/create_group_role_assignment.rbi +42 -0
  351. data/rbi/workos/create_magic_code_and_return.rbi +24 -0
  352. data/rbi/workos/create_object_request.rbi +36 -0
  353. data/rbi/workos/create_organization_api_key.rbi +6 -0
  354. data/rbi/workos/create_user.rbi +24 -0
  355. data/rbi/workos/create_user_api_key.rbi +42 -0
  356. data/rbi/workos/custom_provider_definition.rbi +84 -0
  357. data/rbi/workos/data_integration.rbi +96 -0
  358. data/rbi/workos/data_integration_configuration_list_response.rbi +30 -0
  359. data/rbi/workos/data_integration_configuration_response.rbi +78 -0
  360. data/rbi/workos/data_integration_credential.rbi +36 -0
  361. data/rbi/workos/data_integration_credentials.rbi +48 -0
  362. data/rbi/workos/data_integration_credentials_dto.rbi +36 -0
  363. data/rbi/workos/data_integration_credentials_response.rbi +36 -0
  364. data/rbi/workos/data_integration_credentials_response_credential.rbi +54 -0
  365. data/rbi/workos/data_integration_custom_provider.rbi +84 -0
  366. data/rbi/workos/data_integrations_list_response_data.rbi +6 -0
  367. data/rbi/workos/data_integrations_list_response_data_connected_account.rbi +12 -0
  368. data/rbi/workos/data_integrations_upsert_api_key_request.rbi +36 -0
  369. data/rbi/workos/data_integrations_vend_credentials_request.rbi +30 -0
  370. data/rbi/workos/decrypt_request.rbi +24 -0
  371. data/rbi/workos/decrypt_response.rbi +30 -0
  372. data/rbi/workos/delete_group_role_assignments_by_criteria.rbi +42 -0
  373. data/rbi/workos/delete_object_response.rbi +30 -0
  374. data/rbi/workos/directory_user.rbi +6 -0
  375. data/rbi/workos/directory_user_with_groups.rbi +6 -0
  376. data/rbi/workos/dsync_activated.rbi +6 -6
  377. data/rbi/workos/dsync_deleted.rbi +6 -6
  378. data/rbi/workos/dsync_group_created.rbi +6 -6
  379. data/rbi/workos/dsync_group_deleted.rbi +6 -6
  380. data/rbi/workos/dsync_group_updated.rbi +6 -6
  381. data/rbi/workos/dsync_group_user_added.rbi +6 -6
  382. data/rbi/workos/dsync_group_user_removed.rbi +6 -6
  383. data/rbi/workos/dsync_token_created.rbi +54 -0
  384. data/rbi/workos/{audit_log_export_json.rbi → dsync_token_created_data.rbi} +9 -9
  385. data/rbi/workos/dsync_token_revoked.rbi +54 -0
  386. data/rbi/workos/{audit_log_action_json.rbi → dsync_token_revoked_data.rbi} +17 -11
  387. data/rbi/workos/dsync_user_created.rbi +6 -6
  388. data/rbi/workos/dsync_user_deleted.rbi +6 -6
  389. data/rbi/workos/dsync_user_updated.rbi +6 -6
  390. data/rbi/workos/dsync_user_updated_data.rbi +6 -0
  391. data/rbi/workos/email_change_confirmation_user.rbi +6 -0
  392. data/rbi/workos/email_verification_created.rbi +6 -6
  393. data/rbi/workos/error_response.rbi +24 -0
  394. data/rbi/workos/expire_api_key.rbi +24 -0
  395. data/rbi/workos/flag_created.rbi +6 -6
  396. data/rbi/workos/flag_deleted.rbi +6 -6
  397. data/rbi/workos/flag_rule_updated.rbi +6 -6
  398. data/rbi/workos/flag_updated.rbi +6 -6
  399. data/rbi/workos/generate_link.rbi +0 -6
  400. data/rbi/workos/group_created.rbi +6 -6
  401. data/rbi/workos/group_deleted.rbi +6 -6
  402. data/rbi/workos/group_member_added.rbi +6 -6
  403. data/rbi/workos/group_member_removed.rbi +6 -6
  404. data/rbi/workos/{role_assignment.rbi → group_role_assignment.rbi} +9 -3
  405. data/rbi/workos/group_role_assignment_resource.rbi +36 -0
  406. data/rbi/workos/group_updated.rbi +6 -6
  407. data/rbi/workos/invitation_accepted.rbi +6 -6
  408. data/rbi/workos/invitation_created.rbi +6 -6
  409. data/rbi/workos/invitation_resent.rbi +6 -6
  410. data/rbi/workos/invitation_revoked.rbi +6 -6
  411. data/rbi/workos/magic_auth_code_session_authenticate_request.rbi +6 -0
  412. data/rbi/workos/magic_auth_created.rbi +6 -6
  413. data/rbi/workos/{webhook_endpoint_json.rbi → magic_auth_send_magic_auth_code_and_return_response.rbi} +19 -13
  414. data/rbi/workos/object_metadata.rbi +60 -0
  415. data/rbi/workos/object_summary.rbi +36 -0
  416. data/rbi/workos/object_version.rbi +48 -0
  417. data/rbi/workos/object_without_value.rbi +36 -0
  418. data/rbi/workos/organization_api_key.rbi +78 -0
  419. data/rbi/workos/organization_api_key_owner.rbi +30 -0
  420. data/rbi/workos/organization_api_key_with_value.rbi +84 -0
  421. data/rbi/workos/organization_api_key_with_value_owner.rbi +30 -0
  422. data/rbi/workos/organization_created.rbi +6 -6
  423. data/rbi/workos/organization_deleted.rbi +6 -6
  424. data/rbi/workos/organization_domain_created.rbi +6 -6
  425. data/rbi/workos/organization_domain_deleted.rbi +6 -6
  426. data/rbi/workos/organization_domain_updated.rbi +6 -6
  427. data/rbi/workos/organization_domain_verification_failed.rbi +6 -6
  428. data/rbi/workos/organization_domain_verified.rbi +6 -6
  429. data/rbi/workos/organization_membership.rbi +12 -0
  430. data/rbi/workos/organization_membership_created.rbi +6 -6
  431. data/rbi/workos/organization_membership_deleted.rbi +6 -6
  432. data/rbi/workos/organization_membership_service.rbi +114 -0
  433. data/rbi/workos/organization_membership_updated.rbi +6 -6
  434. data/rbi/workos/organization_role_created.rbi +6 -6
  435. data/rbi/workos/organization_role_deleted.rbi +6 -6
  436. data/rbi/workos/organization_role_updated.rbi +6 -6
  437. data/rbi/workos/organization_updated.rbi +6 -6
  438. data/rbi/workos/password_reset_created.rbi +6 -6
  439. data/rbi/workos/password_reset_succeeded.rbi +6 -6
  440. data/rbi/workos/password_session_authenticate_request.rbi +12 -0
  441. data/rbi/workos/permission_created.rbi +6 -6
  442. data/rbi/workos/permission_deleted.rbi +6 -6
  443. data/rbi/workos/permission_updated.rbi +6 -6
  444. data/rbi/workos/pipe_connected_account.rbi +78 -0
  445. data/rbi/workos/pipes.rbi +105 -1
  446. data/rbi/workos/pipes_connected_account_connected.rbi +54 -0
  447. data/rbi/workos/pipes_connected_account_disconnected.rbi +54 -0
  448. data/rbi/workos/pipes_connected_account_reauthorization_needed.rbi +54 -0
  449. data/rbi/workos/pipes_provider.rbi +34 -0
  450. data/rbi/workos/profile.rbi +6 -0
  451. data/rbi/workos/radar.rbi +2 -3
  452. data/rbi/workos/radar_email_challenge_code_session_authenticate_request.rbi +72 -0
  453. data/rbi/workos/radar_sms_challenge_code_session_authenticate_request.rbi +78 -0
  454. data/rbi/workos/radar_standalone_assess_request.rbi +2 -8
  455. data/rbi/workos/refresh_token_session_authenticate_request.rbi +2 -2
  456. data/rbi/workos/rekey_request.rbi +30 -0
  457. data/rbi/workos/replace_group_role_assignment_entry.rbi +42 -0
  458. data/rbi/workos/replace_group_role_assignments.rbi +24 -0
  459. data/rbi/workos/revoke_session.rbi +0 -6
  460. data/rbi/workos/role_created.rbi +6 -6
  461. data/rbi/workos/role_deleted.rbi +6 -6
  462. data/rbi/workos/role_updated.rbi +6 -6
  463. data/rbi/workos/send_radar_sms_challenge.rbi +48 -0
  464. data/rbi/workos/send_radar_sms_challenge_response.rbi +30 -0
  465. data/rbi/workos/session_created.rbi +6 -6
  466. data/rbi/workos/session_manager.rbi +1 -1
  467. data/rbi/workos/session_revoked.rbi +6 -6
  468. data/rbi/workos/update_custom_provider_definition.rbi +84 -0
  469. data/rbi/workos/update_data_integration.rbi +48 -0
  470. data/rbi/workos/update_object_request.rbi +30 -0
  471. data/rbi/workos/update_user.rbi +6 -0
  472. data/rbi/workos/user.rbi +6 -0
  473. data/rbi/workos/{api_key_with_value.rbi → user_api_key.rbi} +9 -9
  474. data/rbi/workos/user_api_key_created_data_owner.rbi +36 -0
  475. data/rbi/workos/{dsync_deactivated_data_domain.rbi → user_api_key_owner.rbi} +5 -5
  476. data/rbi/workos/user_api_key_revoked_data_owner.rbi +36 -0
  477. data/rbi/workos/user_api_key_updated_data_owner.rbi +36 -0
  478. data/rbi/workos/user_api_key_with_value.rbi +84 -0
  479. data/rbi/workos/user_api_key_with_value_owner.rbi +36 -0
  480. data/rbi/workos/user_create_response.rbi +108 -0
  481. data/rbi/workos/user_created.rbi +6 -6
  482. data/rbi/workos/user_deleted.rbi +6 -6
  483. data/rbi/workos/user_management.rbi +72 -86
  484. data/rbi/workos/user_object.rbi +6 -0
  485. data/rbi/workos/user_organization_membership.rbi +12 -0
  486. data/rbi/workos/user_organization_membership_base_list_data.rbi +6 -0
  487. data/rbi/workos/user_role_assignment.rbi +66 -0
  488. data/rbi/workos/{role_assignment_resource.rbi → user_role_assignment_resource.rbi} +1 -1
  489. data/rbi/workos/user_role_assignment_source.rbi +30 -0
  490. data/rbi/workos/user_updated.rbi +6 -6
  491. data/rbi/workos/vault.rbi +70 -95
  492. data/rbi/workos/vault_byok_key_deleted.rbi +54 -0
  493. data/rbi/workos/vault_byok_key_deleted_data.rbi +30 -0
  494. data/rbi/workos/vault_byok_key_verification_completed.rbi +6 -6
  495. data/rbi/workos/vault_data_created.rbi +6 -6
  496. data/rbi/workos/vault_data_deleted.rbi +6 -6
  497. data/rbi/workos/vault_data_read.rbi +6 -6
  498. data/rbi/workos/vault_data_updated.rbi +6 -6
  499. data/rbi/workos/vault_dek_decrypted.rbi +6 -6
  500. data/rbi/workos/vault_dek_read.rbi +6 -6
  501. data/rbi/workos/vault_kek_created.rbi +6 -6
  502. data/rbi/workos/vault_metadata_read.rbi +6 -6
  503. data/rbi/workos/vault_names_listed.rbi +6 -6
  504. data/rbi/workos/vault_object.rbi +42 -0
  505. data/rbi/workos/waitlist_user_approved.rbi +6 -6
  506. data/rbi/workos/waitlist_user_created.rbi +6 -6
  507. data/rbi/workos/waitlist_user_denied.rbi +6 -6
  508. data/rbi/workos/webhook_endpoint.rbi +1 -0
  509. data/rbi/workos/webhooks.rbi +2 -2
  510. data/renovate.json +1 -61
  511. data/script/docs +16 -0
  512. data/script/docs-serve +12 -0
  513. data/script/llms-txt +37 -0
  514. data/test/workos/test_actions.rb +9 -0
  515. data/test/workos/test_admin_portal_model_round_trip.rb +33 -0
  516. data/test/workos/test_api_keys.rb +20 -12
  517. data/test/workos/test_audit_logs_model_round_trip.rb +218 -0
  518. data/test/workos/test_authorization.rb +64 -0
  519. data/test/workos/test_authorization_model_round_trip.rb +456 -0
  520. data/test/workos/test_base_client.rb +108 -0
  521. data/test/workos/test_client_api.rb +33 -0
  522. data/test/workos/test_connect_model_round_trip.rb +30 -0
  523. data/test/workos/test_encryptors_aes_gcm.rb +16 -1
  524. data/test/workos/test_groups_model_round_trip.rb +33 -0
  525. data/test/workos/test_model_round_trip.rb +2 -7138
  526. data/test/workos/test_organization_membership_service.rb +107 -0
  527. data/test/workos/test_organizations_model_round_trip.rb +29 -0
  528. data/test/workos/test_pipes.rb +75 -3
  529. data/test/workos/test_pipes_model_round_trip.rb +389 -0
  530. data/test/workos/test_pipes_provider.rb +41 -0
  531. data/test/workos/test_radar_model_round_trip.rb +85 -0
  532. data/test/workos/test_session.rb +43 -4
  533. data/test/workos/test_shared_model_round_trip.rb +92 -0
  534. data/test/workos/test_user_management.rb +77 -73
  535. data/test/workos/test_user_management_model_round_trip.rb +1087 -0
  536. data/test/workos/test_vault.rb +91 -88
  537. data/test/workos/test_webhook_verify.rb +11 -0
  538. data/test/workos/test_webhooks_model_round_trip.rb +53 -0
  539. metadata +220 -85
  540. data/lib/workos/audit_logs/audit_log_schema_json.rb +0 -34
  541. data/lib/workos/organizations/audit_logs_retention_json.rb +0 -18
  542. data/lib/workos/types/audit_log_export_json_state.rb +0 -14
  543. data/lib/workos/types/directory_groups_order.rb +0 -9
  544. data/lib/workos/types/directory_users_order.rb +0 -9
  545. data/lib/workos/types/dsync_deactivated_data_state.rb +0 -9
  546. data/lib/workos/types/dsync_deactivated_data_type.rb +0 -9
  547. data/lib/workos/types/feature_flags_order.rb +0 -9
  548. data/lib/workos/types/groups_order.rb +0 -9
  549. data/lib/workos/types/organizations_api_keys_order.rb +0 -9
  550. data/lib/workos/types/organizations_feature_flags_order.rb +0 -9
  551. data/lib/workos/types/organizations_order.rb +0 -9
  552. data/lib/workos/types/permissions_order.rb +0 -9
  553. data/lib/workos/types/radar_type.rb +0 -9
  554. data/lib/workos/types/user_management_invitations_order.rb +0 -9
  555. data/lib/workos/types/user_management_multi_factor_authentication_order.rb +0 -9
  556. data/lib/workos/types/user_management_organization_membership_groups_order.rb +0 -9
  557. data/lib/workos/types/user_management_organization_membership_order.rb +0 -9
  558. data/lib/workos/types/user_management_users_authorized_applications_order.rb +0 -9
  559. data/lib/workos/types/user_management_users_feature_flags_order.rb +0 -9
  560. data/lib/workos/types/user_management_users_order.rb +0 -9
  561. data/lib/workos/types/webhook_endpoint_json_status.rb +0 -9
  562. data/lib/workos/types/webhooks_order.rb +0 -9
  563. data/lib/workos/user_management_organization_membership_groups.rb +0 -60
  564. data/lib/workos/webhooks/webhook_endpoint_json.rb +0 -40
  565. data/rbi/workos/actions.rbi +0 -48
  566. data/rbi/workos/audit_log_schema_json.rbi +0 -54
  567. data/rbi/workos/base_client.rbi +0 -132
  568. data/rbi/workos/configuration.rbi +0 -68
  569. data/rbi/workos/encryptors/aes_gcm.rbi +0 -19
  570. data/rbi/workos/errors.rbi +0 -43
  571. data/rbi/workos/hash_provider.rbi +0 -18
  572. data/rbi/workos/passwordless.rbi +0 -47
  573. data/rbi/workos/public_client.rbi +0 -12
  574. data/rbi/workos/session.rbi +0 -43
  575. data/rbi/workos/types/api_response.rbi +0 -29
  576. data/rbi/workos/types/base_model.rbi +0 -22
  577. data/rbi/workos/types/list_struct.rbi +0 -89
  578. data/rbi/workos/user_management_organization_membership_groups.rbi +0 -25
  579. data/rbi/workos/util.rbi +0 -12
  580. data/test/workos/test_user_management_organization_membership_groups.rb +0 -33
  581. /data/lib/workos/{user_management → organization_membership}/create_user_organization_membership.rb +0 -0
  582. /data/lib/workos/{user_management → organization_membership}/update_user_organization_membership.rb +0 -0
@@ -0,0 +1,85 @@
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 RadarModelRoundTripTest < Minitest::Test
8
+ def test_radar_standalone_response_round_trip
9
+ fixture = {
10
+ "verdict" => "stub",
11
+ "reason" => "stub",
12
+ "attempt_id" => "stub",
13
+ "control" => "stub",
14
+ "blocklist_type" => "stub"
15
+ }
16
+ model = WorkOS::RadarStandaloneResponse.new(fixture.to_json)
17
+ json = model.to_h
18
+ assert_kind_of Hash, json
19
+ assert_equal fixture["reason"], json[:reason]
20
+ assert_equal fixture["attempt_id"], json[:attempt_id]
21
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
22
+ end
23
+
24
+ def test_radar_list_entry_already_present_response_round_trip
25
+ fixture = {
26
+ "message" => "stub"
27
+ }
28
+ model = WorkOS::RadarListEntryAlreadyPresentResponse.new(fixture.to_json)
29
+ json = model.to_h
30
+ assert_kind_of Hash, json
31
+ assert_equal fixture["message"], json[:message]
32
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
33
+ end
34
+
35
+ def test_radar_standalone_assess_request_round_trip
36
+ fixture = {
37
+ "ip_address" => "stub",
38
+ "user_agent" => "stub",
39
+ "email" => "stub",
40
+ "auth_method" => "stub",
41
+ "action" => "stub",
42
+ "signals_id" => "stub"
43
+ }
44
+ model = WorkOS::RadarStandaloneAssessRequest.new(fixture.to_json)
45
+ json = model.to_h
46
+ assert_kind_of Hash, json
47
+ assert_equal fixture["ip_address"], json[:ip_address]
48
+ assert_equal fixture["user_agent"], json[:user_agent]
49
+ assert_equal fixture["email"], json[:email]
50
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
51
+ end
52
+
53
+ def test_radar_standalone_update_radar_attempt_request_round_trip
54
+ fixture = {
55
+ "challenge_status" => "success",
56
+ "attempt_status" => "success"
57
+ }
58
+ model = WorkOS::RadarStandaloneUpdateRadarAttemptRequest.new(fixture.to_json)
59
+ json = model.to_h
60
+ assert_kind_of Hash, json
61
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
62
+ end
63
+
64
+ def test_radar_standalone_update_radar_list_request_round_trip
65
+ fixture = {
66
+ "entry" => "stub"
67
+ }
68
+ model = WorkOS::RadarStandaloneUpdateRadarListRequest.new(fixture.to_json)
69
+ json = model.to_h
70
+ assert_kind_of Hash, json
71
+ assert_equal fixture["entry"], json[:entry]
72
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
73
+ end
74
+
75
+ def test_radar_standalone_delete_radar_list_entry_request_round_trip
76
+ fixture = {
77
+ "entry" => "stub"
78
+ }
79
+ model = WorkOS::RadarStandaloneDeleteRadarListEntryRequest.new(fixture.to_json)
80
+ json = model.to_h
81
+ assert_kind_of Hash, json
82
+ assert_equal fixture["entry"], json[:entry]
83
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
84
+ end
85
+ end
@@ -26,11 +26,27 @@ class SessionTest < Minitest::Test
26
26
 
27
27
  def test_unseal_with_wrong_key_raises
28
28
  sealed = @sm.seal_data({"x" => 1}, PASSWORD)
29
+ # Wrong key is the same length (>= 32 bytes) so the length guard doesn't
30
+ # short-circuit; we want to assert the underlying cipher rejection.
29
31
  assert_raises(OpenSSL::Cipher::CipherError) do
30
- @sm.unseal_data(sealed, "wrong-password")
32
+ @sm.unseal_data(sealed, "wrong-cookie-password-32-bytes--")
31
33
  end
32
34
  end
33
35
 
36
+ def test_unseal_with_short_key_raises_argument_error
37
+ sealed = @sm.seal_data({"x" => 1}, PASSWORD)
38
+ assert_raises(ArgumentError) { @sm.unseal_data(sealed, "too-short") }
39
+ end
40
+
41
+ def test_seal_with_short_key_raises_argument_error
42
+ assert_raises(ArgumentError) { @sm.seal_data({"x" => 1}, "too-short") }
43
+ end
44
+
45
+ def test_session_load_requires_min_length_cookie_password
46
+ short = "x" * 31
47
+ assert_raises(ArgumentError) { @sm.load(seal_data: "x", cookie_password: short) }
48
+ end
49
+
34
50
  def test_unseal_rejects_short_payload
35
51
  assert_raises(ArgumentError) do
36
52
  @sm.unseal_data(Base64.strict_encode64("short"), PASSWORD)
@@ -334,6 +350,19 @@ class SessionTest < Minitest::Test
334
350
  assert_equal WorkOS::SessionManager::INVALID_SESSION_COOKIE, result.reason
335
351
  end
336
352
 
353
+ def test_refresh_raises_argument_error_for_short_cookie_password_override
354
+ sealed = @sm.seal_data({"access_token" => "at", "refresh_token" => "rt"}, PASSWORD)
355
+ session = @sm.load(seal_data: sealed, cookie_password: PASSWORD)
356
+ err = assert_raises(ArgumentError) { session.refresh(cookie_password: "x" * 31) }
357
+ assert_match(/at least 32 bytes/, err.message)
358
+ end
359
+
360
+ def test_refresh_raises_argument_error_for_empty_cookie_password_override
361
+ sealed = @sm.seal_data({"access_token" => "at", "refresh_token" => "rt"}, PASSWORD)
362
+ session = @sm.load(seal_data: sealed, cookie_password: PASSWORD)
363
+ assert_raises(ArgumentError) { session.refresh(cookie_password: "") }
364
+ end
365
+
337
366
  def test_refresh_returns_error_when_no_refresh_token
338
367
  sealed = @sm.seal_data({"access_token" => "at_only"}, PASSWORD)
339
368
  result = @sm.refresh(seal_data: sealed, cookie_password: PASSWORD)
@@ -361,7 +390,7 @@ class SessionTest < Minitest::Test
361
390
  assert_requested(stub)
362
391
  end
363
392
 
364
- def test_refresh_returns_error_on_malformed_access_token_without_mutating_state
393
+ def test_refresh_persists_seal_data_even_when_access_token_decode_fails
365
394
  rsa, pub = signing_key_pair
366
395
  old_access = make_jwt({"sid" => "session_old", "exp" => Time.now.to_i - 60}, rsa)
367
396
  sealed = @sm.seal_data({"access_token" => old_access, "refresh_token" => "rt_old", "user" => {"id" => "u_1"}}, PASSWORD)
@@ -383,8 +412,18 @@ class SessionTest < Minitest::Test
383
412
  assert_kind_of WorkOS::SessionManager::RefreshError, result
384
413
  refute result.authenticated
385
414
 
386
- # Session state should not have been mutated
387
- assert_equal sealed, session.seal_data
415
+ # Session state IS updated to the freshly-sealed cookie before decode runs,
416
+ # so a transient JWT/JWKS failure leaves a usable seal the caller can
417
+ # re-#authenticate against rather than half-updated state pinned to the
418
+ # stale (already-rotated) refresh token.
419
+ refute_equal sealed, session.seal_data
420
+ refute_nil session.seal_data
421
+
422
+ # The rotated cookie is also reachable through the RefreshError result, so a
423
+ # caller that doesn't retain the Session object across requests (typical in
424
+ # a Rails request cycle) can still write the new cookie back to the browser
425
+ # rather than re-sending the now-revoked refresh token on the next request.
426
+ assert_equal session.seal_data, result.sealed_session
388
427
  end
389
428
 
390
429
  # --- Session constructor validation ---------------------------------------
@@ -0,0 +1,92 @@
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 SharedModelRoundTripTest < Minitest::Test
8
+ def test_connect_application_oauth_round_trip
9
+ fixture = {
10
+ "object" => "connect_application",
11
+ "id" => "stub",
12
+ "client_id" => "stub",
13
+ "description" => nil,
14
+ "name" => "stub",
15
+ "scopes" => [],
16
+ "created_at" => "stub",
17
+ "updated_at" => "stub",
18
+ "application_type" => "oauth",
19
+ "redirect_uris" => [],
20
+ "uses_pkce" => true,
21
+ "is_first_party" => true,
22
+ "was_dynamically_registered" => true,
23
+ "organization_id" => "stub"
24
+ }
25
+ model = WorkOS::ConnectApplicationOAuth.new(fixture.to_json)
26
+ json = model.to_h
27
+ assert_kind_of Hash, json
28
+ assert_equal fixture["id"], json[:id]
29
+ assert_equal fixture["client_id"], json[:client_id]
30
+ assert_nil json[:description]
31
+ assert_equal fixture["name"], json[:name]
32
+ assert_equal fixture["created_at"], json[:created_at]
33
+ assert_equal fixture["updated_at"], json[:updated_at]
34
+ assert_equal fixture["uses_pkce"], json[:uses_pkce]
35
+ assert_equal fixture["is_first_party"], json[:is_first_party]
36
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
37
+ end
38
+
39
+ def test_connect_application_oauth_redirect_uris_round_trip
40
+ fixture = {
41
+ "uri" => "stub",
42
+ "default" => true
43
+ }
44
+ model = WorkOS::ConnectApplicationOAuthRedirectUris.new(fixture.to_json)
45
+ json = model.to_h
46
+ assert_kind_of Hash, json
47
+ assert_equal fixture["uri"], json[:uri]
48
+ assert_equal fixture["default"], json[:default]
49
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
50
+ end
51
+
52
+ def test_connect_application_m2m_round_trip
53
+ fixture = {
54
+ "object" => "connect_application",
55
+ "id" => "stub",
56
+ "client_id" => "stub",
57
+ "description" => nil,
58
+ "name" => "stub",
59
+ "scopes" => [],
60
+ "created_at" => "stub",
61
+ "updated_at" => "stub",
62
+ "application_type" => "m2m",
63
+ "organization_id" => "stub"
64
+ }
65
+ model = WorkOS::ConnectApplicationM2M.new(fixture.to_json)
66
+ json = model.to_h
67
+ assert_kind_of Hash, json
68
+ assert_equal fixture["id"], json[:id]
69
+ assert_equal fixture["client_id"], json[:client_id]
70
+ assert_nil json[:description]
71
+ assert_equal fixture["name"], json[:name]
72
+ assert_equal fixture["created_at"], json[:created_at]
73
+ assert_equal fixture["updated_at"], json[:updated_at]
74
+ assert_equal fixture["organization_id"], json[:organization_id]
75
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
76
+ end
77
+
78
+ def test_authorized_connect_application_list_data_round_trip
79
+ fixture = {
80
+ "object" => "authorized_connect_application",
81
+ "id" => "stub",
82
+ "granted_scopes" => [],
83
+ "oauth_resource" => "stub",
84
+ "application" => {}
85
+ }
86
+ model = WorkOS::AuthorizedConnectApplicationListData.new(fixture.to_json)
87
+ json = model.to_h
88
+ assert_kind_of Hash, json
89
+ assert_equal fixture["id"], json[:id]
90
+ fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" }
91
+ end
92
+ end
@@ -21,7 +21,7 @@ class UserManagementTest < Minitest::Test
21
21
  def test_create_authenticate_returns_expected_result
22
22
  stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)})
23
23
  .to_return(body: "{}", status: 200)
24
- result = @client.user_management.create_authenticate(client_id: "stub", client_secret: "stub", grant_type: "authorization_code", code: "stub")
24
+ result = @client.user_management.create_authenticate(client_id: "stub", grant_type: "authorization_code", code: "stub")
25
25
  refute_nil result
26
26
  end
27
27
 
@@ -145,6 +145,36 @@ class UserManagementTest < Minitest::Test
145
145
  end
146
146
  end
147
147
 
148
+ def test_authenticate_with_radar_email_challenge_returns_expected_result
149
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)})
150
+ .to_return(body: "{}", status: 200)
151
+ result = @client.user_management.authenticate_with_radar_email_challenge(code: "stub", radar_challenge_id: "stub", pending_authentication_token: "stub")
152
+ refute_nil result
153
+ end
154
+
155
+ def test_authenticate_with_radar_email_challenge_raises_authentication_error_on_401
156
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)})
157
+ .to_return(body: '{"message": "Unauthorized"}', status: 401)
158
+ assert_raises(WorkOS::AuthenticationError) do
159
+ @client.user_management.authenticate_with_radar_email_challenge(code: "stub", radar_challenge_id: "stub", pending_authentication_token: "stub")
160
+ end
161
+ end
162
+
163
+ def test_authenticate_with_radar_sms_challenge_returns_expected_result
164
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)})
165
+ .to_return(body: "{}", status: 200)
166
+ result = @client.user_management.authenticate_with_radar_sms_challenge(code: "stub", verification_id: "stub", phone_number: "stub", pending_authentication_token: "stub")
167
+ refute_nil result
168
+ end
169
+
170
+ def test_authenticate_with_radar_sms_challenge_raises_authentication_error_on_401
171
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)})
172
+ .to_return(body: '{"message": "Unauthorized"}', status: 401)
173
+ assert_raises(WorkOS::AuthenticationError) do
174
+ @client.user_management.authenticate_with_radar_sms_challenge(code: "stub", verification_id: "stub", phone_number: "stub", pending_authentication_token: "stub")
175
+ end
176
+ end
177
+
148
178
  def test_create_device_returns_expected_result
149
179
  stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/authorize/device(\?|\z)})
150
180
  .to_return(body: "{}", status: 200)
@@ -152,6 +182,13 @@ class UserManagementTest < Minitest::Test
152
182
  refute_nil result
153
183
  end
154
184
 
185
+ def test_create_radar_challenge_returns_expected_result
186
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/radar_challenges(\?|\z)})
187
+ .to_return(body: "{}", status: 200)
188
+ result = @client.user_management.create_radar_challenge(user_id: "stub", pending_authentication_token: "stub", phone_number: "stub")
189
+ refute_nil result
190
+ end
191
+
155
192
  def test_revoke_session_returns_expected_result
156
193
  stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/sessions/revoke(\?|\z)})
157
194
  .to_return(body: "{}", status: 200)
@@ -159,6 +196,13 @@ class UserManagementTest < Minitest::Test
159
196
  assert_nil result
160
197
  end
161
198
 
199
+ def test_list_cors_origins_returns_expected_result
200
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/cors_origins(\?|\z)})
201
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
202
+ result = @client.user_management.list_cors_origins
203
+ assert_kind_of WorkOS::Types::ListStruct, result
204
+ end
205
+
162
206
  def test_create_cors_origin_returns_expected_result
163
207
  stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/cors_origins(\?|\z)})
164
208
  .to_return(body: "{}", status: 200)
@@ -345,6 +389,13 @@ class UserManagementTest < Minitest::Test
345
389
  refute_nil result
346
390
  end
347
391
 
392
+ def test_list_jwt_template_returns_expected_result
393
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)})
394
+ .to_return(body: "{}", status: 200)
395
+ result = @client.user_management.list_jwt_template
396
+ refute_nil result
397
+ end
398
+
348
399
  def test_update_jwt_template_returns_expected_result
349
400
  stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)})
350
401
  .to_return(body: "{}", status: 200)
@@ -366,73 +417,13 @@ class UserManagementTest < Minitest::Test
366
417
  refute_nil result
367
418
  end
368
419
 
369
- def test_list_organization_memberships_returns_expected_result
370
- stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
420
+ def test_list_redirect_uris_returns_expected_result
421
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)})
371
422
  .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
372
- result = @client.user_management.list_organization_memberships
423
+ result = @client.user_management.list_redirect_uris
373
424
  assert_kind_of WorkOS::Types::ListStruct, result
374
425
  end
375
426
 
376
- def test_create_organization_membership_returns_expected_result
377
- stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
378
- .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slug" => "stub"))
379
- .to_return(body: "{}", status: 200)
380
- result = @client.user_management.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub"))
381
- refute_nil result
382
- end
383
-
384
- def test_create_organization_membership_with_role_multiple_returns_expected_result
385
- stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)})
386
- .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slugs" => ["stub"]))
387
- .to_return(body: "{}", status: 200)
388
- result = @client.user_management.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleMultiple.new(role_slugs: ["stub"]))
389
- refute_nil result
390
- end
391
-
392
- def test_get_organization_membership_returns_expected_result
393
- stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
394
- .to_return(body: "{}", status: 200)
395
- result = @client.user_management.get_organization_membership(id: "stub")
396
- refute_nil result
397
- end
398
-
399
- def test_update_organization_membership_returns_expected_result
400
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
401
- .with(body: hash_including("role_slug" => "stub"))
402
- .to_return(body: "{}", status: 200)
403
- result = @client.user_management.update_organization_membership(id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub"))
404
- refute_nil result
405
- end
406
-
407
- def test_update_organization_membership_with_role_multiple_returns_expected_result
408
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
409
- .with(body: hash_including("role_slugs" => ["stub"]))
410
- .to_return(body: "{}", status: 200)
411
- result = @client.user_management.update_organization_membership(id: "stub", role: WorkOS::UserManagement::RoleMultiple.new(role_slugs: ["stub"]))
412
- refute_nil result
413
- end
414
-
415
- def test_delete_organization_membership_returns_expected_result
416
- stub_request(:delete, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)})
417
- .to_return(body: "{}", status: 200)
418
- result = @client.user_management.delete_organization_membership(id: "stub")
419
- assert_nil result
420
- end
421
-
422
- def test_deactivate_organization_membership_returns_expected_result
423
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)})
424
- .to_return(body: "{}", status: 200)
425
- result = @client.user_management.deactivate_organization_membership(id: "stub")
426
- refute_nil result
427
- end
428
-
429
- def test_reactivate_organization_membership_returns_expected_result
430
- stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)})
431
- .to_return(body: "{}", status: 200)
432
- result = @client.user_management.reactivate_organization_membership(id: "stub")
433
- refute_nil result
434
- end
435
-
436
427
  def test_create_redirect_uri_returns_expected_result
437
428
  stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)})
438
429
  .to_return(body: "{}", status: 200)
@@ -454,12 +445,28 @@ class UserManagementTest < Minitest::Test
454
445
  assert_nil result
455
446
  end
456
447
 
448
+ def test_list_user_api_keys_returns_expected_result
449
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)})
450
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
451
+ result = @client.user_management.list_user_api_keys(user_id: "stub")
452
+ assert_kind_of WorkOS::Types::ListStruct, result
453
+ end
454
+
455
+ def test_create_user_api_key_returns_expected_result
456
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)})
457
+ .to_return(body: "{}", status: 200)
458
+ result = @client.user_management.create_user_api_key(user_id: "stub", name: "stub", organization_id: "stub")
459
+ refute_nil result
460
+ end
461
+
457
462
  # Parameterized authentication error tests (one per endpoint).
458
463
  [
459
464
  {name: :get_jwks, verb: :get, url: %r{\Ahttps://api\.workos\.com/sso/jwks/stub(\?|\z)}, args: {client_id: "stub"}},
460
- {name: :create_authenticate, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)}, args: {client_id: "stub", client_secret: "stub", grant_type: "authorization_code", code: "stub"}},
465
+ {name: :create_authenticate, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/authenticate(\?|\z)}, args: {client_id: "stub", grant_type: "authorization_code", code: "stub"}},
461
466
  {name: :create_device, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/authorize/device(\?|\z)}, args: {client_id: "stub"}},
467
+ {name: :create_radar_challenge, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/radar_challenges(\?|\z)}, args: {user_id: "stub", pending_authentication_token: "stub", phone_number: "stub"}},
462
468
  {name: :revoke_session, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/sessions/revoke(\?|\z)}, args: {session_id: "stub"}},
469
+ {name: :list_cors_origins, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/cors_origins(\?|\z)}},
463
470
  {name: :create_cors_origin, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/cors_origins(\?|\z)}, args: {origin: "stub"}},
464
471
  {name: :get_email_verification, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/email_verification/stub(\?|\z)}, args: {id: "stub"}},
465
472
  {name: :reset_password, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/password_reset(\?|\z)}, args: {email: "stub"}},
@@ -484,19 +491,16 @@ class UserManagementTest < Minitest::Test
484
491
  {name: :accept_invitation, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/invitations/stub/accept(\?|\z)}, args: {id: "stub"}},
485
492
  {name: :resend_invitation, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/invitations/stub/resend(\?|\z)}, args: {id: "stub"}},
486
493
  {name: :revoke_invitation, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/invitations/stub/revoke(\?|\z)}, args: {id: "stub"}},
494
+ {name: :list_jwt_template, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}},
487
495
  {name: :update_jwt_template, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}, args: {content: "stub"}},
488
496
  {name: :create_magic_auth, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/magic_auth(\?|\z)}, args: {email: "stub"}},
489
497
  {name: :get_magic_auth, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/magic_auth/stub(\?|\z)}, args: {id: "stub"}},
490
- {name: :list_organization_memberships, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}},
491
- {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")}},
492
- {name: :get_organization_membership, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}},
493
- {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")}},
494
- {name: :delete_organization_membership, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}},
495
- {name: :deactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}, args: {id: "stub"}},
496
- {name: :reactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}, args: {id: "stub"}},
498
+ {name: :list_redirect_uris, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)}},
497
499
  {name: :create_redirect_uri, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)}, args: {uri: "stub"}},
498
500
  {name: :list_user_authorized_applications, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/authorized_applications(\?|\z)}, args: {user_id: "stub"}},
499
- {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"}}
501
+ {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"}},
502
+ {name: :list_user_api_keys, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)}, args: {user_id: "stub"}},
503
+ {name: :create_user_api_key, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)}, args: {user_id: "stub", name: "stub", organization_id: "stub"}}
500
504
  ].each do |spec|
501
505
  define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do
502
506
  stub_request(spec[:verb], spec[:url])