workos 6.2.0 → 7.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 (1371) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +6 -9
  3. data/.github/workflows/lint.yml +25 -0
  4. data/.github/workflows/release-please.yml +30 -2
  5. data/.github/workflows/release.yml +2 -6
  6. data/.last-synced-sha +1 -0
  7. data/.oagen-manifest.json +1750 -0
  8. data/.release-please-manifest.json +1 -1
  9. data/.ruby-version +1 -1
  10. data/.standard.yml +1 -0
  11. data/CHANGELOG.md +41 -0
  12. data/Gemfile +1 -1
  13. data/Gemfile.lock +93 -47
  14. data/README.md +161 -14
  15. data/Rakefile +8 -4
  16. data/docs/V7_MIGRATION_GUIDE.md +780 -0
  17. data/lib/workos/actions.rb +93 -0
  18. data/lib/workos/admin_portal/domain_verification_intent_options.rb +18 -0
  19. data/lib/workos/admin_portal/generate_link.rb +34 -0
  20. data/lib/workos/admin_portal/intent_options.rb +22 -0
  21. data/lib/workos/admin_portal/portal_link_response.rb +18 -0
  22. data/lib/workos/admin_portal/sso_intent_options.rb +22 -0
  23. data/lib/workos/admin_portal.rb +51 -0
  24. data/lib/workos/api_keys/api_key.rb +43 -0
  25. data/lib/workos/api_keys/api_key_created.rb +34 -0
  26. data/lib/workos/api_keys/api_key_created_data.rb +43 -0
  27. data/lib/workos/api_keys/api_key_created_data_owner.rb +22 -0
  28. data/lib/workos/api_keys/api_key_owner.rb +7 -0
  29. data/lib/workos/api_keys/api_key_revoked.rb +34 -0
  30. data/lib/workos/api_keys/api_key_revoked_data.rb +7 -0
  31. data/lib/workos/api_keys/api_key_revoked_data_owner.rb +7 -0
  32. data/lib/workos/api_keys/api_key_validation_response.rb +18 -0
  33. data/lib/workos/api_keys/api_key_with_value.rb +46 -0
  34. data/lib/workos/api_keys/api_key_with_value_owner.rb +7 -0
  35. data/lib/workos/api_keys/create_organization_api_key.rb +22 -0
  36. data/lib/workos/api_keys/validate_api_key.rb +18 -0
  37. data/lib/workos/api_keys.rb +128 -0
  38. data/lib/workos/audit_logs/audit_log_action.rb +36 -0
  39. data/lib/workos/audit_logs/audit_log_action_json.rb +31 -0
  40. data/lib/workos/audit_logs/audit_log_event.rb +37 -0
  41. data/lib/workos/audit_logs/audit_log_event_actor.rb +28 -0
  42. data/lib/workos/audit_logs/audit_log_event_context.rb +22 -0
  43. data/lib/workos/audit_logs/audit_log_event_create_response.rb +18 -0
  44. data/lib/workos/audit_logs/audit_log_event_ingestion.rb +22 -0
  45. data/lib/workos/audit_logs/audit_log_event_target.rb +7 -0
  46. data/lib/workos/audit_logs/audit_log_export.rb +39 -0
  47. data/lib/workos/audit_logs/audit_log_export_creation.rb +49 -0
  48. data/lib/workos/audit_logs/audit_log_export_json.rb +34 -0
  49. data/lib/workos/audit_logs/audit_log_schema.rb +25 -0
  50. data/lib/workos/audit_logs/audit_log_schema_actor.rb +18 -0
  51. data/lib/workos/audit_logs/audit_log_schema_json.rb +34 -0
  52. data/lib/workos/audit_logs/audit_log_schema_json_actor.rb +7 -0
  53. data/lib/workos/audit_logs/audit_log_schema_json_target.rb +22 -0
  54. data/lib/workos/audit_logs/audit_log_schema_target.rb +7 -0
  55. data/lib/workos/audit_logs.rb +252 -72
  56. data/lib/workos/authorization/add_role_permission.rb +18 -0
  57. data/lib/workos/authorization/assign_role.rb +28 -0
  58. data/lib/workos/authorization/authorization_check.rb +18 -0
  59. data/lib/workos/authorization/authorization_permission.rb +43 -0
  60. data/lib/workos/authorization/authorization_resource.rb +46 -0
  61. data/lib/workos/authorization/check_authorization.rb +28 -0
  62. data/lib/workos/authorization/create_authorization_permission.rb +28 -0
  63. data/lib/workos/authorization/create_authorization_resource.rb +40 -0
  64. data/lib/workos/authorization/create_organization_role.rb +28 -0
  65. data/lib/workos/authorization/create_role.rb +7 -0
  66. data/lib/workos/authorization/permission.rb +7 -0
  67. data/lib/workos/authorization/permission_created.rb +34 -0
  68. data/lib/workos/authorization/permission_created_data.rb +40 -0
  69. data/lib/workos/authorization/permission_deleted.rb +34 -0
  70. data/lib/workos/authorization/permission_deleted_data.rb +7 -0
  71. data/lib/workos/authorization/permission_updated.rb +34 -0
  72. data/lib/workos/authorization/permission_updated_data.rb +7 -0
  73. data/lib/workos/authorization/remove_role.rb +7 -0
  74. data/lib/workos/authorization/role.rb +46 -0
  75. data/lib/workos/authorization/role_assignment.rb +34 -0
  76. data/lib/workos/authorization/role_assignment_resource.rb +25 -0
  77. data/lib/workos/authorization/role_created.rb +34 -0
  78. data/lib/workos/authorization/role_created_data.rb +34 -0
  79. data/lib/workos/authorization/role_deleted.rb +34 -0
  80. data/lib/workos/authorization/role_deleted_data.rb +7 -0
  81. data/lib/workos/authorization/role_list.rb +22 -0
  82. data/lib/workos/authorization/role_updated.rb +34 -0
  83. data/lib/workos/authorization/role_updated_data.rb +7 -0
  84. data/lib/workos/authorization/set_role_permissions.rb +18 -0
  85. data/lib/workos/authorization/slim_role.rb +7 -0
  86. data/lib/workos/authorization/update_authorization_permission.rb +22 -0
  87. data/lib/workos/authorization/update_authorization_resource.rb +31 -0
  88. data/lib/workos/authorization/update_organization_role.rb +7 -0
  89. data/lib/workos/authorization/update_role.rb +7 -0
  90. data/lib/workos/authorization/user_organization_membership_base_list_data.rb +46 -0
  91. data/lib/workos/authorization.rb +1283 -0
  92. data/lib/workos/base_client.rb +350 -0
  93. data/lib/workos/client.rb +102 -159
  94. data/lib/workos/configuration.rb +56 -5
  95. data/lib/workos/connect/application_credentials_list_item.rb +34 -0
  96. data/lib/workos/connect/connect_application.rb +46 -0
  97. data/lib/workos/connect/create_application_secret.rb +13 -0
  98. data/lib/workos/connect/create_m2m_application.rb +31 -0
  99. data/lib/workos/connect/create_oauth_application.rb +40 -0
  100. data/lib/workos/connect/external_auth_complete_response.rb +18 -0
  101. data/lib/workos/connect/new_connect_application_secret.rb +37 -0
  102. data/lib/workos/connect/redirect_uri_input.rb +22 -0
  103. data/lib/workos/connect/update_oauth_application.rb +28 -0
  104. data/lib/workos/connect/user_consent_option.rb +28 -0
  105. data/lib/workos/connect/user_consent_option_choice.rb +22 -0
  106. data/lib/workos/connect/user_management_login_request.rb +25 -0
  107. data/lib/workos/connect/user_object.rb +31 -0
  108. data/lib/workos/connect.rb +329 -0
  109. data/lib/workos/directory_sync/directory.rb +49 -0
  110. data/lib/workos/directory_sync/directory_group.rb +43 -0
  111. data/lib/workos/directory_sync/directory_metadata.rb +22 -0
  112. data/lib/workos/directory_sync/directory_metadata_user.rb +22 -0
  113. data/lib/workos/directory_sync/directory_user.rb +103 -0
  114. data/lib/workos/directory_sync/directory_user_email.rb +25 -0
  115. data/lib/workos/directory_sync/directory_user_with_groups.rb +114 -0
  116. data/lib/workos/directory_sync/directory_user_with_groups_email.rb +7 -0
  117. data/lib/workos/directory_sync/dsync_activated.rb +34 -0
  118. data/lib/workos/directory_sync/dsync_activated_data.rb +46 -0
  119. data/lib/workos/directory_sync/dsync_activated_data_domain.rb +25 -0
  120. data/lib/workos/directory_sync/dsync_deactivated.rb +34 -0
  121. data/lib/workos/directory_sync/dsync_deactivated_data.rb +46 -0
  122. data/lib/workos/directory_sync/dsync_deactivated_data_domain.rb +7 -0
  123. data/lib/workos/directory_sync/dsync_deleted.rb +34 -0
  124. data/lib/workos/directory_sync/dsync_deleted_data.rb +40 -0
  125. data/lib/workos/directory_sync/dsync_group_created.rb +34 -0
  126. data/lib/workos/directory_sync/dsync_group_deleted.rb +34 -0
  127. data/lib/workos/directory_sync/dsync_group_updated.rb +34 -0
  128. data/lib/workos/directory_sync/dsync_group_updated_data.rb +46 -0
  129. data/lib/workos/directory_sync/dsync_group_user_added.rb +34 -0
  130. data/lib/workos/directory_sync/dsync_group_user_added_data.rb +25 -0
  131. data/lib/workos/directory_sync/dsync_group_user_removed.rb +34 -0
  132. data/lib/workos/directory_sync/dsync_group_user_removed_data.rb +7 -0
  133. data/lib/workos/directory_sync/dsync_user_created.rb +34 -0
  134. data/lib/workos/directory_sync/dsync_user_deleted.rb +34 -0
  135. data/lib/workos/directory_sync/dsync_user_updated.rb +34 -0
  136. data/lib/workos/directory_sync/dsync_user_updated_data.rb +106 -0
  137. data/lib/workos/directory_sync/dsync_user_updated_data_email.rb +7 -0
  138. data/lib/workos/directory_sync.rb +230 -181
  139. data/lib/workos/encryptors/aes_gcm.rb +40 -33
  140. data/lib/workos/encryptors.rb +3 -3
  141. data/lib/workos/errors.rb +17 -75
  142. data/lib/workos/events/event_list_list_metadata.rb +18 -0
  143. data/lib/workos/events/event_schema.rb +34 -0
  144. data/lib/workos/events.rb +64 -38
  145. data/lib/workos/feature_flags/feature_flag.rb +49 -0
  146. data/lib/workos/feature_flags/feature_flag_owner.rb +25 -0
  147. data/lib/workos/feature_flags/flag.rb +7 -0
  148. data/lib/workos/feature_flags/flag_created.rb +34 -0
  149. data/lib/workos/feature_flags/flag_created_context.rb +22 -0
  150. data/lib/workos/feature_flags/flag_created_context_actor.rb +25 -0
  151. data/lib/workos/feature_flags/flag_created_data.rb +52 -0
  152. data/lib/workos/feature_flags/flag_created_data_owner.rb +7 -0
  153. data/lib/workos/feature_flags/flag_deleted.rb +34 -0
  154. data/lib/workos/feature_flags/flag_deleted_context.rb +22 -0
  155. data/lib/workos/feature_flags/flag_deleted_context_actor.rb +25 -0
  156. data/lib/workos/feature_flags/flag_deleted_data.rb +7 -0
  157. data/lib/workos/feature_flags/flag_deleted_data_owner.rb +7 -0
  158. data/lib/workos/feature_flags/flag_owner.rb +7 -0
  159. data/lib/workos/feature_flags/flag_rule_updated.rb +34 -0
  160. data/lib/workos/feature_flags/flag_rule_updated_context.rb +31 -0
  161. data/lib/workos/feature_flags/flag_rule_updated_context_actor.rb +25 -0
  162. data/lib/workos/feature_flags/flag_rule_updated_context_configured_target.rb +22 -0
  163. data/lib/workos/feature_flags/flag_rule_updated_context_configured_target_organization.rb +22 -0
  164. data/lib/workos/feature_flags/flag_rule_updated_context_configured_target_user.rb +22 -0
  165. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute.rb +22 -0
  166. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context.rb +22 -0
  167. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context_configured_target.rb +7 -0
  168. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context_configured_target_organization.rb +7 -0
  169. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context_configured_target_user.rb +7 -0
  170. data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_data.rb +22 -0
  171. data/lib/workos/feature_flags/flag_rule_updated_data.rb +7 -0
  172. data/lib/workos/feature_flags/flag_rule_updated_data_owner.rb +7 -0
  173. data/lib/workos/feature_flags/flag_updated.rb +34 -0
  174. data/lib/workos/feature_flags/flag_updated_context.rb +25 -0
  175. data/lib/workos/feature_flags/flag_updated_context_actor.rb +25 -0
  176. data/lib/workos/feature_flags/flag_updated_context_previous_attribute.rb +18 -0
  177. data/lib/workos/feature_flags/flag_updated_context_previous_attribute_data.rb +31 -0
  178. data/lib/workos/feature_flags/flag_updated_data.rb +7 -0
  179. data/lib/workos/feature_flags/flag_updated_data_owner.rb +7 -0
  180. data/lib/workos/feature_flags.rb +246 -0
  181. data/lib/workos/groups/create_group.rb +22 -0
  182. data/lib/workos/groups/create_group_membership.rb +18 -0
  183. data/lib/workos/groups/group.rb +37 -0
  184. data/lib/workos/groups/update_group.rb +7 -0
  185. data/lib/workos/groups.rb +256 -0
  186. data/lib/workos/hash_provider.rb +34 -8
  187. data/lib/workos/inflections.rb +64 -0
  188. data/lib/workos/multi_factor_auth/authentication_challenge.rb +37 -0
  189. data/lib/workos/multi_factor_auth/authentication_challenge_verify_response.rb +22 -0
  190. data/lib/workos/multi_factor_auth/authentication_challenges_verify_request.rb +18 -0
  191. data/lib/workos/multi_factor_auth/authentication_factor.rb +40 -0
  192. data/lib/workos/multi_factor_auth/authentication_factor_enrolled.rb +40 -0
  193. data/lib/workos/multi_factor_auth/authentication_factor_enrolled_sms.rb +18 -0
  194. data/lib/workos/multi_factor_auth/authentication_factor_enrolled_totp.rb +31 -0
  195. data/lib/workos/multi_factor_auth/authentication_factor_sms.rb +7 -0
  196. data/lib/workos/multi_factor_auth/authentication_factor_totp.rb +22 -0
  197. data/lib/workos/multi_factor_auth/authentication_factors_create_request.rb +31 -0
  198. data/lib/workos/multi_factor_auth/challenge_authentication_factor.rb +18 -0
  199. data/lib/workos/multi_factor_auth/enroll_user_authentication_factor.rb +28 -0
  200. data/lib/workos/multi_factor_auth/user_authentication_factor_enroll_response.rb +22 -0
  201. data/lib/workos/multi_factor_auth.rb +215 -0
  202. data/lib/workos/organization_domains/create_organization_domain.rb +22 -0
  203. data/lib/workos/organization_domains/organization_domain.rb +46 -0
  204. data/lib/workos/organization_domains/organization_domain_created.rb +34 -0
  205. data/lib/workos/organization_domains/organization_domain_created_data.rb +46 -0
  206. data/lib/workos/organization_domains/organization_domain_deleted.rb +34 -0
  207. data/lib/workos/organization_domains/organization_domain_deleted_data.rb +46 -0
  208. data/lib/workos/organization_domains/organization_domain_stand_alone.rb +46 -0
  209. data/lib/workos/organization_domains/organization_domain_updated.rb +34 -0
  210. data/lib/workos/organization_domains/organization_domain_updated_data.rb +46 -0
  211. data/lib/workos/organization_domains/organization_domain_verification_failed.rb +34 -0
  212. data/lib/workos/organization_domains/organization_domain_verification_failed_data.rb +22 -0
  213. data/lib/workos/organization_domains/organization_domain_verification_failed_data_organization_domain.rb +46 -0
  214. data/lib/workos/organization_domains/organization_domain_verified.rb +34 -0
  215. data/lib/workos/organization_domains/organization_domain_verified_data.rb +46 -0
  216. data/lib/workos/organization_domains.rb +94 -0
  217. data/lib/workos/organizations/audit_log_configuration.rb +28 -0
  218. data/lib/workos/organizations/audit_log_configuration_log_stream.rb +31 -0
  219. data/lib/workos/organizations/audit_logs_retention.rb +23 -0
  220. data/lib/workos/organizations/audit_logs_retention_json.rb +18 -0
  221. data/lib/workos/organizations/organization.rb +55 -0
  222. data/lib/workos/organizations/organization_created.rb +34 -0
  223. data/lib/workos/organizations/organization_created_data.rb +43 -0
  224. data/lib/workos/organizations/organization_created_data_domain.rb +46 -0
  225. data/lib/workos/organizations/organization_deleted.rb +34 -0
  226. data/lib/workos/organizations/organization_deleted_data.rb +43 -0
  227. data/lib/workos/organizations/organization_deleted_data_domain.rb +46 -0
  228. data/lib/workos/organizations/organization_domain_data.rb +22 -0
  229. data/lib/workos/organizations/organization_input.rb +34 -0
  230. data/lib/workos/organizations/organization_membership_created.rb +34 -0
  231. data/lib/workos/organizations/organization_membership_created_data.rb +49 -0
  232. data/lib/workos/organizations/organization_membership_deleted.rb +34 -0
  233. data/lib/workos/organizations/organization_membership_deleted_data.rb +49 -0
  234. data/lib/workos/organizations/organization_membership_updated.rb +34 -0
  235. data/lib/workos/organizations/organization_membership_updated_data.rb +49 -0
  236. data/lib/workos/organizations/organization_role_created.rb +34 -0
  237. data/lib/workos/organizations/organization_role_created_data.rb +43 -0
  238. data/lib/workos/organizations/organization_role_deleted.rb +34 -0
  239. data/lib/workos/organizations/organization_role_deleted_data.rb +7 -0
  240. data/lib/workos/organizations/organization_role_updated.rb +34 -0
  241. data/lib/workos/organizations/organization_role_updated_data.rb +7 -0
  242. data/lib/workos/organizations/organization_updated.rb +34 -0
  243. data/lib/workos/organizations/organization_updated_data.rb +43 -0
  244. data/lib/workos/organizations/organization_updated_data_domain.rb +46 -0
  245. data/lib/workos/organizations/update_audit_logs_retention.rb +18 -0
  246. data/lib/workos/organizations/update_organization.rb +46 -0
  247. data/lib/workos/organizations.rb +203 -271
  248. data/lib/workos/passwordless.rb +63 -58
  249. data/lib/workos/pipes/connected_account.rb +40 -0
  250. data/lib/workos/pipes/data_integration_access_token_response.rb +25 -0
  251. data/lib/workos/pipes/data_integration_access_token_response_access_token.rb +31 -0
  252. data/lib/workos/pipes/data_integration_authorize_url_response.rb +18 -0
  253. data/lib/workos/pipes/data_integrations_get_data_integration_authorize_url_request.rb +25 -0
  254. data/lib/workos/pipes/data_integrations_get_user_token_request.rb +22 -0
  255. data/lib/workos/pipes/data_integrations_list_response.rb +22 -0
  256. data/lib/workos/pipes/data_integrations_list_response_data.rb +52 -0
  257. data/lib/workos/pipes/data_integrations_list_response_data_connected_account.rb +52 -0
  258. data/lib/workos/pipes.rb +149 -0
  259. data/lib/workos/pkce.rb +42 -0
  260. data/lib/workos/public_client.rb +27 -0
  261. data/lib/workos/radar/radar_list_entry_already_present_response.rb +18 -0
  262. data/lib/workos/radar/radar_standalone_assess_request.rb +37 -0
  263. data/lib/workos/radar/radar_standalone_delete_radar_list_entry_request.rb +18 -0
  264. data/lib/workos/radar/radar_standalone_response.rb +31 -0
  265. data/lib/workos/radar/radar_standalone_update_radar_attempt_request.rb +22 -0
  266. data/lib/workos/radar/radar_standalone_update_radar_list_request.rb +7 -0
  267. data/lib/workos/radar.rb +132 -0
  268. data/lib/workos/session.rb +108 -160
  269. data/lib/workos/session_manager.rb +196 -0
  270. data/lib/workos/shared/event_context.rb +34 -0
  271. data/lib/workos/shared/event_context_actor.rb +25 -0
  272. data/lib/workos/shared/event_context_google_analytics_session.rb +25 -0
  273. data/lib/workos/shared/group_created.rb +34 -0
  274. data/lib/workos/shared/group_deleted.rb +34 -0
  275. data/lib/workos/shared/group_member_added.rb +34 -0
  276. data/lib/workos/shared/group_member_added_data.rb +22 -0
  277. data/lib/workos/shared/group_member_removed.rb +34 -0
  278. data/lib/workos/shared/group_member_removed_data.rb +7 -0
  279. data/lib/workos/shared/group_updated.rb +34 -0
  280. data/lib/workos/shared/waitlist_user.rb +37 -0
  281. data/lib/workos/shared/waitlist_user_approved.rb +34 -0
  282. data/lib/workos/shared/waitlist_user_created.rb +34 -0
  283. data/lib/workos/shared/waitlist_user_denied.rb +34 -0
  284. data/lib/workos/sso/connection.rb +58 -0
  285. data/lib/workos/sso/connection_activated.rb +34 -0
  286. data/lib/workos/sso/connection_activated_data.rb +49 -0
  287. data/lib/workos/sso/connection_activated_data_domain.rb +25 -0
  288. data/lib/workos/sso/connection_deactivated.rb +34 -0
  289. data/lib/workos/sso/connection_deactivated_data.rb +49 -0
  290. data/lib/workos/sso/connection_deactivated_data_domain.rb +7 -0
  291. data/lib/workos/sso/connection_deleted.rb +34 -0
  292. data/lib/workos/sso/connection_deleted_data.rb +40 -0
  293. data/lib/workos/sso/connection_domain.rb +7 -0
  294. data/lib/workos/sso/connection_option.rb +18 -0
  295. data/lib/workos/sso/connection_saml_certificate_renewal_required.rb +34 -0
  296. data/lib/workos/sso/connection_saml_certificate_renewal_required_data.rb +25 -0
  297. data/lib/workos/sso/connection_saml_certificate_renewal_required_data_certificate.rb +25 -0
  298. data/lib/workos/sso/connection_saml_certificate_renewal_required_data_connection.rb +22 -0
  299. data/lib/workos/sso/connection_saml_certificate_renewed.rb +34 -0
  300. data/lib/workos/sso/connection_saml_certificate_renewed_data.rb +25 -0
  301. data/lib/workos/sso/connection_saml_certificate_renewed_data_certificate.rb +22 -0
  302. data/lib/workos/sso/connection_saml_certificate_renewed_data_connection.rb +7 -0
  303. data/lib/workos/sso/profile.rb +58 -0
  304. data/lib/workos/sso/sso_authorize_url_response.rb +18 -0
  305. data/lib/workos/sso/sso_logout_authorize_request.rb +18 -0
  306. data/lib/workos/sso/sso_logout_authorize_response.rb +22 -0
  307. data/lib/workos/sso/sso_token_response.rb +31 -0
  308. data/lib/workos/sso/sso_token_response_oauth_token.rb +7 -0
  309. data/lib/workos/sso/token_query.rb +28 -0
  310. data/lib/workos/sso.rb +231 -212
  311. data/lib/workos/types/api_response.rb +10 -0
  312. data/lib/workos/types/applications_order.rb +14 -0
  313. data/lib/workos/types/audit_log_configuration_log_stream_state.rb +15 -0
  314. data/lib/workos/types/audit_log_configuration_log_stream_type.rb +17 -0
  315. data/lib/workos/types/audit_log_configuration_state.rb +14 -0
  316. data/lib/workos/types/audit_log_export_json_state.rb +14 -0
  317. data/lib/workos/types/audit_log_export_state.rb +14 -0
  318. data/lib/workos/types/audit_logs_order.rb +9 -0
  319. data/lib/workos/types/authenticate_response_authentication_method.rb +33 -0
  320. data/lib/workos/types/authentication_factor_enrolled_type.rb +15 -0
  321. data/lib/workos/types/authentication_factor_type.rb +9 -0
  322. data/lib/workos/types/authentication_factors_create_request_type.rb +14 -0
  323. data/lib/workos/types/authentication_radar_risk_detected_data_action.rb +13 -0
  324. data/lib/workos/types/authorization_assignment.rb +13 -0
  325. data/lib/workos/types/authorization_order.rb +9 -0
  326. data/lib/workos/types/base_model.rb +35 -0
  327. data/lib/workos/types/connected_account_state.rb +14 -0
  328. data/lib/workos/types/connection_activated_data_connection_type.rb +61 -0
  329. data/lib/workos/types/connection_activated_data_state.rb +16 -0
  330. data/lib/workos/types/connection_activated_data_status.rb +13 -0
  331. data/lib/workos/types/connection_deactivated_data_connection_type.rb +9 -0
  332. data/lib/workos/types/connection_deactivated_data_state.rb +9 -0
  333. data/lib/workos/types/connection_deactivated_data_status.rb +9 -0
  334. data/lib/workos/types/connection_deleted_data_connection_type.rb +9 -0
  335. data/lib/workos/types/connection_deleted_data_state.rb +9 -0
  336. data/lib/workos/types/connection_saml_certificate_renewal_required_data_certificate_certificate_type.rb +14 -0
  337. data/lib/workos/types/connection_saml_certificate_renewed_data_certificate_certificate_type.rb +9 -0
  338. data/lib/workos/types/connection_state.rb +17 -0
  339. data/lib/workos/types/connection_status.rb +9 -0
  340. data/lib/workos/types/connection_type.rb +62 -0
  341. data/lib/workos/types/connections_connection_type.rb +59 -0
  342. data/lib/workos/types/connections_order.rb +9 -0
  343. data/lib/workos/types/create_user_invite_options_locale.rb +101 -0
  344. data/lib/workos/types/create_user_password_hash_type.rb +17 -0
  345. data/lib/workos/types/create_webhook_endpoint_events.rb +88 -0
  346. data/lib/workos/types/data_integration_access_token_response_error.rb +13 -0
  347. data/lib/workos/types/data_integrations_list_response_data_connected_account_state.rb +9 -0
  348. data/lib/workos/types/data_integrations_list_response_data_ownership.rb +13 -0
  349. data/lib/workos/types/directories_order.rb +9 -0
  350. data/lib/workos/types/directory_groups_order.rb +9 -0
  351. data/lib/workos/types/directory_state.rb +16 -0
  352. data/lib/workos/types/directory_type.rb +32 -0
  353. data/lib/workos/types/directory_user_state.rb +14 -0
  354. data/lib/workos/types/directory_user_with_groups_state.rb +9 -0
  355. data/lib/workos/types/directory_users_order.rb +9 -0
  356. data/lib/workos/types/dsync_activated_data_state.rb +16 -0
  357. data/lib/workos/types/dsync_activated_data_type.rb +34 -0
  358. data/lib/workos/types/dsync_deactivated_data_state.rb +9 -0
  359. data/lib/workos/types/dsync_deactivated_data_type.rb +9 -0
  360. data/lib/workos/types/dsync_deleted_data_state.rb +9 -0
  361. data/lib/workos/types/dsync_deleted_data_type.rb +9 -0
  362. data/lib/workos/types/dsync_user_updated_data_state.rb +9 -0
  363. data/lib/workos/types/event_context_actor_source.rb +14 -0
  364. data/lib/workos/types/events_order.rb +9 -0
  365. data/lib/workos/types/feature_flags_order.rb +9 -0
  366. data/lib/workos/types/flag_created_context_actor_source.rb +9 -0
  367. data/lib/workos/types/flag_deleted_context_actor_source.rb +9 -0
  368. data/lib/workos/types/flag_rule_updated_context_access_type.rb +14 -0
  369. data/lib/workos/types/flag_rule_updated_context_actor_source.rb +9 -0
  370. data/lib/workos/types/flag_rule_updated_context_previous_attribute_context_access_type.rb +9 -0
  371. data/lib/workos/types/flag_updated_context_actor_source.rb +9 -0
  372. data/lib/workos/types/generate_link_intent.rb +18 -0
  373. data/lib/workos/types/groups_order.rb +9 -0
  374. data/lib/workos/types/invitation_accepted_data_state.rb +15 -0
  375. data/lib/workos/types/invitation_created_data_state.rb +9 -0
  376. data/lib/workos/types/invitation_resent_data_state.rb +9 -0
  377. data/lib/workos/types/invitation_revoked_data_state.rb +9 -0
  378. data/lib/workos/types/invitation_state.rb +9 -0
  379. data/lib/workos/types/list_struct.rb +122 -6
  380. data/lib/workos/types/organization_created_data_domain_state.rb +16 -0
  381. data/lib/workos/types/organization_created_data_domain_verification_strategy.rb +13 -0
  382. data/lib/workos/types/organization_deleted_data_domain_state.rb +9 -0
  383. data/lib/workos/types/organization_deleted_data_domain_verification_strategy.rb +9 -0
  384. data/lib/workos/types/organization_domain_created_data_state.rb +9 -0
  385. data/lib/workos/types/organization_domain_created_data_verification_strategy.rb +9 -0
  386. data/lib/workos/types/organization_domain_data_state.rb +13 -0
  387. data/lib/workos/types/organization_domain_deleted_data_state.rb +9 -0
  388. data/lib/workos/types/organization_domain_deleted_data_verification_strategy.rb +9 -0
  389. data/lib/workos/types/organization_domain_stand_alone_state.rb +9 -0
  390. data/lib/workos/types/organization_domain_stand_alone_verification_strategy.rb +9 -0
  391. data/lib/workos/types/organization_domain_state.rb +9 -0
  392. data/lib/workos/types/organization_domain_updated_data_state.rb +9 -0
  393. data/lib/workos/types/organization_domain_updated_data_verification_strategy.rb +9 -0
  394. data/lib/workos/types/organization_domain_verification_failed_data_organization_domain_state.rb +9 -0
  395. data/lib/workos/types/organization_domain_verification_failed_data_organization_domain_verification_strategy.rb +9 -0
  396. data/lib/workos/types/organization_domain_verification_failed_data_reason.rb +13 -0
  397. data/lib/workos/types/organization_domain_verification_strategy.rb +9 -0
  398. data/lib/workos/types/organization_domain_verified_data_state.rb +9 -0
  399. data/lib/workos/types/organization_domain_verified_data_verification_strategy.rb +9 -0
  400. data/lib/workos/types/organization_membership_created_data_status.rb +14 -0
  401. data/lib/workos/types/organization_membership_deleted_data_status.rb +9 -0
  402. data/lib/workos/types/organization_membership_status.rb +9 -0
  403. data/lib/workos/types/organization_membership_updated_data_status.rb +9 -0
  404. data/lib/workos/types/organization_updated_data_domain_state.rb +9 -0
  405. data/lib/workos/types/organization_updated_data_domain_verification_strategy.rb +9 -0
  406. data/lib/workos/types/organizations_api_keys_order.rb +9 -0
  407. data/lib/workos/types/organizations_feature_flags_order.rb +9 -0
  408. data/lib/workos/types/organizations_order.rb +9 -0
  409. data/lib/workos/types/permissions_order.rb +9 -0
  410. data/lib/workos/types/profile_connection_type.rb +9 -0
  411. data/lib/workos/types/radar_action.rb +13 -0
  412. data/lib/workos/types/radar_standalone_assess_request_action.rb +19 -0
  413. data/lib/workos/types/radar_standalone_assess_request_auth_method.rb +19 -0
  414. data/lib/workos/types/radar_standalone_response_blocklist_type.rb +18 -0
  415. data/lib/workos/types/radar_standalone_response_control.rb +21 -0
  416. data/lib/workos/types/radar_standalone_response_verdict.rb +14 -0
  417. data/lib/workos/types/radar_type.rb +9 -0
  418. data/lib/workos/types/request_options.rb +33 -0
  419. data/lib/workos/types/resend_user_invite_options_locale.rb +9 -0
  420. data/lib/workos/types/role_type.rb +13 -0
  421. data/lib/workos/types/session_created_data_auth_method.rb +21 -0
  422. data/lib/workos/types/session_created_data_status.rb +14 -0
  423. data/lib/workos/types/session_revoked_data_auth_method.rb +9 -0
  424. data/lib/workos/types/session_revoked_data_status.rb +9 -0
  425. data/lib/workos/types/sso_provider.rb +24 -0
  426. data/lib/workos/types/update_user_password_hash_type.rb +9 -0
  427. data/lib/workos/types/update_webhook_endpoint_events.rb +9 -0
  428. data/lib/workos/types/update_webhook_endpoint_status.rb +13 -0
  429. data/lib/workos/types/user_identities_get_item_provider.rb +25 -0
  430. data/lib/workos/types/user_invite_state.rb +9 -0
  431. data/lib/workos/types/user_management_authentication_provider.rb +25 -0
  432. data/lib/workos/types/user_management_authentication_screen_hint.rb +13 -0
  433. data/lib/workos/types/user_management_invitations_order.rb +9 -0
  434. data/lib/workos/types/user_management_multi_factor_authentication_order.rb +9 -0
  435. data/lib/workos/types/user_management_organization_membership_groups_order.rb +9 -0
  436. data/lib/workos/types/user_management_organization_membership_order.rb +9 -0
  437. data/lib/workos/types/user_management_organization_membership_statuses.rb +9 -0
  438. data/lib/workos/types/user_management_users_authorized_applications_order.rb +9 -0
  439. data/lib/workos/types/user_management_users_feature_flags_order.rb +9 -0
  440. data/lib/workos/types/user_management_users_order.rb +9 -0
  441. data/lib/workos/types/user_organization_membership_base_list_data_status.rb +9 -0
  442. data/lib/workos/types/user_organization_membership_status.rb +9 -0
  443. data/lib/workos/types/user_sessions_auth_method.rb +9 -0
  444. data/lib/workos/types/user_sessions_status.rb +9 -0
  445. data/lib/workos/types/vault_byok_key_verification_completed_data_key_provider.rb +14 -0
  446. data/lib/workos/types/vault_data_created_data_actor_source.rb +13 -0
  447. data/lib/workos/types/vault_data_deleted_data_actor_source.rb +9 -0
  448. data/lib/workos/types/vault_data_read_data_actor_source.rb +9 -0
  449. data/lib/workos/types/vault_data_updated_data_actor_source.rb +9 -0
  450. data/lib/workos/types/vault_dek_decrypted_data_actor_source.rb +9 -0
  451. data/lib/workos/types/vault_dek_read_data_actor_source.rb +9 -0
  452. data/lib/workos/types/vault_kek_created_data_actor_source.rb +9 -0
  453. data/lib/workos/types/vault_metadata_read_data_actor_source.rb +9 -0
  454. data/lib/workos/types/vault_names_listed_data_actor_source.rb +9 -0
  455. data/lib/workos/types/waitlist_user_state.rb +14 -0
  456. data/lib/workos/types/webhook_endpoint_json_status.rb +9 -0
  457. data/lib/workos/types/webhook_endpoint_status.rb +13 -0
  458. data/lib/workos/types/webhooks_order.rb +9 -0
  459. data/lib/workos/types/widget_session_token_scopes.rb +17 -0
  460. data/lib/workos/user_management/action_authentication_denied.rb +34 -0
  461. data/lib/workos/user_management/action_authentication_denied_data.rb +43 -0
  462. data/lib/workos/user_management/action_user_registration_denied.rb +34 -0
  463. data/lib/workos/user_management/action_user_registration_denied_data.rb +40 -0
  464. data/lib/workos/user_management/authenticate_response.rb +40 -0
  465. data/lib/workos/user_management/authenticate_response_impersonator.rb +22 -0
  466. data/lib/workos/user_management/authenticate_response_oauth_token.rb +31 -0
  467. data/lib/workos/user_management/authentication_email_verification_failed.rb +34 -0
  468. data/lib/workos/user_management/authentication_email_verification_failed_data.rb +37 -0
  469. data/lib/workos/user_management/authentication_email_verification_failed_data_error.rb +22 -0
  470. data/lib/workos/user_management/authentication_email_verification_succeeded.rb +34 -0
  471. data/lib/workos/user_management/authentication_email_verification_succeeded_data.rb +34 -0
  472. data/lib/workos/user_management/authentication_magic_auth_failed.rb +34 -0
  473. data/lib/workos/user_management/authentication_magic_auth_failed_data.rb +37 -0
  474. data/lib/workos/user_management/authentication_magic_auth_failed_data_error.rb +7 -0
  475. data/lib/workos/user_management/authentication_magic_auth_succeeded.rb +34 -0
  476. data/lib/workos/user_management/authentication_magic_auth_succeeded_data.rb +34 -0
  477. data/lib/workos/user_management/authentication_mfa_failed.rb +34 -0
  478. data/lib/workos/user_management/authentication_mfa_failed_data.rb +37 -0
  479. data/lib/workos/user_management/authentication_mfa_failed_data_error.rb +7 -0
  480. data/lib/workos/user_management/authentication_mfa_succeeded.rb +34 -0
  481. data/lib/workos/user_management/authentication_mfa_succeeded_data.rb +34 -0
  482. data/lib/workos/user_management/authentication_oauth_failed.rb +34 -0
  483. data/lib/workos/user_management/authentication_oauth_failed_data.rb +37 -0
  484. data/lib/workos/user_management/authentication_oauth_failed_data_error.rb +7 -0
  485. data/lib/workos/user_management/authentication_oauth_succeeded.rb +34 -0
  486. data/lib/workos/user_management/authentication_oauth_succeeded_data.rb +34 -0
  487. data/lib/workos/user_management/authentication_passkey_failed.rb +34 -0
  488. data/lib/workos/user_management/authentication_passkey_failed_data.rb +37 -0
  489. data/lib/workos/user_management/authentication_passkey_failed_data_error.rb +7 -0
  490. data/lib/workos/user_management/authentication_passkey_succeeded.rb +34 -0
  491. data/lib/workos/user_management/authentication_passkey_succeeded_data.rb +34 -0
  492. data/lib/workos/user_management/authentication_password_failed.rb +34 -0
  493. data/lib/workos/user_management/authentication_password_failed_data.rb +37 -0
  494. data/lib/workos/user_management/authentication_password_failed_data_error.rb +7 -0
  495. data/lib/workos/user_management/authentication_password_succeeded.rb +34 -0
  496. data/lib/workos/user_management/authentication_password_succeeded_data.rb +34 -0
  497. data/lib/workos/user_management/authentication_radar_risk_detected.rb +34 -0
  498. data/lib/workos/user_management/authentication_radar_risk_detected_data.rb +40 -0
  499. data/lib/workos/user_management/authentication_sso_failed.rb +34 -0
  500. data/lib/workos/user_management/authentication_sso_failed_data.rb +40 -0
  501. data/lib/workos/user_management/authentication_sso_failed_data_error.rb +7 -0
  502. data/lib/workos/user_management/authentication_sso_failed_data_sso.rb +25 -0
  503. data/lib/workos/user_management/authentication_sso_started.rb +34 -0
  504. data/lib/workos/user_management/authentication_sso_started_data.rb +37 -0
  505. data/lib/workos/user_management/authentication_sso_started_data_sso.rb +7 -0
  506. data/lib/workos/user_management/authentication_sso_succeeded.rb +34 -0
  507. data/lib/workos/user_management/authentication_sso_succeeded_data.rb +37 -0
  508. data/lib/workos/user_management/authentication_sso_succeeded_data_sso.rb +7 -0
  509. data/lib/workos/user_management/authentication_sso_timed_out.rb +34 -0
  510. data/lib/workos/user_management/authentication_sso_timed_out_data.rb +40 -0
  511. data/lib/workos/user_management/authentication_sso_timed_out_data_error.rb +7 -0
  512. data/lib/workos/user_management/authentication_sso_timed_out_data_sso.rb +7 -0
  513. data/lib/workos/user_management/authorization_code_session_authenticate_request.rb +43 -0
  514. data/lib/workos/user_management/authorized_connect_application_list_data.rb +31 -0
  515. data/lib/workos/user_management/confirm_email_change.rb +7 -0
  516. data/lib/workos/user_management/cors_origin_response.rb +31 -0
  517. data/lib/workos/user_management/create_cors_origin.rb +18 -0
  518. data/lib/workos/user_management/create_magic_code_and_return.rb +22 -0
  519. data/lib/workos/user_management/create_password_reset.rb +22 -0
  520. data/lib/workos/user_management/create_password_reset_token.rb +18 -0
  521. data/lib/workos/user_management/create_redirect_uri.rb +18 -0
  522. data/lib/workos/user_management/create_user.rb +43 -0
  523. data/lib/workos/user_management/create_user_invite_options.rb +34 -0
  524. data/lib/workos/user_management/create_user_organization_membership.rb +28 -0
  525. data/lib/workos/user_management/device_authorization_response.rb +34 -0
  526. data/lib/workos/user_management/device_code_session_authenticate_request.rb +34 -0
  527. data/lib/workos/user_management/email_change.rb +31 -0
  528. data/lib/workos/user_management/email_change_confirmation.rb +22 -0
  529. data/lib/workos/user_management/email_change_confirmation_user.rb +55 -0
  530. data/lib/workos/user_management/email_verification.rb +40 -0
  531. data/lib/workos/user_management/email_verification_code_session_authenticate_request.rb +40 -0
  532. data/lib/workos/user_management/email_verification_created.rb +34 -0
  533. data/lib/workos/user_management/email_verification_created_data.rb +37 -0
  534. data/lib/workos/user_management/invitation.rb +61 -0
  535. data/lib/workos/user_management/invitation_accepted.rb +34 -0
  536. data/lib/workos/user_management/invitation_accepted_data.rb +55 -0
  537. data/lib/workos/user_management/invitation_created.rb +34 -0
  538. data/lib/workos/user_management/invitation_created_data.rb +55 -0
  539. data/lib/workos/user_management/invitation_resent.rb +34 -0
  540. data/lib/workos/user_management/invitation_resent_data.rb +55 -0
  541. data/lib/workos/user_management/invitation_revoked.rb +34 -0
  542. data/lib/workos/user_management/invitation_revoked_data.rb +55 -0
  543. data/lib/workos/user_management/jwks_response.rb +18 -0
  544. data/lib/workos/user_management/jwks_response_keys.rb +40 -0
  545. data/lib/workos/user_management/jwt_template_response.rb +28 -0
  546. data/lib/workos/user_management/magic_auth.rb +40 -0
  547. data/lib/workos/user_management/magic_auth_code_session_authenticate_request.rb +43 -0
  548. data/lib/workos/user_management/magic_auth_created.rb +34 -0
  549. data/lib/workos/user_management/magic_auth_created_data.rb +37 -0
  550. data/lib/workos/user_management/mfa_totp_session_authenticate_request.rb +43 -0
  551. data/lib/workos/user_management/organization_membership.rb +49 -0
  552. data/lib/workos/user_management/organization_selection_session_authenticate_request.rb +40 -0
  553. data/lib/workos/user_management/password_reset.rb +40 -0
  554. data/lib/workos/user_management/password_reset_created.rb +34 -0
  555. data/lib/workos/user_management/password_reset_created_data.rb +34 -0
  556. data/lib/workos/user_management/password_reset_succeeded.rb +34 -0
  557. data/lib/workos/user_management/password_reset_succeeded_data.rb +7 -0
  558. data/lib/workos/user_management/password_session_authenticate_request.rb +43 -0
  559. data/lib/workos/user_management/redirect_uri.rb +34 -0
  560. data/lib/workos/user_management/refresh_token_session_authenticate_request.rb +40 -0
  561. data/lib/workos/user_management/resend_user_invite_options.rb +18 -0
  562. data/lib/workos/user_management/reset_password_response.rb +18 -0
  563. data/lib/workos/user_management/revoke_session.rb +22 -0
  564. data/lib/workos/user_management/send_email_change.rb +18 -0
  565. data/lib/workos/user_management/send_verification_email_response.rb +7 -0
  566. data/lib/workos/user_management/session_created.rb +34 -0
  567. data/lib/workos/user_management/session_created_data.rb +55 -0
  568. data/lib/workos/user_management/session_created_data_impersonator.rb +7 -0
  569. data/lib/workos/user_management/session_revoked.rb +34 -0
  570. data/lib/workos/user_management/session_revoked_data.rb +55 -0
  571. data/lib/workos/user_management/session_revoked_data_impersonator.rb +7 -0
  572. data/lib/workos/user_management/sso_device_authorization_request.rb +18 -0
  573. data/lib/workos/user_management/update_jwt_template.rb +18 -0
  574. data/lib/workos/user_management/update_user.rb +46 -0
  575. data/lib/workos/user_management/update_user_organization_membership.rb +22 -0
  576. data/lib/workos/user_management/user.rb +7 -0
  577. data/lib/workos/user_management/user_created.rb +34 -0
  578. data/lib/workos/user_management/user_deleted.rb +34 -0
  579. data/lib/workos/user_management/user_identities_get_item.rb +25 -0
  580. data/lib/workos/user_management/user_invite.rb +61 -0
  581. data/lib/workos/user_management/user_organization_membership.rb +49 -0
  582. data/lib/workos/user_management/user_sessions_impersonator.rb +7 -0
  583. data/lib/workos/user_management/user_sessions_list_item.rb +55 -0
  584. data/lib/workos/user_management/user_updated.rb +34 -0
  585. data/lib/workos/user_management/verify_email_address.rb +7 -0
  586. data/lib/workos/user_management/verify_email_response.rb +7 -0
  587. data/lib/workos/user_management.rb +1514 -1170
  588. data/lib/workos/user_management_organization_membership_groups.rb +60 -0
  589. data/lib/workos/util/signature.rb +55 -0
  590. data/lib/workos/util.rb +16 -0
  591. data/lib/workos/vault/vault_byok_key_verification_completed.rb +34 -0
  592. data/lib/workos/vault/vault_byok_key_verification_completed_data.rb +25 -0
  593. data/lib/workos/vault/vault_data_created.rb +34 -0
  594. data/lib/workos/vault/vault_data_created_data.rb +34 -0
  595. data/lib/workos/vault/vault_data_deleted.rb +34 -0
  596. data/lib/workos/vault/vault_data_deleted_data.rb +28 -0
  597. data/lib/workos/vault/vault_data_read.rb +34 -0
  598. data/lib/workos/vault/vault_data_read_data.rb +31 -0
  599. data/lib/workos/vault/vault_data_updated.rb +34 -0
  600. data/lib/workos/vault/vault_data_updated_data.rb +34 -0
  601. data/lib/workos/vault/vault_dek_decrypted.rb +34 -0
  602. data/lib/workos/vault/vault_dek_decrypted_data.rb +28 -0
  603. data/lib/workos/vault/vault_dek_read.rb +34 -0
  604. data/lib/workos/vault/vault_dek_read_data.rb +31 -0
  605. data/lib/workos/vault/vault_kek_created.rb +34 -0
  606. data/lib/workos/vault/vault_kek_created_data.rb +31 -0
  607. data/lib/workos/vault/vault_metadata_read.rb +34 -0
  608. data/lib/workos/vault/vault_metadata_read_data.rb +28 -0
  609. data/lib/workos/vault/vault_names_listed.rb +34 -0
  610. data/lib/workos/vault/vault_names_listed_data.rb +25 -0
  611. data/lib/workos/vault.rb +241 -0
  612. data/lib/workos/version.rb +2 -1
  613. data/lib/workos/webhook_event.rb +120 -0
  614. data/lib/workos/webhooks/create_webhook_endpoint.rb +22 -0
  615. data/lib/workos/webhooks/update_webhook_endpoint.rb +25 -0
  616. data/lib/workos/webhooks/webhook_endpoint.rb +45 -0
  617. data/lib/workos/webhooks/webhook_endpoint_json.rb +40 -0
  618. data/lib/workos/webhooks.rb +213 -159
  619. data/lib/workos/widgets/widget_session_token.rb +25 -0
  620. data/lib/workos/widgets/widget_session_token_response.rb +18 -0
  621. data/lib/workos/widgets.rb +34 -38
  622. data/lib/workos.rb +34 -96
  623. data/rbi/workos/action_authentication_denied.rbi +54 -0
  624. data/rbi/workos/action_authentication_denied_data.rbi +72 -0
  625. data/rbi/workos/action_user_registration_denied.rbi +54 -0
  626. data/rbi/workos/action_user_registration_denied_data.rbi +66 -0
  627. data/rbi/workos/actions.rbi +48 -0
  628. data/rbi/workos/add_role_permission.rbi +24 -0
  629. data/rbi/workos/admin_portal.rbi +26 -0
  630. data/rbi/workos/api_key.rbi +72 -0
  631. data/rbi/workos/api_key_created.rbi +54 -0
  632. data/rbi/workos/api_key_created_data.rbi +72 -0
  633. data/rbi/workos/api_key_created_data_owner.rbi +30 -0
  634. data/rbi/workos/api_key_owner.rbi +30 -0
  635. data/rbi/workos/api_key_revoked.rbi +54 -0
  636. data/rbi/workos/api_key_revoked_data.rbi +72 -0
  637. data/rbi/workos/api_key_revoked_data_owner.rbi +30 -0
  638. data/rbi/workos/api_key_validation_response.rbi +24 -0
  639. data/rbi/workos/api_key_with_value.rbi +78 -0
  640. data/rbi/workos/api_key_with_value_owner.rbi +30 -0
  641. data/rbi/workos/api_keys.rbi +51 -0
  642. data/rbi/workos/application_credentials_list_item.rbi +54 -0
  643. data/rbi/workos/assign_role.rbi +42 -0
  644. data/rbi/workos/audit_log_action.rbi +47 -0
  645. data/rbi/workos/audit_log_action_json.rbi +48 -0
  646. data/rbi/workos/audit_log_configuration.rbi +42 -0
  647. data/rbi/workos/audit_log_configuration_log_stream.rbi +48 -0
  648. data/rbi/workos/audit_log_event.rbi +60 -0
  649. data/rbi/workos/audit_log_event_actor.rbi +42 -0
  650. data/rbi/workos/audit_log_event_context.rbi +30 -0
  651. data/rbi/workos/audit_log_event_create_response.rbi +24 -0
  652. data/rbi/workos/audit_log_event_ingestion.rbi +30 -0
  653. data/rbi/workos/audit_log_event_target.rbi +42 -0
  654. data/rbi/workos/audit_log_export.rbi +53 -0
  655. data/rbi/workos/audit_log_export_creation.rbi +66 -0
  656. data/rbi/workos/audit_log_export_json.rbi +54 -0
  657. data/rbi/workos/audit_log_schema.rbi +36 -0
  658. data/rbi/workos/audit_log_schema_actor.rbi +24 -0
  659. data/rbi/workos/audit_log_schema_json.rbi +54 -0
  660. data/rbi/workos/audit_log_schema_json_actor.rbi +24 -0
  661. data/rbi/workos/audit_log_schema_json_target.rbi +30 -0
  662. data/rbi/workos/audit_log_schema_target.rbi +30 -0
  663. data/rbi/workos/audit_logs.rbi +96 -0
  664. data/rbi/workos/audit_logs_retention.rbi +23 -0
  665. data/rbi/workos/audit_logs_retention_json.rbi +24 -0
  666. data/rbi/workos/authenticate_response.rbi +66 -0
  667. data/rbi/workos/authenticate_response_impersonator.rbi +30 -0
  668. data/rbi/workos/authenticate_response_oauth_token.rbi +48 -0
  669. data/rbi/workos/authentication_challenge.rbi +60 -0
  670. data/rbi/workos/authentication_challenge_verify_response.rbi +30 -0
  671. data/rbi/workos/authentication_challenges_verify_request.rbi +24 -0
  672. data/rbi/workos/authentication_email_verification_failed.rbi +54 -0
  673. data/rbi/workos/authentication_email_verification_failed_data.rbi +60 -0
  674. data/rbi/workos/authentication_email_verification_failed_data_error.rbi +30 -0
  675. data/rbi/workos/authentication_email_verification_succeeded.rbi +54 -0
  676. data/rbi/workos/authentication_email_verification_succeeded_data.rbi +54 -0
  677. data/rbi/workos/authentication_factor.rbi +66 -0
  678. data/rbi/workos/authentication_factor_enrolled.rbi +66 -0
  679. data/rbi/workos/authentication_factor_enrolled_sms.rbi +24 -0
  680. data/rbi/workos/authentication_factor_enrolled_totp.rbi +48 -0
  681. data/rbi/workos/authentication_factor_sms.rbi +24 -0
  682. data/rbi/workos/authentication_factor_totp.rbi +30 -0
  683. data/rbi/workos/authentication_factors_create_request.rbi +48 -0
  684. data/rbi/workos/authentication_magic_auth_failed.rbi +54 -0
  685. data/rbi/workos/authentication_magic_auth_failed_data.rbi +60 -0
  686. data/rbi/workos/authentication_magic_auth_failed_data_error.rbi +30 -0
  687. data/rbi/workos/authentication_magic_auth_succeeded.rbi +54 -0
  688. data/rbi/workos/authentication_magic_auth_succeeded_data.rbi +54 -0
  689. data/rbi/workos/authentication_mfa_failed.rbi +54 -0
  690. data/rbi/workos/authentication_mfa_failed_data.rbi +60 -0
  691. data/rbi/workos/authentication_mfa_failed_data_error.rbi +30 -0
  692. data/rbi/workos/authentication_mfa_succeeded.rbi +54 -0
  693. data/rbi/workos/authentication_mfa_succeeded_data.rbi +54 -0
  694. data/rbi/workos/authentication_oauth_failed.rbi +54 -0
  695. data/rbi/workos/authentication_oauth_failed_data.rbi +60 -0
  696. data/rbi/workos/authentication_oauth_failed_data_error.rbi +30 -0
  697. data/rbi/workos/authentication_oauth_succeeded.rbi +54 -0
  698. data/rbi/workos/authentication_oauth_succeeded_data.rbi +54 -0
  699. data/rbi/workos/authentication_passkey_failed.rbi +54 -0
  700. data/rbi/workos/authentication_passkey_failed_data.rbi +60 -0
  701. data/rbi/workos/authentication_passkey_failed_data_error.rbi +30 -0
  702. data/rbi/workos/authentication_passkey_succeeded.rbi +54 -0
  703. data/rbi/workos/authentication_passkey_succeeded_data.rbi +54 -0
  704. data/rbi/workos/authentication_password_failed.rbi +54 -0
  705. data/rbi/workos/authentication_password_failed_data.rbi +60 -0
  706. data/rbi/workos/authentication_password_failed_data_error.rbi +30 -0
  707. data/rbi/workos/authentication_password_succeeded.rbi +54 -0
  708. data/rbi/workos/authentication_password_succeeded_data.rbi +54 -0
  709. data/rbi/workos/authentication_radar_risk_detected.rbi +54 -0
  710. data/rbi/workos/authentication_radar_risk_detected_data.rbi +66 -0
  711. data/rbi/workos/authentication_sso_failed.rbi +54 -0
  712. data/rbi/workos/authentication_sso_failed_data.rbi +66 -0
  713. data/rbi/workos/authentication_sso_failed_data_error.rbi +30 -0
  714. data/rbi/workos/authentication_sso_failed_data_sso.rbi +36 -0
  715. data/rbi/workos/authentication_sso_started.rbi +54 -0
  716. data/rbi/workos/authentication_sso_started_data.rbi +60 -0
  717. data/rbi/workos/authentication_sso_started_data_sso.rbi +36 -0
  718. data/rbi/workos/authentication_sso_succeeded.rbi +54 -0
  719. data/rbi/workos/authentication_sso_succeeded_data.rbi +60 -0
  720. data/rbi/workos/authentication_sso_succeeded_data_sso.rbi +36 -0
  721. data/rbi/workos/authentication_sso_timed_out.rbi +54 -0
  722. data/rbi/workos/authentication_sso_timed_out_data.rbi +66 -0
  723. data/rbi/workos/authentication_sso_timed_out_data_error.rbi +30 -0
  724. data/rbi/workos/authentication_sso_timed_out_data_sso.rbi +36 -0
  725. data/rbi/workos/authorization.rbi +415 -0
  726. data/rbi/workos/authorization_check.rbi +24 -0
  727. data/rbi/workos/authorization_code_session_authenticate_request.rbi +72 -0
  728. data/rbi/workos/authorization_permission.rbi +72 -0
  729. data/rbi/workos/authorization_resource.rbi +78 -0
  730. data/rbi/workos/authorized_connect_application_list_data.rbi +48 -0
  731. data/rbi/workos/base_client.rbi +132 -0
  732. data/rbi/workos/challenge_authentication_factor.rbi +24 -0
  733. data/rbi/workos/check_authorization.rbi +42 -0
  734. data/rbi/workos/client.rbi +67 -0
  735. data/rbi/workos/configuration.rbi +68 -0
  736. data/rbi/workos/confirm_email_change.rbi +24 -0
  737. data/rbi/workos/connect.rbi +102 -0
  738. data/rbi/workos/connect_application.rbi +78 -0
  739. data/rbi/workos/connected_account.rbi +66 -0
  740. data/rbi/workos/connection.rbi +84 -0
  741. data/rbi/workos/connection_activated.rbi +54 -0
  742. data/rbi/workos/connection_activated_data.rbi +84 -0
  743. data/rbi/workos/connection_activated_data_domain.rbi +36 -0
  744. data/rbi/workos/connection_deactivated.rbi +54 -0
  745. data/rbi/workos/connection_deactivated_data.rbi +84 -0
  746. data/rbi/workos/connection_deactivated_data_domain.rbi +36 -0
  747. data/rbi/workos/connection_deleted.rbi +54 -0
  748. data/rbi/workos/connection_deleted_data.rbi +66 -0
  749. data/rbi/workos/connection_domain.rbi +36 -0
  750. data/rbi/workos/connection_option.rbi +24 -0
  751. data/rbi/workos/connection_saml_certificate_renewal_required.rbi +54 -0
  752. data/rbi/workos/connection_saml_certificate_renewal_required_data.rbi +36 -0
  753. data/rbi/workos/connection_saml_certificate_renewal_required_data_certificate.rbi +36 -0
  754. data/rbi/workos/connection_saml_certificate_renewal_required_data_connection.rbi +30 -0
  755. data/rbi/workos/connection_saml_certificate_renewed.rbi +54 -0
  756. data/rbi/workos/connection_saml_certificate_renewed_data.rbi +36 -0
  757. data/rbi/workos/connection_saml_certificate_renewed_data_certificate.rbi +30 -0
  758. data/rbi/workos/connection_saml_certificate_renewed_data_connection.rbi +30 -0
  759. data/rbi/workos/cors_origin_response.rbi +48 -0
  760. data/rbi/workos/create_application_secret.rbi +18 -0
  761. data/rbi/workos/create_authorization_permission.rbi +42 -0
  762. data/rbi/workos/create_authorization_resource.rbi +66 -0
  763. data/rbi/workos/create_cors_origin.rbi +24 -0
  764. data/rbi/workos/create_group.rbi +30 -0
  765. data/rbi/workos/create_group_membership.rbi +24 -0
  766. data/rbi/workos/create_m2m_application.rbi +48 -0
  767. data/rbi/workos/create_magic_code_and_return.rbi +30 -0
  768. data/rbi/workos/create_oauth_application.rbi +66 -0
  769. data/rbi/workos/create_organization_api_key.rbi +30 -0
  770. data/rbi/workos/create_organization_domain.rbi +30 -0
  771. data/rbi/workos/create_organization_role.rbi +42 -0
  772. data/rbi/workos/create_password_reset.rbi +30 -0
  773. data/rbi/workos/create_password_reset_token.rbi +24 -0
  774. data/rbi/workos/create_redirect_uri.rbi +24 -0
  775. data/rbi/workos/create_role.rbi +42 -0
  776. data/rbi/workos/create_user.rbi +72 -0
  777. data/rbi/workos/create_user_invite_options.rbi +54 -0
  778. data/rbi/workos/create_user_organization_membership.rbi +42 -0
  779. data/rbi/workos/create_webhook_endpoint.rbi +30 -0
  780. data/rbi/workos/data_integration_access_token_response.rbi +36 -0
  781. data/rbi/workos/data_integration_access_token_response_access_token.rbi +48 -0
  782. data/rbi/workos/data_integration_authorize_url_response.rbi +24 -0
  783. data/rbi/workos/data_integrations_get_data_integration_authorize_url_request.rbi +36 -0
  784. data/rbi/workos/data_integrations_get_user_token_request.rbi +30 -0
  785. data/rbi/workos/data_integrations_list_response.rbi +30 -0
  786. data/rbi/workos/data_integrations_list_response_data.rbi +90 -0
  787. data/rbi/workos/data_integrations_list_response_data_connected_account.rbi +72 -0
  788. data/rbi/workos/device_authorization_response.rbi +54 -0
  789. data/rbi/workos/device_code_session_authenticate_request.rbi +54 -0
  790. data/rbi/workos/directory.rbi +84 -0
  791. data/rbi/workos/directory_group.rbi +72 -0
  792. data/rbi/workos/directory_metadata.rbi +30 -0
  793. data/rbi/workos/directory_metadata_user.rbi +30 -0
  794. data/rbi/workos/directory_sync.rbi +85 -0
  795. data/rbi/workos/directory_user.rbi +126 -0
  796. data/rbi/workos/directory_user_email.rbi +36 -0
  797. data/rbi/workos/directory_user_with_groups.rbi +132 -0
  798. data/rbi/workos/directory_user_with_groups_email.rbi +36 -0
  799. data/rbi/workos/domain_verification_intent_options.rbi +24 -0
  800. data/rbi/workos/dsync_activated.rbi +54 -0
  801. data/rbi/workos/dsync_activated_data.rbi +78 -0
  802. data/rbi/workos/dsync_activated_data_domain.rbi +36 -0
  803. data/rbi/workos/dsync_deactivated.rbi +54 -0
  804. data/rbi/workos/dsync_deactivated_data.rbi +78 -0
  805. data/rbi/workos/dsync_deactivated_data_domain.rbi +36 -0
  806. data/rbi/workos/dsync_deleted.rbi +54 -0
  807. data/rbi/workos/dsync_deleted_data.rbi +66 -0
  808. data/rbi/workos/dsync_group_created.rbi +54 -0
  809. data/rbi/workos/dsync_group_deleted.rbi +54 -0
  810. data/rbi/workos/dsync_group_updated.rbi +54 -0
  811. data/rbi/workos/dsync_group_updated_data.rbi +78 -0
  812. data/rbi/workos/dsync_group_user_added.rbi +54 -0
  813. data/rbi/workos/dsync_group_user_added_data.rbi +36 -0
  814. data/rbi/workos/dsync_group_user_removed.rbi +54 -0
  815. data/rbi/workos/dsync_group_user_removed_data.rbi +36 -0
  816. data/rbi/workos/dsync_user_created.rbi +54 -0
  817. data/rbi/workos/dsync_user_deleted.rbi +54 -0
  818. data/rbi/workos/dsync_user_updated.rbi +54 -0
  819. data/rbi/workos/dsync_user_updated_data.rbi +132 -0
  820. data/rbi/workos/dsync_user_updated_data_email.rbi +36 -0
  821. data/rbi/workos/email_change.rbi +48 -0
  822. data/rbi/workos/email_change_confirmation.rbi +30 -0
  823. data/rbi/workos/email_change_confirmation_user.rbi +96 -0
  824. data/rbi/workos/email_verification.rbi +66 -0
  825. data/rbi/workos/email_verification_code_session_authenticate_request.rbi +66 -0
  826. data/rbi/workos/email_verification_created.rbi +54 -0
  827. data/rbi/workos/email_verification_created_data.rbi +60 -0
  828. data/rbi/workos/encryptors/aes_gcm.rbi +19 -0
  829. data/rbi/workos/enroll_user_authentication_factor.rbi +42 -0
  830. data/rbi/workos/errors.rbi +43 -0
  831. data/rbi/workos/event_context.rbi +54 -0
  832. data/rbi/workos/event_context_actor.rbi +36 -0
  833. data/rbi/workos/event_context_google_analytics_session.rbi +36 -0
  834. data/rbi/workos/event_list_list_metadata.rbi +24 -0
  835. data/rbi/workos/event_schema.rbi +54 -0
  836. data/rbi/workos/events.rbi +28 -0
  837. data/rbi/workos/external_auth_complete_response.rbi +24 -0
  838. data/rbi/workos/feature_flag.rbi +84 -0
  839. data/rbi/workos/feature_flag_owner.rbi +36 -0
  840. data/rbi/workos/feature_flags.rbi +90 -0
  841. data/rbi/workos/flag.rbi +84 -0
  842. data/rbi/workos/flag_created.rbi +54 -0
  843. data/rbi/workos/flag_created_context.rbi +30 -0
  844. data/rbi/workos/flag_created_context_actor.rbi +36 -0
  845. data/rbi/workos/flag_created_data.rbi +90 -0
  846. data/rbi/workos/flag_created_data_owner.rbi +36 -0
  847. data/rbi/workos/flag_deleted.rbi +54 -0
  848. data/rbi/workos/flag_deleted_context.rbi +30 -0
  849. data/rbi/workos/flag_deleted_context_actor.rbi +36 -0
  850. data/rbi/workos/flag_deleted_data.rbi +90 -0
  851. data/rbi/workos/flag_deleted_data_owner.rbi +36 -0
  852. data/rbi/workos/flag_owner.rbi +36 -0
  853. data/rbi/workos/flag_rule_updated.rbi +54 -0
  854. data/rbi/workos/flag_rule_updated_context.rbi +48 -0
  855. data/rbi/workos/flag_rule_updated_context_actor.rbi +36 -0
  856. data/rbi/workos/flag_rule_updated_context_configured_target.rbi +30 -0
  857. data/rbi/workos/flag_rule_updated_context_configured_target_organization.rbi +30 -0
  858. data/rbi/workos/flag_rule_updated_context_configured_target_user.rbi +30 -0
  859. data/rbi/workos/flag_rule_updated_context_previous_attribute.rbi +30 -0
  860. data/rbi/workos/flag_rule_updated_context_previous_attribute_context.rbi +30 -0
  861. data/rbi/workos/flag_rule_updated_context_previous_attribute_context_configured_target.rbi +30 -0
  862. data/rbi/workos/flag_rule_updated_context_previous_attribute_context_configured_target_organization.rbi +30 -0
  863. data/rbi/workos/flag_rule_updated_context_previous_attribute_context_configured_target_user.rbi +30 -0
  864. data/rbi/workos/flag_rule_updated_context_previous_attribute_data.rbi +30 -0
  865. data/rbi/workos/flag_rule_updated_data.rbi +90 -0
  866. data/rbi/workos/flag_rule_updated_data_owner.rbi +36 -0
  867. data/rbi/workos/flag_updated.rbi +54 -0
  868. data/rbi/workos/flag_updated_context.rbi +36 -0
  869. data/rbi/workos/flag_updated_context_actor.rbi +36 -0
  870. data/rbi/workos/flag_updated_context_previous_attribute.rbi +24 -0
  871. data/rbi/workos/flag_updated_context_previous_attribute_data.rbi +48 -0
  872. data/rbi/workos/flag_updated_data.rbi +90 -0
  873. data/rbi/workos/flag_updated_data_owner.rbi +36 -0
  874. data/rbi/workos/generate_link.rbi +54 -0
  875. data/rbi/workos/group.rbi +60 -0
  876. data/rbi/workos/group_created.rbi +54 -0
  877. data/rbi/workos/group_deleted.rbi +54 -0
  878. data/rbi/workos/group_member_added.rbi +54 -0
  879. data/rbi/workos/group_member_added_data.rbi +30 -0
  880. data/rbi/workos/group_member_removed.rbi +54 -0
  881. data/rbi/workos/group_member_removed_data.rbi +30 -0
  882. data/rbi/workos/group_updated.rbi +54 -0
  883. data/rbi/workos/groups.rbi +97 -0
  884. data/rbi/workos/hash_provider.rbi +18 -0
  885. data/rbi/workos/intent_options.rbi +30 -0
  886. data/rbi/workos/invitation.rbi +108 -0
  887. data/rbi/workos/invitation_accepted.rbi +54 -0
  888. data/rbi/workos/invitation_accepted_data.rbi +96 -0
  889. data/rbi/workos/invitation_created.rbi +54 -0
  890. data/rbi/workos/invitation_created_data.rbi +96 -0
  891. data/rbi/workos/invitation_resent.rbi +54 -0
  892. data/rbi/workos/invitation_resent_data.rbi +96 -0
  893. data/rbi/workos/invitation_revoked.rbi +54 -0
  894. data/rbi/workos/invitation_revoked_data.rbi +96 -0
  895. data/rbi/workos/jwks_response.rbi +24 -0
  896. data/rbi/workos/jwks_response_keys.rbi +66 -0
  897. data/rbi/workos/jwt_template_response.rbi +42 -0
  898. data/rbi/workos/magic_auth.rbi +66 -0
  899. data/rbi/workos/magic_auth_code_session_authenticate_request.rbi +72 -0
  900. data/rbi/workos/magic_auth_created.rbi +54 -0
  901. data/rbi/workos/magic_auth_created_data.rbi +60 -0
  902. data/rbi/workos/mfa_totp_session_authenticate_request.rbi +72 -0
  903. data/rbi/workos/multi_factor_auth.rbi +83 -0
  904. data/rbi/workos/new_connect_application_secret.rbi +60 -0
  905. data/rbi/workos/organization.rbi +78 -0
  906. data/rbi/workos/organization_created.rbi +54 -0
  907. data/rbi/workos/organization_created_data.rbi +72 -0
  908. data/rbi/workos/organization_created_data_domain.rbi +78 -0
  909. data/rbi/workos/organization_deleted.rbi +54 -0
  910. data/rbi/workos/organization_deleted_data.rbi +72 -0
  911. data/rbi/workos/organization_deleted_data_domain.rbi +78 -0
  912. data/rbi/workos/organization_domain.rbi +78 -0
  913. data/rbi/workos/organization_domain_created.rbi +54 -0
  914. data/rbi/workos/organization_domain_created_data.rbi +78 -0
  915. data/rbi/workos/organization_domain_data.rbi +30 -0
  916. data/rbi/workos/organization_domain_deleted.rbi +54 -0
  917. data/rbi/workos/organization_domain_deleted_data.rbi +78 -0
  918. data/rbi/workos/organization_domain_stand_alone.rbi +78 -0
  919. data/rbi/workos/organization_domain_updated.rbi +54 -0
  920. data/rbi/workos/organization_domain_updated_data.rbi +78 -0
  921. data/rbi/workos/organization_domain_verification_failed.rbi +54 -0
  922. data/rbi/workos/organization_domain_verification_failed_data.rbi +30 -0
  923. data/rbi/workos/organization_domain_verification_failed_data_organization_domain.rbi +78 -0
  924. data/rbi/workos/organization_domain_verified.rbi +54 -0
  925. data/rbi/workos/organization_domain_verified_data.rbi +78 -0
  926. data/rbi/workos/organization_domains.rbi +46 -0
  927. data/rbi/workos/organization_input.rbi +54 -0
  928. data/rbi/workos/organization_membership.rbi +84 -0
  929. data/rbi/workos/organization_membership_created.rbi +54 -0
  930. data/rbi/workos/organization_membership_created_data.rbi +84 -0
  931. data/rbi/workos/organization_membership_deleted.rbi +54 -0
  932. data/rbi/workos/organization_membership_deleted_data.rbi +84 -0
  933. data/rbi/workos/organization_membership_updated.rbi +54 -0
  934. data/rbi/workos/organization_membership_updated_data.rbi +84 -0
  935. data/rbi/workos/organization_role_created.rbi +54 -0
  936. data/rbi/workos/organization_role_created_data.rbi +72 -0
  937. data/rbi/workos/organization_role_deleted.rbi +54 -0
  938. data/rbi/workos/organization_role_deleted_data.rbi +72 -0
  939. data/rbi/workos/organization_role_updated.rbi +54 -0
  940. data/rbi/workos/organization_role_updated_data.rbi +72 -0
  941. data/rbi/workos/organization_selection_session_authenticate_request.rbi +66 -0
  942. data/rbi/workos/organization_updated.rbi +54 -0
  943. data/rbi/workos/organization_updated_data.rbi +72 -0
  944. data/rbi/workos/organization_updated_data_domain.rbi +78 -0
  945. data/rbi/workos/organizations.rbi +86 -0
  946. data/rbi/workos/password_reset.rbi +66 -0
  947. data/rbi/workos/password_reset_created.rbi +54 -0
  948. data/rbi/workos/password_reset_created_data.rbi +54 -0
  949. data/rbi/workos/password_reset_succeeded.rbi +54 -0
  950. data/rbi/workos/password_reset_succeeded_data.rbi +54 -0
  951. data/rbi/workos/password_session_authenticate_request.rbi +72 -0
  952. data/rbi/workos/passwordless.rbi +47 -0
  953. data/rbi/workos/permission.rbi +72 -0
  954. data/rbi/workos/permission_created.rbi +54 -0
  955. data/rbi/workos/permission_created_data.rbi +66 -0
  956. data/rbi/workos/permission_deleted.rbi +54 -0
  957. data/rbi/workos/permission_deleted_data.rbi +66 -0
  958. data/rbi/workos/permission_updated.rbi +54 -0
  959. data/rbi/workos/permission_updated_data.rbi +66 -0
  960. data/rbi/workos/pipes.rbi +63 -0
  961. data/rbi/workos/portal_link_response.rbi +24 -0
  962. data/rbi/workos/profile.rbi +102 -0
  963. data/rbi/workos/public_client.rbi +12 -0
  964. data/rbi/workos/radar.rbi +57 -0
  965. data/rbi/workos/radar_list_entry_already_present_response.rbi +24 -0
  966. data/rbi/workos/radar_standalone_assess_request.rbi +60 -0
  967. data/rbi/workos/radar_standalone_delete_radar_list_entry_request.rbi +24 -0
  968. data/rbi/workos/radar_standalone_response.rbi +48 -0
  969. data/rbi/workos/radar_standalone_update_radar_attempt_request.rbi +30 -0
  970. data/rbi/workos/radar_standalone_update_radar_list_request.rbi +24 -0
  971. data/rbi/workos/redirect_uri.rbi +54 -0
  972. data/rbi/workos/redirect_uri_input.rbi +30 -0
  973. data/rbi/workos/refresh_token_session_authenticate_request.rbi +66 -0
  974. data/rbi/workos/remove_role.rbi +42 -0
  975. data/rbi/workos/resend_user_invite_options.rbi +24 -0
  976. data/rbi/workos/reset_password_response.rbi +24 -0
  977. data/rbi/workos/revoke_session.rbi +30 -0
  978. data/rbi/workos/role.rbi +78 -0
  979. data/rbi/workos/role_assignment.rbi +54 -0
  980. data/rbi/workos/role_assignment_resource.rbi +36 -0
  981. data/rbi/workos/role_created.rbi +54 -0
  982. data/rbi/workos/role_created_data.rbi +54 -0
  983. data/rbi/workos/role_deleted.rbi +54 -0
  984. data/rbi/workos/role_deleted_data.rbi +54 -0
  985. data/rbi/workos/role_list.rbi +30 -0
  986. data/rbi/workos/role_updated.rbi +54 -0
  987. data/rbi/workos/role_updated_data.rbi +54 -0
  988. data/rbi/workos/send_email_change.rbi +24 -0
  989. data/rbi/workos/send_verification_email_response.rbi +24 -0
  990. data/rbi/workos/session.rbi +43 -0
  991. data/rbi/workos/session_created.rbi +54 -0
  992. data/rbi/workos/session_created_data.rbi +96 -0
  993. data/rbi/workos/session_created_data_impersonator.rbi +30 -0
  994. data/rbi/workos/session_manager.rbi +154 -0
  995. data/rbi/workos/session_revoked.rbi +54 -0
  996. data/rbi/workos/session_revoked_data.rbi +96 -0
  997. data/rbi/workos/session_revoked_data_impersonator.rbi +30 -0
  998. data/rbi/workos/set_role_permissions.rbi +24 -0
  999. data/rbi/workos/slim_role.rbi +24 -0
  1000. data/rbi/workos/sso.rbi +67 -0
  1001. data/rbi/workos/sso_authorize_url_response.rbi +24 -0
  1002. data/rbi/workos/sso_device_authorization_request.rbi +24 -0
  1003. data/rbi/workos/sso_intent_options.rbi +30 -0
  1004. data/rbi/workos/sso_logout_authorize_request.rbi +24 -0
  1005. data/rbi/workos/sso_logout_authorize_response.rbi +30 -0
  1006. data/rbi/workos/sso_token_response.rbi +48 -0
  1007. data/rbi/workos/sso_token_response_oauth_token.rbi +48 -0
  1008. data/rbi/workos/token_query.rbi +42 -0
  1009. data/rbi/workos/types/api_response.rbi +29 -0
  1010. data/rbi/workos/types/base_model.rbi +22 -0
  1011. data/rbi/workos/types/list_struct.rbi +89 -0
  1012. data/rbi/workos/types/request_options.rbi +12 -0
  1013. data/rbi/workos/update_audit_logs_retention.rbi +24 -0
  1014. data/rbi/workos/update_authorization_permission.rbi +30 -0
  1015. data/rbi/workos/update_authorization_resource.rbi +48 -0
  1016. data/rbi/workos/update_group.rbi +30 -0
  1017. data/rbi/workos/update_jwt_template.rbi +24 -0
  1018. data/rbi/workos/update_oauth_application.rbi +42 -0
  1019. data/rbi/workos/update_organization.rbi +60 -0
  1020. data/rbi/workos/update_organization_role.rbi +30 -0
  1021. data/rbi/workos/update_role.rbi +30 -0
  1022. data/rbi/workos/update_user.rbi +78 -0
  1023. data/rbi/workos/update_user_organization_membership.rbi +30 -0
  1024. data/rbi/workos/update_webhook_endpoint.rbi +36 -0
  1025. data/rbi/workos/user.rbi +96 -0
  1026. data/rbi/workos/user_authentication_factor_enroll_response.rbi +30 -0
  1027. data/rbi/workos/user_consent_option.rbi +42 -0
  1028. data/rbi/workos/user_consent_option_choice.rbi +30 -0
  1029. data/rbi/workos/user_created.rbi +54 -0
  1030. data/rbi/workos/user_deleted.rbi +54 -0
  1031. data/rbi/workos/user_identities_get_item.rbi +36 -0
  1032. data/rbi/workos/user_invite.rbi +108 -0
  1033. data/rbi/workos/user_management.rbi +410 -0
  1034. data/rbi/workos/user_management_login_request.rbi +36 -0
  1035. data/rbi/workos/user_management_organization_membership_groups.rbi +25 -0
  1036. data/rbi/workos/user_object.rbi +48 -0
  1037. data/rbi/workos/user_organization_membership.rbi +84 -0
  1038. data/rbi/workos/user_organization_membership_base_list_data.rbi +78 -0
  1039. data/rbi/workos/user_sessions_impersonator.rbi +30 -0
  1040. data/rbi/workos/user_sessions_list_item.rbi +96 -0
  1041. data/rbi/workos/user_updated.rbi +54 -0
  1042. data/rbi/workos/util.rbi +12 -0
  1043. data/rbi/workos/validate_api_key.rbi +24 -0
  1044. data/rbi/workos/vault.rbi +137 -0
  1045. data/rbi/workos/vault_byok_key_verification_completed.rbi +54 -0
  1046. data/rbi/workos/vault_byok_key_verification_completed_data.rbi +36 -0
  1047. data/rbi/workos/vault_data_created.rbi +54 -0
  1048. data/rbi/workos/vault_data_created_data.rbi +54 -0
  1049. data/rbi/workos/vault_data_deleted.rbi +54 -0
  1050. data/rbi/workos/vault_data_deleted_data.rbi +42 -0
  1051. data/rbi/workos/vault_data_read.rbi +54 -0
  1052. data/rbi/workos/vault_data_read_data.rbi +48 -0
  1053. data/rbi/workos/vault_data_updated.rbi +54 -0
  1054. data/rbi/workos/vault_data_updated_data.rbi +54 -0
  1055. data/rbi/workos/vault_dek_decrypted.rbi +54 -0
  1056. data/rbi/workos/vault_dek_decrypted_data.rbi +42 -0
  1057. data/rbi/workos/vault_dek_read.rbi +54 -0
  1058. data/rbi/workos/vault_dek_read_data.rbi +48 -0
  1059. data/rbi/workos/vault_kek_created.rbi +54 -0
  1060. data/rbi/workos/vault_kek_created_data.rbi +48 -0
  1061. data/rbi/workos/vault_metadata_read.rbi +54 -0
  1062. data/rbi/workos/vault_metadata_read_data.rbi +42 -0
  1063. data/rbi/workos/vault_names_listed.rbi +54 -0
  1064. data/rbi/workos/vault_names_listed_data.rbi +36 -0
  1065. data/rbi/workos/verify_email_address.rbi +24 -0
  1066. data/rbi/workos/verify_email_response.rbi +24 -0
  1067. data/rbi/workos/waitlist_user.rbi +60 -0
  1068. data/rbi/workos/waitlist_user_approved.rbi +54 -0
  1069. data/rbi/workos/waitlist_user_created.rbi +54 -0
  1070. data/rbi/workos/waitlist_user_denied.rbi +54 -0
  1071. data/rbi/workos/webhook_endpoint.rbi +65 -0
  1072. data/rbi/workos/webhook_endpoint_json.rbi +66 -0
  1073. data/rbi/workos/webhooks.rbi +52 -0
  1074. data/rbi/workos/widget_session_token.rbi +36 -0
  1075. data/rbi/workos/widget_session_token_response.rbi +24 -0
  1076. data/rbi/workos/widgets.rbi +23 -0
  1077. data/renovate.json +34 -0
  1078. data/script/ci +16 -0
  1079. data/test/test_helper.rb +20 -0
  1080. data/test/workos/test_actions.rb +78 -0
  1081. data/test/workos/test_admin_portal.rb +33 -0
  1082. data/test/workos/test_api_keys.rb +57 -0
  1083. data/test/workos/test_audit_logs.rb +89 -0
  1084. data/test/workos/test_authkit_helpers.rb +109 -0
  1085. data/test/workos/test_authorization.rb +321 -0
  1086. data/test/workos/test_base_client.rb +173 -0
  1087. data/test/workos/test_connect.rb +127 -0
  1088. data/test/workos/test_directory_sync.rb +81 -0
  1089. data/test/workos/test_encryptors_aes_gcm.rb +54 -0
  1090. data/test/workos/test_events.rb +33 -0
  1091. data/test/workos/test_feature_flags.rb +89 -0
  1092. data/test/workos/test_groups.rb +89 -0
  1093. data/test/workos/test_list_struct.rb +39 -0
  1094. data/test/workos/test_model_round_trip.rb +7142 -0
  1095. data/test/workos/test_multi_factor_auth.rb +81 -0
  1096. data/test/workos/test_organization_domains.rb +57 -0
  1097. data/test/workos/test_organizations.rb +81 -0
  1098. data/test/workos/test_passwordless.rb +59 -0
  1099. data/test/workos/test_pipes.rb +65 -0
  1100. data/test/workos/test_pkce.rb +40 -0
  1101. data/test/workos/test_public_client.rb +38 -0
  1102. data/test/workos/test_radar.rb +57 -0
  1103. data/test/workos/test_session.rb +261 -0
  1104. data/test/workos/test_sso.rb +73 -0
  1105. data/test/workos/test_sso_helpers.rb +80 -0
  1106. data/test/workos/test_sso_runtime.rb +45 -0
  1107. data/test/workos/test_user_management.rb +473 -0
  1108. data/test/workos/test_user_management_organization_membership_groups.rb +33 -0
  1109. data/test/workos/test_vault.rb +151 -0
  1110. data/test/workos/test_webhook_verify.rb +84 -0
  1111. data/test/workos/test_webhooks.rb +57 -0
  1112. data/test/workos/test_widgets.rb +33 -0
  1113. data/workos.gemspec +22 -21
  1114. metadata +1117 -508
  1115. data/.rspec +0 -1
  1116. data/.rubocop.yml +0 -34
  1117. data/.rubocop_todo.yml +0 -94
  1118. data/lib/workos/audit_log_export.rb +0 -32
  1119. data/lib/workos/authentication_factor_and_challenge.rb +0 -28
  1120. data/lib/workos/authentication_response.rb +0 -62
  1121. data/lib/workos/cache.rb +0 -94
  1122. data/lib/workos/challenge.rb +0 -36
  1123. data/lib/workos/connection.rb +0 -42
  1124. data/lib/workos/deprecated_hash_wrapper.rb +0 -76
  1125. data/lib/workos/deprecation.rb +0 -16
  1126. data/lib/workos/directory.rb +0 -38
  1127. data/lib/workos/directory_group.rb +0 -41
  1128. data/lib/workos/directory_user.rb +0 -93
  1129. data/lib/workos/email_verification.rb +0 -37
  1130. data/lib/workos/event.rb +0 -30
  1131. data/lib/workos/factor.rb +0 -35
  1132. data/lib/workos/feature_flag.rb +0 -34
  1133. data/lib/workos/impersonator.rb +0 -23
  1134. data/lib/workos/invitation.rb +0 -49
  1135. data/lib/workos/magic_auth.rb +0 -37
  1136. data/lib/workos/mfa.rb +0 -136
  1137. data/lib/workos/oauth_tokens.rb +0 -29
  1138. data/lib/workos/organization.rb +0 -47
  1139. data/lib/workos/organization_membership.rb +0 -43
  1140. data/lib/workos/password_reset.rb +0 -37
  1141. data/lib/workos/portal.rb +0 -54
  1142. data/lib/workos/profile.rb +0 -57
  1143. data/lib/workos/profile_and_token.rb +0 -26
  1144. data/lib/workos/refresh_authentication_response.rb +0 -51
  1145. data/lib/workos/role.rb +0 -38
  1146. data/lib/workos/types/intent.rb +0 -18
  1147. data/lib/workos/types/passwordless_session_struct.rb +0 -18
  1148. data/lib/workos/types/provider.rb +0 -16
  1149. data/lib/workos/types/widget_scope.rb +0 -15
  1150. data/lib/workos/types.rb +0 -12
  1151. data/lib/workos/user.rb +0 -45
  1152. data/lib/workos/user_and_token.rb +0 -26
  1153. data/lib/workos/user_management/session.rb +0 -57
  1154. data/lib/workos/user_response.rb +0 -22
  1155. data/lib/workos/verify_challenge.rb +0 -25
  1156. data/lib/workos/webhook.rb +0 -30
  1157. data/spec/lib/workos/audit_logs_spec.rb +0 -150
  1158. data/spec/lib/workos/cache_spec.rb +0 -94
  1159. data/spec/lib/workos/client.rb +0 -67
  1160. data/spec/lib/workos/configuration_spec.rb +0 -60
  1161. data/spec/lib/workos/directory_sync_spec.rb +0 -483
  1162. data/spec/lib/workos/directory_user_spec.rb +0 -61
  1163. data/spec/lib/workos/encryptors/aes_gcm_spec.rb +0 -41
  1164. data/spec/lib/workos/event_spec.rb +0 -109
  1165. data/spec/lib/workos/mfa_spec.rb +0 -285
  1166. data/spec/lib/workos/organizations_spec.rb +0 -569
  1167. data/spec/lib/workos/passwordless_spec.rb +0 -76
  1168. data/spec/lib/workos/portal_spec.rb +0 -116
  1169. data/spec/lib/workos/role_spec.rb +0 -142
  1170. data/spec/lib/workos/session_spec.rb +0 -475
  1171. data/spec/lib/workos/sso_spec.rb +0 -756
  1172. data/spec/lib/workos/user_management_spec.rb +0 -1999
  1173. data/spec/lib/workos/webhooks_spec.rb +0 -235
  1174. data/spec/lib/workos/widgets_spec.rb +0 -73
  1175. data/spec/spec_helper.rb +0 -53
  1176. data/spec/support/fixtures/vcr_cassettes/audit_logs/create_event.yml +0 -59
  1177. data/spec/support/fixtures/vcr_cassettes/audit_logs/create_event_custom_idempotency_key.yml +0 -60
  1178. data/spec/support/fixtures/vcr_cassettes/audit_logs/create_event_invalid.yml +0 -59
  1179. data/spec/support/fixtures/vcr_cassettes/audit_logs/create_export.yml +0 -76
  1180. data/spec/support/fixtures/vcr_cassettes/audit_logs/create_export_with_filters.yml +0 -77
  1181. data/spec/support/fixtures/vcr_cassettes/audit_logs/get_export.yml +0 -73
  1182. data/spec/support/fixtures/vcr_cassettes/audit_trail/create_event.yml +0 -65
  1183. data/spec/support/fixtures/vcr_cassettes/audit_trail/create_event_custom_idempotency_key.yml +0 -67
  1184. data/spec/support/fixtures/vcr_cassettes/audit_trail/create_event_invalid.yml +0 -68
  1185. data/spec/support/fixtures/vcr_cassettes/audit_trail/create_events_duplicate_idempotency_key_and_payload.yml +0 -131
  1186. data/spec/support/fixtures/vcr_cassettes/audit_trail/create_events_duplicate_idempotency_key_different_payload.yml +0 -134
  1187. data/spec/support/fixtures/vcr_cassettes/audit_trail/get_events.yml +0 -61
  1188. data/spec/support/fixtures/vcr_cassettes/base/execute_request_unauthenticated.yml +0 -66
  1189. data/spec/support/fixtures/vcr_cassettes/directory_sync/delete_directory.yml +0 -72
  1190. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_invalid_id.yml +0 -83
  1191. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_valid_id.yml +0 -84
  1192. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_group.yml +0 -80
  1193. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_group_with_invalid_id.yml +0 -62
  1194. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_user.yml +0 -83
  1195. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_user_with_invalid_id.yml +0 -62
  1196. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_after.yml +0 -87
  1197. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_before.yml +0 -89
  1198. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_domain.yml +0 -84
  1199. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_limit.yml +0 -85
  1200. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_no_options.yml +0 -93
  1201. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_search.yml +0 -85
  1202. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_after.yml +0 -90
  1203. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_before.yml +0 -90
  1204. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_directory.yml +0 -90
  1205. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_limit.yml +0 -84
  1206. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_no_options.yml +0 -84
  1207. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_user.yml +0 -82
  1208. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_after.yml +0 -186
  1209. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_before.yml +0 -88
  1210. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_directory.yml +0 -194
  1211. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_group.yml +0 -186
  1212. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_limit.yml +0 -189
  1213. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_no_options.yml +0 -75
  1214. data/spec/support/fixtures/vcr_cassettes/events/list_events_with_after.yml +0 -80
  1215. data/spec/support/fixtures/vcr_cassettes/events/list_events_with_event.yml +0 -80
  1216. data/spec/support/fixtures/vcr_cassettes/events/list_events_with_no_options.yml +0 -81
  1217. data/spec/support/fixtures/vcr_cassettes/events/list_events_with_organization_id.yml +0 -80
  1218. data/spec/support/fixtures/vcr_cassettes/events/list_events_with_range.yml +0 -80
  1219. data/spec/support/fixtures/vcr_cassettes/mfa/challenge_factor_generic_valid.yml +0 -82
  1220. data/spec/support/fixtures/vcr_cassettes/mfa/challenge_factor_sms_valid.yml +0 -82
  1221. data/spec/support/fixtures/vcr_cassettes/mfa/challenge_factor_totp_valid.yml +0 -82
  1222. data/spec/support/fixtures/vcr_cassettes/mfa/delete_factor.yml +0 -80
  1223. data/spec/support/fixtures/vcr_cassettes/mfa/enroll_factor_generic_valid.yml +0 -82
  1224. data/spec/support/fixtures/vcr_cassettes/mfa/enroll_factor_sms_valid.yml +0 -82
  1225. data/spec/support/fixtures/vcr_cassettes/mfa/enroll_factor_totp_valid.yml +0 -82
  1226. data/spec/support/fixtures/vcr_cassettes/mfa/get_factor_invalid.yml +0 -82
  1227. data/spec/support/fixtures/vcr_cassettes/mfa/get_factor_valid.yml +0 -82
  1228. data/spec/support/fixtures/vcr_cassettes/mfa/verify_challenge_generic_expired.yml +0 -84
  1229. data/spec/support/fixtures/vcr_cassettes/mfa/verify_challenge_generic_invalid.yml +0 -84
  1230. data/spec/support/fixtures/vcr_cassettes/mfa/verify_challenge_generic_valid.yml +0 -82
  1231. data/spec/support/fixtures/vcr_cassettes/mfa/verify_challenge_generic_valid_is_false.yml +0 -82
  1232. data/spec/support/fixtures/vcr_cassettes/organization/create.yml +0 -84
  1233. data/spec/support/fixtures/vcr_cassettes/organization/create_invalid.yml +0 -72
  1234. data/spec/support/fixtures/vcr_cassettes/organization/create_with_domain_data.yml +0 -82
  1235. data/spec/support/fixtures/vcr_cassettes/organization/create_with_domains.yml +0 -81
  1236. data/spec/support/fixtures/vcr_cassettes/organization/create_with_duplicate_idempotency_key_and_different_payload.yml +0 -155
  1237. data/spec/support/fixtures/vcr_cassettes/organization/create_with_duplicate_idempotency_key_and_payload.yml +0 -154
  1238. data/spec/support/fixtures/vcr_cassettes/organization/create_with_external_id.yml +0 -83
  1239. data/spec/support/fixtures/vcr_cassettes/organization/create_with_idempotency_key.yml +0 -79
  1240. data/spec/support/fixtures/vcr_cassettes/organization/create_without_domains.yml +0 -86
  1241. data/spec/support/fixtures/vcr_cassettes/organization/delete.yml +0 -72
  1242. data/spec/support/fixtures/vcr_cassettes/organization/delete_invalid.yml +0 -72
  1243. data/spec/support/fixtures/vcr_cassettes/organization/get.yml +0 -84
  1244. data/spec/support/fixtures/vcr_cassettes/organization/get_invalid.yml +0 -72
  1245. data/spec/support/fixtures/vcr_cassettes/organization/list.yml +0 -87
  1246. data/spec/support/fixtures/vcr_cassettes/organization/list_organization_feature_flags.yml +0 -78
  1247. data/spec/support/fixtures/vcr_cassettes/organization/list_organization_roles.yml +0 -82
  1248. data/spec/support/fixtures/vcr_cassettes/organization/update.yml +0 -84
  1249. data/spec/support/fixtures/vcr_cassettes/organization/update_with_external_id.yml +0 -78
  1250. data/spec/support/fixtures/vcr_cassettes/organization/update_with_external_id_null.yml +0 -78
  1251. data/spec/support/fixtures/vcr_cassettes/organization/update_with_stripe_customer_id.yml +0 -78
  1252. data/spec/support/fixtures/vcr_cassettes/organization/update_without_name.yml +0 -85
  1253. data/spec/support/fixtures/vcr_cassettes/passwordless/create_session.yml +0 -72
  1254. data/spec/support/fixtures/vcr_cassettes/passwordless/create_session_invalid.yml +0 -73
  1255. data/spec/support/fixtures/vcr_cassettes/passwordless/send_session.yml +0 -72
  1256. data/spec/support/fixtures/vcr_cassettes/passwordless/send_session_invalid.yml +0 -73
  1257. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_audit_logs.yml +0 -72
  1258. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_certificate_renewal.yml +0 -72
  1259. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_domain_verification.yml +0 -72
  1260. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_dsync.yml +0 -72
  1261. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_invalid.yml +0 -72
  1262. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_sso.yml +0 -72
  1263. data/spec/support/fixtures/vcr_cassettes/sso/delete_connection_with_invalid_id.yml +0 -72
  1264. data/spec/support/fixtures/vcr_cassettes/sso/delete_connection_with_valid_id.yml +0 -70
  1265. data/spec/support/fixtures/vcr_cassettes/sso/get_connection_with_invalid_id.yml +0 -72
  1266. data/spec/support/fixtures/vcr_cassettes/sso/get_connection_with_valid_id.yml +0 -86
  1267. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_after.yml +0 -83
  1268. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_before.yml +0 -86
  1269. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_connection_type.yml +0 -90
  1270. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_domain.yml +0 -86
  1271. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_limit.yml +0 -83
  1272. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_no_options.yml +0 -89
  1273. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_organization_id.yml +0 -86
  1274. data/spec/support/fixtures/vcr_cassettes/sso/profile.yml +0 -74
  1275. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/invalid.yml +0 -84
  1276. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid.yml +0 -82
  1277. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid_with_impersonator.yml +0 -80
  1278. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid_with_oauth_tokens.yml +0 -82
  1279. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/invalid.yml +0 -83
  1280. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/valid.yml +0 -81
  1281. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/invalid.yml +0 -82
  1282. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/valid.yml +0 -82
  1283. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/invalid.yml +0 -81
  1284. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/valid.yml +0 -82
  1285. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/invalid.yml +0 -82
  1286. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/unverified.yml +0 -82
  1287. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/valid.yml +0 -82
  1288. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_code/invalid.yml +0 -81
  1289. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_token/valid.yml +0 -82
  1290. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/invalid.yml +0 -83
  1291. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/valid.yml +0 -81
  1292. data/spec/support/fixtures/vcr_cassettes/user_management/confirm_password_reset/invalid.yml +0 -82
  1293. data/spec/support/fixtures/vcr_cassettes/user_management/confirm_password_reset/valid.yml +0 -82
  1294. data/spec/support/fixtures/vcr_cassettes/user_management/create_magic_auth/valid.yml +0 -80
  1295. data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/invalid.yml +0 -83
  1296. data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid.yml +0 -82
  1297. data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid_multiple_roles.yml +0 -76
  1298. data/spec/support/fixtures/vcr_cassettes/user_management/create_password_reset/valid.yml +0 -80
  1299. data/spec/support/fixtures/vcr_cassettes/user_management/create_user_invalid.yml +0 -83
  1300. data/spec/support/fixtures/vcr_cassettes/user_management/create_user_valid.yml +0 -82
  1301. data/spec/support/fixtures/vcr_cassettes/user_management/create_user_with_external_id.yml +0 -77
  1302. data/spec/support/fixtures/vcr_cassettes/user_management/deactivate_organization_membership.yml +0 -64
  1303. data/spec/support/fixtures/vcr_cassettes/user_management/delete_organization_membership/invalid.yml +0 -82
  1304. data/spec/support/fixtures/vcr_cassettes/user_management/delete_organization_membership/valid.yml +0 -78
  1305. data/spec/support/fixtures/vcr_cassettes/user_management/delete_user/invalid.yml +0 -82
  1306. data/spec/support/fixtures/vcr_cassettes/user_management/delete_user/valid.yml +0 -78
  1307. data/spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/invalid.yml +0 -82
  1308. data/spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/valid.yml +0 -82
  1309. data/spec/support/fixtures/vcr_cassettes/user_management/find_invitation_by_token/invalid.yml +0 -80
  1310. data/spec/support/fixtures/vcr_cassettes/user_management/find_invitation_by_token/valid.yml +0 -80
  1311. data/spec/support/fixtures/vcr_cassettes/user_management/get_email_verification/invalid.yml +0 -80
  1312. data/spec/support/fixtures/vcr_cassettes/user_management/get_email_verification/valid.yml +0 -80
  1313. data/spec/support/fixtures/vcr_cassettes/user_management/get_invitation/invalid.yml +0 -82
  1314. data/spec/support/fixtures/vcr_cassettes/user_management/get_invitation/valid.yml +0 -82
  1315. data/spec/support/fixtures/vcr_cassettes/user_management/get_magic_auth/invalid.yml +0 -80
  1316. data/spec/support/fixtures/vcr_cassettes/user_management/get_magic_auth/valid.yml +0 -80
  1317. data/spec/support/fixtures/vcr_cassettes/user_management/get_organization_membership.yml +0 -82
  1318. data/spec/support/fixtures/vcr_cassettes/user_management/get_password_reset/invalid.yml +0 -80
  1319. data/spec/support/fixtures/vcr_cassettes/user_management/get_password_reset/valid.yml +0 -80
  1320. data/spec/support/fixtures/vcr_cassettes/user_management/get_user.yml +0 -82
  1321. data/spec/support/fixtures/vcr_cassettes/user_management/list_auth_factors/invalid.yml +0 -82
  1322. data/spec/support/fixtures/vcr_cassettes/user_management/list_auth_factors/valid.yml +0 -82
  1323. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_after.yml +0 -83
  1324. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_before.yml +0 -83
  1325. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_limit.yml +0 -83
  1326. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_no_options.yml +0 -83
  1327. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_organization_id.yml +0 -83
  1328. data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/no_options.yml +0 -82
  1329. data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/with_options.yml +0 -82
  1330. data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/with_statuses_option.yml +0 -64
  1331. data/spec/support/fixtures/vcr_cassettes/user_management/list_sessions/valid.yml +0 -38
  1332. data/spec/support/fixtures/vcr_cassettes/user_management/list_users/no_options.yml +0 -82
  1333. data/spec/support/fixtures/vcr_cassettes/user_management/list_users/with_options.yml +0 -82
  1334. data/spec/support/fixtures/vcr_cassettes/user_management/reactivate_organization_membership.yml +0 -64
  1335. data/spec/support/fixtures/vcr_cassettes/user_management/resend_invitation/accepted.yml +0 -83
  1336. data/spec/support/fixtures/vcr_cassettes/user_management/resend_invitation/expired.yml +0 -83
  1337. data/spec/support/fixtures/vcr_cassettes/user_management/resend_invitation/invalid.yml +0 -83
  1338. data/spec/support/fixtures/vcr_cassettes/user_management/resend_invitation/revoked.yml +0 -83
  1339. data/spec/support/fixtures/vcr_cassettes/user_management/resend_invitation/valid.yml +0 -83
  1340. data/spec/support/fixtures/vcr_cassettes/user_management/reset_password/invalid.yml +0 -82
  1341. data/spec/support/fixtures/vcr_cassettes/user_management/reset_password/valid.yml +0 -82
  1342. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_invitation/invalid.yml +0 -82
  1343. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_invitation/valid.yml +0 -82
  1344. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_session/not_found.yml +0 -80
  1345. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_session/valid.yml +0 -76
  1346. data/spec/support/fixtures/vcr_cassettes/user_management/send_invitation/invalid.yml +0 -82
  1347. data/spec/support/fixtures/vcr_cassettes/user_management/send_invitation/valid.yml +0 -82
  1348. data/spec/support/fixtures/vcr_cassettes/user_management/send_magic_auth_code/valid.yml +0 -82
  1349. data/spec/support/fixtures/vcr_cassettes/user_management/send_password_reset_email/invalid.yml +0 -83
  1350. data/spec/support/fixtures/vcr_cassettes/user_management/send_password_reset_email/valid.yml +0 -82
  1351. data/spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/invalid.yml +0 -82
  1352. data/spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/valid.yml +0 -82
  1353. data/spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/invalid.yml +0 -82
  1354. data/spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/valid.yml +0 -83
  1355. data/spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/valid_multiple_roles.yml +0 -76
  1356. data/spec/support/fixtures/vcr_cassettes/user_management/update_user/email.yml +0 -82
  1357. data/spec/support/fixtures/vcr_cassettes/user_management/update_user/invalid.yml +0 -82
  1358. data/spec/support/fixtures/vcr_cassettes/user_management/update_user/locale.yml +0 -76
  1359. data/spec/support/fixtures/vcr_cassettes/user_management/update_user/valid.yml +0 -82
  1360. data/spec/support/fixtures/vcr_cassettes/user_management/update_user_external_id_null.yml +0 -77
  1361. data/spec/support/fixtures/vcr_cassettes/user_management/update_user_password/invalid.yml +0 -82
  1362. data/spec/support/fixtures/vcr_cassettes/user_management/update_user_password/valid.yml +0 -82
  1363. data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/invalid_code.yml +0 -83
  1364. data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/invalid_magic_auth_challenge.yml +0 -82
  1365. data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/valid.yml +0 -82
  1366. data/spec/support/fixtures/vcr_cassettes/widgets/get_token.yml +0 -82
  1367. data/spec/support/fixtures/vcr_cassettes/widgets/get_token_invalid_organization_id.yml +0 -74
  1368. data/spec/support/fixtures/vcr_cassettes/widgets/get_token_invalid_user_id.yml +0 -74
  1369. data/spec/support/profile.txt +0 -1
  1370. data/spec/support/shared_examples/client.rb +0 -29
  1371. data/spec/support/webhook_payload.txt +0 -1
@@ -1,1999 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe WorkOS::UserManagement do
4
- it_behaves_like 'client'
5
-
6
- describe '.authorization_url' do
7
- context 'with a provider' do
8
- let(:args) do
9
- {
10
- provider: 'authkit',
11
- client_id: 'workos-proj-123',
12
- redirect_uri: 'foo.com/auth/callback',
13
- state: {
14
- next_page: '/dashboard/edit',
15
- }.to_s,
16
- }
17
- end
18
- it 'returns a valid URL' do
19
- authorization_url = described_class.authorization_url(**args)
20
-
21
- expect(URI.parse(authorization_url)).to be_a URI
22
- end
23
-
24
- it 'returns the expected hostname' do
25
- authorization_url = described_class.authorization_url(**args)
26
-
27
- expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
28
- end
29
-
30
- it 'returns the expected query string' do
31
- authorization_url = described_class.authorization_url(**args)
32
-
33
- expect(URI.parse(authorization_url).query).to eq(
34
- 'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
35
- '&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2F' \
36
- 'edit%22%7D&provider=authkit',
37
- )
38
- end
39
-
40
- context 'with provider_scopes' do
41
- it 'returns a valid authorization URL that includes provider_scopes' do
42
- url = WorkOS::UserManagement.authorization_url(
43
- provider: 'GoogleOAuth',
44
- provider_scopes: %w[custom-scope-1 custom-scope-2],
45
- client_id: 'workos-proj-123',
46
- redirect_uri: 'foo.com/auth/callback',
47
- state: {
48
- next_page: '/dashboard/edit',
49
- }.to_s,
50
- )
51
-
52
- expect(url).to eq(
53
- 'https://api.workos.com/user_management/authorize?' \
54
- 'client_id=workos-proj-123' \
55
- '&redirect_uri=foo.com%2Fauth%2Fcallback' \
56
- '&response_type=code' \
57
- '&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2F' \
58
- 'edit%22%7D' \
59
- '&provider=GoogleOAuth' \
60
- '&provider_scopes=custom-scope-1' \
61
- '&provider_scopes=custom-scope-2',
62
- )
63
- end
64
- end
65
- end
66
-
67
- context 'with a connection selector' do
68
- let(:args) do
69
- {
70
- connection_id: 'connection_123',
71
- client_id: 'workos-proj-123',
72
- redirect_uri: 'foo.com/auth/callback',
73
- state: {
74
- next_page: '/dashboard/edit',
75
- }.to_s,
76
- }
77
- end
78
- it 'returns a valid URL' do
79
- authorization_url = described_class.authorization_url(**args)
80
-
81
- expect(URI.parse(authorization_url)).to be_a URI
82
- end
83
-
84
- it 'returns the expected hostname' do
85
- authorization_url = described_class.authorization_url(**args)
86
-
87
- expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
88
- end
89
-
90
- it 'returns the expected query string' do
91
- authorization_url = described_class.authorization_url(**args)
92
-
93
- expect(URI.parse(authorization_url).query).to eq(
94
- 'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
95
- '&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2F' \
96
- 'edit%22%7D&connection_id=connection_123',
97
- )
98
- end
99
- end
100
-
101
- context 'with an organization selector' do
102
- let(:args) do
103
- {
104
- organization_id: 'org_123',
105
- client_id: 'workos-proj-123',
106
- redirect_uri: 'foo.com/auth/callback',
107
- state: {
108
- next_page: '/dashboard/edit',
109
- }.to_s,
110
- }
111
- end
112
- it 'returns a valid URL' do
113
- authorization_url = described_class.authorization_url(**args)
114
-
115
- expect(URI.parse(authorization_url)).to be_a URI
116
- end
117
-
118
- it 'returns the expected hostname' do
119
- authorization_url = described_class.authorization_url(**args)
120
-
121
- expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
122
- end
123
-
124
- it 'returns the expected query string' do
125
- authorization_url = described_class.authorization_url(**args)
126
-
127
- expect(URI.parse(authorization_url).query).to eq(
128
- 'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
129
- '&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2F' \
130
- 'edit%22%7D&organization_id=org_123',
131
- )
132
- end
133
- end
134
-
135
- context 'with a domain hint' do
136
- let(:args) do
137
- {
138
- connection_id: 'connection_123',
139
- domain_hint: 'foo.com',
140
- client_id: 'workos-proj-123',
141
- redirect_uri: 'foo.com/auth/callback',
142
- state: {
143
- next_page: '/dashboard/edit',
144
- }.to_s,
145
- }
146
- end
147
- it 'returns a valid URL' do
148
- authorization_url = described_class.authorization_url(**args)
149
-
150
- expect(URI.parse(authorization_url)).to be_a URI
151
- end
152
-
153
- it 'returns the expected hostname' do
154
- authorization_url = described_class.authorization_url(**args)
155
-
156
- expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
157
- end
158
-
159
- it 'returns the expected query string' do
160
- authorization_url = described_class.authorization_url(**args)
161
-
162
- expect(URI.parse(authorization_url).query).to eq(
163
- 'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
164
- '&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2' \
165
- 'Fedit%22%7D&domain_hint=foo.com&connection_id=connection_123',
166
- )
167
- end
168
- end
169
-
170
- context 'with a login hint' do
171
- let(:args) do
172
- {
173
- connection_id: 'connection_123',
174
- login_hint: 'foo@workos.com',
175
- client_id: 'workos-proj-123',
176
- redirect_uri: 'foo.com/auth/callback',
177
- state: {
178
- next_page: '/dashboard/edit',
179
- }.to_s,
180
- }
181
- end
182
- it 'returns a valid URL' do
183
- authorization_url = described_class.authorization_url(**args)
184
-
185
- expect(URI.parse(authorization_url)).to be_a URI
186
- end
187
-
188
- it 'returns the expected hostname' do
189
- authorization_url = described_class.authorization_url(**args)
190
-
191
- expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
192
- end
193
-
194
- it 'returns the expected query string' do
195
- authorization_url = described_class.authorization_url(**args)
196
-
197
- expect(URI.parse(authorization_url).query).to eq(
198
- 'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
199
- '&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2' \
200
- 'Fedit%22%7D&login_hint=foo%40workos.com&connection_id=connection_123',
201
- )
202
- end
203
- end
204
-
205
- context 'with a screen hint' do
206
- let(:args) do
207
- {
208
- provider: 'authkit',
209
- screen_hint: 'sign_up',
210
- client_id: 'workos-proj-123',
211
- redirect_uri: 'foo.com/auth/callback',
212
- state: {
213
- next_page: '/dashboard/edit',
214
- }.to_s,
215
- }
216
- end
217
- it 'returns a valid URL' do
218
- authorization_url = described_class.authorization_url(**args)
219
-
220
- expect(URI.parse(authorization_url)).to be_a URI
221
- end
222
-
223
- it 'returns the expected hostname' do
224
- authorization_url = described_class.authorization_url(**args)
225
-
226
- expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
227
- end
228
-
229
- it 'returns the expected query string' do
230
- authorization_url = described_class.authorization_url(**args)
231
-
232
- expect(URI.parse(authorization_url).query).to eq(
233
- 'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
234
- '&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2F' \
235
- 'edit%22%7D&screen_hint=sign_up&provider=authkit',
236
- )
237
- end
238
- end
239
-
240
- context 'with neither connection_id, organization_id or provider' do
241
- let(:args) do
242
- {
243
- client_id: 'workos-proj-123',
244
- redirect_uri: 'foo.com/auth/callback',
245
- state: {
246
- next_page: '/dashboard/edit',
247
- }.to_s,
248
- }
249
- end
250
- it 'raises an error' do
251
- expect do
252
- described_class.authorization_url(**args)
253
- end.to raise_error(
254
- ArgumentError,
255
- 'Either connection ID, organization ID, or provider is required.',
256
- )
257
- end
258
- end
259
-
260
- context 'with an invalid provider' do
261
- let(:args) do
262
- {
263
- provider: 'Okta',
264
- client_id: 'workos-proj-123',
265
- redirect_uri: 'foo.com/auth/callback',
266
- state: {
267
- next_page: '/dashboard/edit',
268
- }.to_s,
269
- }
270
- end
271
- it 'raises an error' do
272
- expect do
273
- described_class.authorization_url(**args)
274
- end.to raise_error(
275
- ArgumentError,
276
- 'Okta is not a valid value. `provider` must be in ' \
277
- '["AppleOAuth", "GitHubOAuth", "GoogleOAuth", "MicrosoftOAuth", "authkit"]',
278
- )
279
- end
280
- end
281
- end
282
-
283
- describe '.get_user' do
284
- context 'with a valid id' do
285
- it 'returns a user' do
286
- VCR.use_cassette 'user_management/get_user' do
287
- user = described_class.get_user(
288
- id: 'user_01HP0B4ZV2FWWVY0BF16GFDAER',
289
- )
290
-
291
- expect(user.id.instance_of?(String))
292
- expect(user.instance_of?(WorkOS::User))
293
- expect(user.first_name).to eq('Bob')
294
- expect(user.last_name).to eq('Loblaw')
295
- expect(user.email).to eq('bob@example.com')
296
- expect(user.email_verified).to eq(false)
297
- expect(user.profile_picture_url).to eq(nil)
298
- expect(user.last_sign_in_at).to eq('2024-02-06T23:13:18.137Z')
299
- end
300
- end
301
- end
302
-
303
- context 'with an invalid id' do
304
- it 'returns an error' do
305
- expect do
306
- described_class.get_user(
307
- id: 'invalid_user_id',
308
- ).to raise_error(WorkOS::APIError)
309
- end
310
- end
311
- end
312
- end
313
-
314
- describe '.list_users' do
315
- context 'with no options' do
316
- it 'returns a list of users' do
317
- expected_metadata = {
318
- 'after' => nil,
319
- 'before' => 'before-id',
320
- }
321
-
322
- VCR.use_cassette 'user_management/list_users/no_options' do
323
- users = described_class.list_users
324
-
325
- expect(users.data.size).to eq(2)
326
- expect(users.list_metadata).to eq(expected_metadata)
327
- end
328
- end
329
- end
330
-
331
- context 'with options' do
332
- it 'returns a list of matching users' do
333
- request_args = [
334
- '/user_management/users?email=lucy.lawless%40example.com&'\
335
- 'order=desc&'\
336
- 'limit=5',
337
- 'Content-Type' => 'application/json'
338
- ]
339
-
340
- expected_request = Net::HTTP::Get.new(*request_args)
341
-
342
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
343
- and_return(expected_request)
344
-
345
- VCR.use_cassette 'user_management/list_users/with_options' do
346
- users = described_class.list_users(
347
- email: 'lucy.lawless@example.com',
348
- order: 'desc',
349
- limit: '5',
350
- )
351
-
352
- expect(users.data.size).to eq(1)
353
- expect(users.data[0].email).to eq('lucy.lawless@example.com')
354
- end
355
- end
356
- end
357
- end
358
-
359
- describe '.create_user' do
360
- context 'with a valid payload' do
361
- it 'creates a user' do
362
- VCR.use_cassette 'user_management/create_user_valid' do
363
- user = described_class.create_user(
364
- email: 'foo@example.com',
365
- first_name: 'Foo',
366
- last_name: 'Bar',
367
- email_verified: true,
368
- )
369
-
370
- expect(user.first_name).to eq('Foo')
371
- expect(user.last_name).to eq('Bar')
372
- expect(user.email).to eq('foo@example.com')
373
- end
374
- end
375
-
376
- it 'only sends non-nil values in request body' do
377
- expect(described_class).to receive(:post_request) do |options|
378
- body = options[:body]
379
- expect(body).to eq({ email: 'test@example.com', first_name: 'John' })
380
- expect(body).not_to have_key(:last_name)
381
- expect(body).not_to have_key(:email_verified)
382
-
383
- double('request')
384
- end.and_return(double('request'))
385
-
386
- expect(described_class).to receive(:execute_request).and_return(
387
- double('response', body: '{"id": "test_user", "email": "test@example.com"}'),
388
- )
389
-
390
- described_class.create_user(
391
- email: 'test@example.com',
392
- first_name: 'John',
393
- )
394
- end
395
-
396
- it 'creates a user with external_id' do
397
- VCR.use_cassette 'user_management/create_user_with_external_id' do
398
- user = described_class.create_user(
399
- email: 'external@example.com',
400
- first_name: 'External',
401
- last_name: 'User',
402
- external_id: 'ext_user_123',
403
- )
404
-
405
- expect(user.first_name).to eq('External')
406
- expect(user.last_name).to eq('User')
407
- expect(user.email).to eq('external@example.com')
408
- expect(user.external_id).to eq('ext_user_123')
409
- end
410
- end
411
-
412
- context 'with an invalid payload' do
413
- it 'returns an error' do
414
- VCR.use_cassette 'user_management/create_user_invalid' do
415
- expect do
416
- described_class.create_user(email: '')
417
- end.to raise_error(
418
- WorkOS::UnprocessableEntityError,
419
- /email_string_required/,
420
- )
421
- end
422
- end
423
- end
424
- end
425
- end
426
-
427
- describe '.update_user' do
428
- context 'with a valid payload' do
429
- it 'update_user a user' do
430
- VCR.use_cassette 'user_management/update_user/valid' do
431
- user = described_class.update_user(
432
- id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
433
- first_name: 'Jane',
434
- last_name: 'Doe',
435
- email_verified: false,
436
- external_id: '123',
437
- )
438
- expect(user.first_name).to eq('Jane')
439
- expect(user.last_name).to eq('Doe')
440
- expect(user.email_verified).to eq(false)
441
- expect(user.external_id).to eq('123')
442
- end
443
- end
444
-
445
- it 'can update user locale' do
446
- VCR.use_cassette 'user_management/update_user/locale' do
447
- user = described_class.update_user(
448
- id: 'user_01K78B3ZB5B7119MYEXTQE5KNE',
449
- locale: 'en-US',
450
- )
451
- expect(user.locale).to eq('en-US')
452
- end
453
- end
454
-
455
- it 'can update email addresses' do
456
- VCR.use_cassette 'user_management/update_user/email' do
457
- user = described_class.update_user(
458
- id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
459
- email: 'jane@example.com',
460
- )
461
- expect(user.email).to eq('jane@example.com')
462
- expect(user.email_verified).to eq(false)
463
- end
464
- end
465
-
466
- it 'only sends non-nil values in request body' do
467
- # Mock the request to inspect what's being sent
468
- expect(described_class).to receive(:put_request) do |options|
469
- # Verify that the body only contains non-nil values
470
- body = options[:body]
471
- expect(body).to eq({ email_verified: true })
472
- expect(body).not_to have_key(:first_name)
473
- expect(body).not_to have_key(:last_name)
474
- expect(body).not_to have_key(:email)
475
- expect(body).not_to have_key(:locale)
476
-
477
- # Return a mock request object
478
- double('request')
479
- end.and_return(double('request'))
480
-
481
- expect(described_class).to receive(:execute_request).and_return(
482
- double('response', body: '{"id": "test_user", "email_verified": true}'),
483
- )
484
-
485
- described_class.update_user(
486
- id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
487
- email_verified: true,
488
- )
489
- end
490
-
491
- it 'can set external_id to null explicitly' do
492
- original_method = described_class.method(:put_request)
493
- allow(described_class).to receive(:put_request) do |kwargs|
494
- original_method.call(**kwargs)
495
- end
496
-
497
- VCR.use_cassette 'user_management/update_user_external_id_null' do
498
- described_class.update_user(
499
- id: 'user_01K0SR53HJ58M957MYAB6TDZ9X',
500
- first_name: 'John',
501
- external_id: nil,
502
- )
503
- end
504
-
505
- expect(described_class).to have_received(:put_request).with(
506
- hash_including(body: hash_including(external_id: nil)),
507
- )
508
- end
509
-
510
- context 'with an invalid payload' do
511
- it 'returns an error' do
512
- VCR.use_cassette 'user_management/update_user/invalid' do
513
- expect do
514
- described_class.update_user(id: 'invalid')
515
- end.to raise_error(WorkOS::NotFoundError, /User not found/)
516
- end
517
- end
518
- end
519
- end
520
- end
521
-
522
- describe '.delete_user' do
523
- context 'with a valid id' do
524
- it 'returns true' do
525
- VCR.use_cassette('user_management/delete_user/valid') do
526
- response = WorkOS::UserManagement.delete_user(
527
- id: 'user_01H7WRJBPAAHX1BYRQHEK7QC4A',
528
- )
529
-
530
- expect(response).to be(true)
531
- end
532
- end
533
- end
534
-
535
- context 'with an invalid id' do
536
- it 'raises an error' do
537
- VCR.use_cassette('user_management/delete_user/invalid') do
538
- expect do
539
- WorkOS::UserManagement.delete_user(id: 'invalid')
540
- end.to raise_error(WorkOS::NotFoundError, /User not found/)
541
- end
542
- end
543
- end
544
- end
545
-
546
- describe '.authenticate_with_password' do
547
- context 'with a valid password' do
548
- it 'returns user' do
549
- VCR.use_cassette('user_management/authenticate_with_password/valid', tag: :token) do
550
- authentication_response = WorkOS::UserManagement.authenticate_with_password(
551
- email: 'test@workos.app',
552
- password: '7YtYic00VWcXatPb',
553
- client_id: 'client_123',
554
- ip_address: '200.240.210.16',
555
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
556
- )
557
- expect(authentication_response.user.id).to eq('user_01H7TVSKS45SDHN5V9XPSM6H44')
558
- end
559
- end
560
- end
561
-
562
- context 'with an invalid user' do
563
- it 'raises an error' do
564
- VCR.use_cassette('user_management/authenticate_with_password/invalid') do
565
- expect do
566
- WorkOS::UserManagement.authenticate_with_password(
567
- email: 'invalid@workos.app',
568
- password: 'invalid',
569
- client_id: 'client_123',
570
- ip_address: '200.240.210.16',
571
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
572
- )
573
- end.to raise_error(WorkOS::NotFoundError, /User not found/)
574
- end
575
- end
576
- end
577
-
578
- context 'with an unverified user' do
579
- it 'raises a ForbiddenRequestError' do
580
- VCR.use_cassette('user_management/authenticate_with_password/unverified') do
581
- expect do
582
- WorkOS::UserManagement.authenticate_with_password(
583
- email: 'unverified@workos.app',
584
- password: '7YtYic00VWcXatPb',
585
- client_id: 'client_123',
586
- )
587
- end.to raise_error(WorkOS::ForbiddenRequestError, /Email ownership must be verified before authentication/)
588
- end
589
- end
590
- end
591
-
592
- context 'with an invitation_token' do
593
- it 'includes invitation_token in the request body' do
594
- expect(described_class).to receive(:post_request) do |options|
595
- body = options[:body]
596
- expect(body[:invitation_token]).to eq('invitation_token_123')
597
-
598
- double('request')
599
- end.and_return(double('request'))
600
-
601
- expect(described_class).to receive(:execute_request).and_return(
602
- double('response', body: '{"user": {"id": "user_123"}, "access_token": "token", "refresh_token": "refresh"}'),
603
- )
604
-
605
- described_class.authenticate_with_password(
606
- email: 'test@workos.app',
607
- password: 'password123',
608
- client_id: 'client_123',
609
- invitation_token: 'invitation_token_123',
610
- )
611
- end
612
- end
613
- end
614
-
615
- describe '.authenticate_with_code' do
616
- context 'with a valid code' do
617
- it 'returns user' do
618
- VCR.use_cassette('user_management/authenticate_with_code/valid') do
619
- authentication_response = WorkOS::UserManagement.authenticate_with_code(
620
- code: '01H93ZZHA0JBHFJH9RR11S83YN',
621
- client_id: 'client_123',
622
- ip_address: '200.240.210.16',
623
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
624
- )
625
- expect(authentication_response.user.id).to eq('user_01H93ZY4F80YZRRS6N59Z2HFVS')
626
- expect(authentication_response.access_token).to eq('<ACCESS_TOKEN>')
627
- expect(authentication_response.refresh_token).to eq('<REFRESH_TOKEN>')
628
- end
629
- end
630
-
631
- context 'when oauth_tokens is present in the api response' do
632
- it 'returns an oauth_tokens object' do
633
- VCR.use_cassette('user_management/authenticate_with_code/valid_with_oauth_tokens') do
634
- authentication_response = WorkOS::UserManagement.authenticate_with_code(
635
- code: '01H93ZZHA0JBHFJH9RR11S83YN',
636
- client_id: 'client_123',
637
- ip_address: '200.240.210.16',
638
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
639
- )
640
-
641
- expect(authentication_response.oauth_tokens).to be_a(WorkOS::OAuthTokens)
642
- expect(authentication_response.oauth_tokens.access_token).to eq('oauth_access_token')
643
- expect(authentication_response.oauth_tokens.refresh_token).to eq('oauth_refresh_token')
644
- expect(authentication_response.oauth_tokens.scopes).to eq(%w[read write])
645
- expect(authentication_response.oauth_tokens.expires_at).to eq(1_234_567_890)
646
- end
647
- end
648
- end
649
-
650
- context 'when oauth_tokens is not present in the api response' do
651
- it 'returns nil oauth_tokens' do
652
- VCR.use_cassette('user_management/authenticate_with_code/valid') do
653
- authentication_response = WorkOS::UserManagement.authenticate_with_code(
654
- code: '01H93ZZHA0JBHFJH9RR11S83YN',
655
- client_id: 'client_123',
656
- ip_address: '200.240.210.16',
657
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
658
- )
659
-
660
- expect(authentication_response.oauth_tokens).to be_nil
661
- end
662
- end
663
- end
664
-
665
- context 'when the user is being impersonated' do
666
- it 'contains the impersonator metadata' do
667
- VCR.use_cassette('user_management/authenticate_with_code/valid_with_impersonator') do
668
- authentication_response = WorkOS::UserManagement.authenticate_with_code(
669
- code: '01HRX85ATQB2MN40K4FZ9C2HFR',
670
- client_id: 'client_01GS91XFB2YPR1C0NR5SH758Q0',
671
- )
672
-
673
- expect(authentication_response.impersonator).to have_attributes(
674
- email: 'admin@foocorp.com',
675
- reason: 'For testing.',
676
- )
677
- end
678
- end
679
- end
680
- end
681
-
682
- context 'with an invalid code' do
683
- it 'raises an error' do
684
- VCR.use_cassette('user_management/authenticate_with_code/invalid') do
685
- expect do
686
- WorkOS::UserManagement.authenticate_with_code(
687
- code: 'invalid',
688
- client_id: 'client_123',
689
- ip_address: '200.240.210.16',
690
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
691
- )
692
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
693
- end
694
- end
695
- end
696
-
697
- context 'with an invitation_token' do
698
- it 'includes invitation_token in the request body' do
699
- expect(described_class).to receive(:post_request) do |options|
700
- body = options[:body]
701
- expect(body[:invitation_token]).to eq('invitation_token_123')
702
-
703
- double('request')
704
- end.and_return(double('request'))
705
-
706
- expect(described_class).to receive(:execute_request).and_return(
707
- double('response', body: '{"user": {"id": "user_123"}, "access_token": "token", "refresh_token": "refresh"}'),
708
- )
709
-
710
- described_class.authenticate_with_code(
711
- code: '01H93ZZHA0JBHFJH9RR11S83YN',
712
- client_id: 'client_123',
713
- invitation_token: 'invitation_token_123',
714
- )
715
- end
716
- end
717
- end
718
-
719
- describe '.authenticate_with_refresh_token' do
720
- context 'with a valid refresh_token' do
721
- it 'returns user' do
722
- VCR.use_cassette('user_management/authenticate_with_refresh_token/valid', tag: :token) do
723
- authentication_response = WorkOS::UserManagement.authenticate_with_refresh_token(
724
- refresh_token: 'some_refresh_token',
725
- client_id: 'client_123',
726
- ip_address: '200.240.210.16',
727
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
728
- )
729
- expect(authentication_response.access_token).to eq('<ACCESS_TOKEN>')
730
- expect(authentication_response.refresh_token).to eq('<REFRESH_TOKEN>')
731
- expect(authentication_response.user.id).to eq('user_01H93WD0R0KWF8Q7BK02C0RPYJ')
732
- end
733
- end
734
- end
735
-
736
- context 'with an invalid refresh_token' do
737
- it 'raises an error' do
738
- VCR.use_cassette('user_management/authenticate_with_refresh_code/invalid', tag: :token) do
739
- expect do
740
- WorkOS::UserManagement.authenticate_with_refresh_token(
741
- refresh_token: 'invalid',
742
- client_id: 'client_123',
743
- ip_address: '200.240.210.16',
744
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
745
- )
746
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
747
- end
748
- end
749
- end
750
- end
751
-
752
- describe '.authenticate_with_magic_auth' do
753
- context 'with a valid code' do
754
- it 'returns user' do
755
- VCR.use_cassette('user_management/authenticate_with_magic_auth/valid', tag: :token) do
756
- authentication_response = WorkOS::UserManagement.authenticate_with_magic_auth(
757
- code: '452079',
758
- client_id: 'project_01EGKAEB7G5N88E83MF99J785F',
759
- email: 'test@workos.com',
760
- ip_address: '200.240.210.16',
761
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
762
- )
763
- expect(authentication_response.user.id).to eq('user_01H93WD0R0KWF8Q7BK02C0RPYJ')
764
- end
765
- end
766
- end
767
-
768
- context 'with an invalid code' do
769
- it 'returns an error' do
770
- VCR.use_cassette('user_management/authenticate_with_magic_auth/invalid', tag: :token) do
771
- expect do
772
- WorkOS::UserManagement.authenticate_with_magic_auth(
773
- code: 'invalid',
774
- client_id: 'client_123',
775
- email: 'test@workos.com',
776
- )
777
- end.to raise_error(WorkOS::NotFoundError, /User not found/)
778
- end
779
- end
780
- end
781
-
782
- context 'with an invitation_token' do
783
- it 'includes invitation_token in the request body' do
784
- expect(described_class).to receive(:post_request) do |options|
785
- body = options[:body]
786
- expect(body[:invitation_token]).to eq('invitation_token_123')
787
-
788
- double('request')
789
- end.and_return(double('request'))
790
-
791
- expect(described_class).to receive(:execute_request).and_return(
792
- double('response', body: '{"user": {"id": "user_123"}, "access_token": "token", "refresh_token": "refresh"}'),
793
- )
794
-
795
- described_class.authenticate_with_magic_auth(
796
- code: '452079',
797
- client_id: 'client_123',
798
- email: 'test@workos.com',
799
- invitation_token: 'invitation_token_123',
800
- )
801
- end
802
- end
803
- end
804
-
805
- describe '.authenticate_with_organization_selection' do
806
- context 'with a valid code' do
807
- it 'returns user' do
808
- VCR.use_cassette('user_management/authenticate_with_organization_selection/valid', tag: :token) do
809
- authentication_response = WorkOS::UserManagement.authenticate_with_organization_selection(
810
- client_id: 'project_01EGKAEB7G5N88E83MF99J785F',
811
- organization_id: 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
812
- pending_authentication_token: 'pending_authentication_token_1234',
813
- ip_address: '200.240.210.16',
814
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
815
- )
816
- expect(authentication_response.user.id).to eq('user_01H93WD0R0KWF8Q7BK02C0RPYJ')
817
- expect(authentication_response.organization_id).to eq('org_01H5JQDV7R7ATEYZDEG0W5PRYS')
818
- end
819
- end
820
- end
821
-
822
- context 'with an invalid token' do
823
- it 'returns an error' do
824
- VCR.use_cassette('user_management/authenticate_with_organization_selection/invalid', tag: :token) do
825
- expect do
826
- WorkOS::UserManagement.authenticate_with_organization_selection(
827
- organization_id: 'invalid_org_id',
828
- client_id: 'project_01EGKAEB7G5N88E83MF99J785F',
829
- pending_authentication_token: 'pending_authentication_token_1234',
830
- )
831
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
832
- end
833
- end
834
- end
835
- end
836
-
837
- describe '.authenticate_with_totp' do
838
- context 'with a valid code' do
839
- it 'returns user' do
840
- VCR.use_cassette('user_management/authenticate_with_totp/valid', tag: :token) do
841
- authentication_response = WorkOS::UserManagement.authenticate_with_totp(
842
- code: '01H93ZZHA0JBHFJH9RR11S83YN',
843
- client_id: 'client_123',
844
- pending_authentication_token: 'pending_authentication_token_1234',
845
- authentication_challenge_id: 'authentication_challenge_id',
846
- ip_address: '200.240.210.16',
847
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
848
- )
849
- expect(authentication_response.user.id).to eq('user_01H93ZY4F80YZRRS6N59Z2HFVS')
850
- end
851
- end
852
- end
853
-
854
- context 'with an invalid code' do
855
- it 'raises an error' do
856
- VCR.use_cassette('user_management/authenticate_with_totp/invalid', tag: :token) do
857
- expect do
858
- WorkOS::UserManagement.authenticate_with_totp(
859
- code: 'invalid',
860
- client_id: 'client_123',
861
- pending_authentication_token: 'pending_authentication_token_1234',
862
- authentication_challenge_id: 'authentication_challenge_id',
863
- ip_address: '200.240.210.16',
864
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
865
- )
866
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
867
- end
868
- end
869
- end
870
- end
871
-
872
- describe '.authenticate_with_email_verification' do
873
- context 'with a valid code' do
874
- it 'returns user' do
875
- VCR.use_cassette('user_management/authenticate_with_email_verification/valid', tag: :token) do
876
- authentication_response = WorkOS::UserManagement.authenticate_with_email_verification(
877
- code: '01H93ZZHA0JBHFJH9RR11S83YN',
878
- client_id: 'client_123',
879
- pending_authentication_token: 'pending_authentication_token_1234',
880
- ip_address: '200.240.210.16',
881
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
882
- )
883
- expect(authentication_response.user.id).to eq('user_01H93ZY4F80YZRRS6N59Z2HFVS')
884
- end
885
- end
886
- end
887
-
888
- context 'with an invalid code' do
889
- it 'raises an error' do
890
- VCR.use_cassette('user_management/authenticate_with_email_verification/invalid', tag: :token) do
891
- expect do
892
- WorkOS::UserManagement.authenticate_with_email_verification(
893
- code: 'invalid',
894
- client_id: 'client_123',
895
- pending_authentication_token: 'pending_authentication_token_1234',
896
- ip_address: '200.240.210.16',
897
- user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
898
- )
899
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
900
- end
901
- end
902
- end
903
- end
904
-
905
- describe '.get_magic_auth' do
906
- context 'with a valid id' do
907
- it 'returns a magic_auth object' do
908
- VCR.use_cassette 'user_management/get_magic_auth/valid' do
909
- magic_auth = described_class.get_magic_auth(
910
- id: 'magic_auth_01HWXVEWWSMR5HS8M6FBGMBJJ9',
911
- )
912
-
913
- expect(magic_auth.id.instance_of?(String))
914
- expect(magic_auth.instance_of?(WorkOS::MagicAuth))
915
- end
916
- end
917
- end
918
-
919
- context 'with an invalid id' do
920
- it 'raises an error' do
921
- VCR.use_cassette('user_management/get_magic_auth/invalid') do
922
- expect do
923
- WorkOS::UserManagement.get_magic_auth(id: 'invalid')
924
- end.to raise_error(WorkOS::NotFoundError, /MagicAuth not found/)
925
- end
926
- end
927
- end
928
- end
929
-
930
- describe '.create_magic_auth' do
931
- context 'with valid payload' do
932
- it 'creates a magic_auth' do
933
- VCR.use_cassette 'user_management/create_magic_auth/valid' do
934
- magic_auth = described_class.create_magic_auth(
935
- email: 'test@workos.com',
936
- )
937
-
938
- expect(magic_auth.id).to eq('magic_auth_01HWXVEWWSMR5HS8M6FBGMBJJ9')
939
- expect(magic_auth.email).to eq('test@workos.com')
940
- end
941
- end
942
- end
943
- end
944
-
945
- describe '.send_magic_auth_code' do
946
- context 'with valid parameters' do
947
- it 'sends a magic link to the email address' do
948
- VCR.use_cassette 'user_management/send_magic_auth_code/valid' do
949
- described_class.send_magic_auth_code(
950
- email: 'test@gmail.com',
951
- )
952
- end
953
- end
954
- end
955
- end
956
-
957
- describe '.enroll_auth_factor' do
958
- context 'with a valid user_id and auth factor type' do
959
- it 'returns an auth factor and challenge' do
960
- VCR.use_cassette('user_management/enroll_auth_factor/valid') do
961
- authentication_response = WorkOS::UserManagement.enroll_auth_factor(
962
- user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
963
- type: 'totp',
964
- totp_secret: 'secret-test',
965
- )
966
-
967
- expect(authentication_response.authentication_factor.id).to eq('auth_factor_01H96FETXENNY99ARX0GRC804C')
968
- expect(authentication_response.authentication_challenge.id).to eq('auth_challenge_01H96FETXGTW1QMBSBT2T36PW0')
969
- end
970
- end
971
-
972
- it 'only sends non-nil values in request body' do
973
- expect(described_class).to receive(:post_request) do |options|
974
- body = options[:body]
975
- expect(body).to eq({ type: 'totp', totp_issuer: 'Test App' })
976
- expect(body).not_to have_key(:totp_user)
977
- expect(body).not_to have_key(:totp_secret)
978
-
979
- double('request')
980
- end.and_return(double('request'))
981
-
982
- expect(described_class).to receive(:execute_request).and_return(
983
- double('response',
984
- body: '{"authentication_factor": {"id": "test"}, "authentication_challenge": {"id": "test"}}',),
985
- )
986
-
987
- described_class.enroll_auth_factor(
988
- user_id: 'user_123',
989
- type: 'totp',
990
- totp_issuer: 'Test App',
991
- )
992
- end
993
- end
994
-
995
- context 'with an incorrect user id' do
996
- it 'raises an error' do
997
- VCR.use_cassette('user_management/enroll_auth_factor/invalid') do
998
- expect do
999
- WorkOS::UserManagement.enroll_auth_factor(
1000
- user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
1001
- type: 'totp',
1002
- )
1003
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
1004
- end
1005
- end
1006
- end
1007
-
1008
- context 'with an invalid auth factor type' do
1009
- it 'raises an error' do
1010
- expect do
1011
- described_class.enroll_auth_factor(user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
1012
- type: 'invalid-factor',)
1013
- end.to raise_error(
1014
- ArgumentError,
1015
- 'invalid-factor is not a valid value. `type` must be in ["totp"]',
1016
- )
1017
- end
1018
- end
1019
- end
1020
-
1021
- describe '.list_auth_factors' do
1022
- context 'with a valid user_id' do
1023
- it 'returns a list of auth factors' do
1024
- VCR.use_cassette('user_management/list_auth_factors/valid') do
1025
- authentication_response = WorkOS::UserManagement.list_auth_factors(
1026
- user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
1027
- )
1028
-
1029
- expect(authentication_response.data.first.id).to eq('auth_factor_01H96FETXENNY99ARX0GRC804C')
1030
- end
1031
- end
1032
- end
1033
- context 'with an incorrect user id' do
1034
- it 'raises an error' do
1035
- VCR.use_cassette('user_management/list_auth_factors/invalid') do
1036
- expect do
1037
- WorkOS::UserManagement.list_auth_factors(
1038
- user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
1039
- )
1040
- end.to raise_error(WorkOS::InvalidRequestError, /Status 400/)
1041
- end
1042
- end
1043
- end
1044
- end
1045
-
1046
- describe '.get_email_verification' do
1047
- context 'with a valid id' do
1048
- it 'returns an email_verification object' do
1049
- VCR.use_cassette 'user_management/get_email_verification/valid' do
1050
- email_verification = described_class.get_email_verification(
1051
- id: 'email_verification_01HYK9VKNJQ0MJDXEXQP0DA1VK',
1052
- )
1053
-
1054
- expect(email_verification.id.instance_of?(String))
1055
- expect(email_verification.instance_of?(WorkOS::EmailVerification))
1056
- end
1057
- end
1058
- end
1059
-
1060
- context 'with an invalid id' do
1061
- it 'raises an error' do
1062
- VCR.use_cassette('user_management/get_email_verification/invalid') do
1063
- expect do
1064
- WorkOS::UserManagement.get_email_verification(id: 'invalid')
1065
- end.to raise_error(WorkOS::NotFoundError, /Email Verification not found/)
1066
- end
1067
- end
1068
- end
1069
- end
1070
-
1071
- describe '.send_verification_email' do
1072
- context 'with valid parameters' do
1073
- it 'sends an email to that user and the magic auth challenge' do
1074
- VCR.use_cassette 'user_management/send_verification_email/valid' do
1075
- verification_response = described_class.send_verification_email(
1076
- user_id: 'user_01H93WD0R0KWF8Q7BK02C0RPYJ',
1077
- )
1078
- expect(verification_response.user.id).to eq('user_01H93WD0R0KWF8Q7BK02C0RPYJ')
1079
- end
1080
- end
1081
- end
1082
-
1083
- context 'when the user does not exist' do
1084
- it 'returns an error' do
1085
- VCR.use_cassette 'user_management/send_verification_email/invalid' do
1086
- expect do
1087
- described_class.send_verification_email(
1088
- user_id: 'bad_id',
1089
- )
1090
- end.to raise_error(WorkOS::NotFoundError, /User not found/)
1091
- end
1092
- end
1093
- end
1094
- end
1095
-
1096
- describe '.verify_email' do
1097
- context 'with valid parameters' do
1098
- it 'verifies the email and returns the user' do
1099
- VCR.use_cassette 'user_management/verify_email/valid' do
1100
- verify_response = described_class.verify_email(
1101
- code: '333495',
1102
- user_id: 'user_01H968BR1R84DSPYS9QR5PM6RZ',
1103
- )
1104
-
1105
- expect(verify_response.user.id).to eq('user_01H968BR1R84DSPYS9QR5PM6RZ')
1106
- end
1107
- end
1108
- end
1109
-
1110
- context 'with invalid parameters' do
1111
- context 'when the id does not exist' do
1112
- it 'raises an error' do
1113
- VCR.use_cassette 'user_management/verify_email/invalid_magic_auth_challenge' do
1114
- expect do
1115
- described_class.verify_email(
1116
- code: '659770',
1117
- user_id: 'bad_id',
1118
- )
1119
- end.to raise_error(WorkOS::NotFoundError, /User not found/)
1120
- end
1121
- end
1122
- end
1123
-
1124
- context 'when the code is incorrect' do
1125
- it 'raises an error' do
1126
- VCR.use_cassette 'user_management/verify_email/invalid_code' do
1127
- expect do
1128
- described_class.verify_email(
1129
- code: '000000',
1130
- user_id: 'user_01H93WD0R0KWF8Q7BK02C0RPYJ',
1131
- )
1132
- end.to raise_error(WorkOS::InvalidRequestError, /Email verification code is incorrect/)
1133
- end
1134
- end
1135
- end
1136
- end
1137
- end
1138
-
1139
- describe '.get_password_reset' do
1140
- context 'with a valid id' do
1141
- it 'returns a password_reset object' do
1142
- VCR.use_cassette 'user_management/get_password_reset/valid' do
1143
- password_reset = described_class.get_password_reset(
1144
- id: 'password_reset_01HYKA8DTF8TW5YD30MF0ZXZKT',
1145
- )
1146
-
1147
- expect(password_reset.id.instance_of?(String))
1148
- expect(password_reset.instance_of?(WorkOS::PasswordReset))
1149
- end
1150
- end
1151
- end
1152
-
1153
- context 'with an invalid id' do
1154
- it 'raises an error' do
1155
- VCR.use_cassette('user_management/get_password_reset/invalid') do
1156
- expect do
1157
- WorkOS::UserManagement.get_password_reset(id: 'invalid')
1158
- end.to raise_error(WorkOS::NotFoundError, /Password Reset not found/)
1159
- end
1160
- end
1161
- end
1162
- end
1163
-
1164
- describe '.create_password_reset' do
1165
- context 'with valid payload' do
1166
- it 'creates a password_reset object' do
1167
- VCR.use_cassette 'user_management/create_password_reset/valid' do
1168
- password_reset = described_class.create_password_reset(
1169
- email: 'test@workos.com',
1170
- )
1171
-
1172
- expect(password_reset.id).to eq('password_reset_01HYKA8DTF8TW5YD30MF0ZXZKT')
1173
- expect(password_reset.email).to eq('test@workos.com')
1174
- end
1175
- end
1176
- end
1177
- end
1178
-
1179
- describe '.send_password_reset_email' do
1180
- context 'with a valid payload' do
1181
- it 'sends a password reset email' do
1182
- VCR.use_cassette 'user_management/send_password_reset_email/valid' do
1183
- response = described_class.send_password_reset_email(
1184
- email: 'lucy.lawless@example.com',
1185
- password_reset_url: 'https://example.com/reset',
1186
- )
1187
-
1188
- expect(response).to be(true)
1189
- end
1190
- end
1191
- end
1192
-
1193
- context 'with an invalid payload' do
1194
- it 'returns an error' do
1195
- VCR.use_cassette 'user_management/send_password_reset_email/invalid' do
1196
- expect do
1197
- described_class.send_password_reset_email(
1198
- email: 'foo@bar.com',
1199
- password_reset_url: '',
1200
- )
1201
- end.to raise_error(
1202
- WorkOS::UnprocessableEntityError,
1203
- /password_reset_url_string_required/,
1204
- )
1205
- end
1206
- end
1207
- end
1208
- end
1209
-
1210
- describe '.reset_password' do
1211
- context 'with a valid payload' do
1212
- it 'resets the password and returns the user' do
1213
- VCR.use_cassette 'user_management/reset_password/valid' do
1214
- user = described_class.reset_password(
1215
- token: 'eEgAgvAE0blvU1zWV3yWVAD22',
1216
- new_password: 'very_cool_new_pa$$word',
1217
- )
1218
-
1219
- expect(user.email).to eq('lucy.lawless@example.com')
1220
- end
1221
- end
1222
- end
1223
-
1224
- context 'with an invalid payload' do
1225
- it 'returns an error' do
1226
- VCR.use_cassette 'user_management/reset_password/invalid' do
1227
- expect do
1228
- described_class.reset_password(
1229
- token: 'bogus_token',
1230
- new_password: 'new_password',
1231
- )
1232
- end.to raise_error(
1233
- WorkOS::NotFoundError,
1234
- /Could not locate user with provided token/,
1235
- )
1236
- end
1237
- end
1238
- end
1239
- end
1240
-
1241
- describe '.get_organization_membership' do
1242
- context 'with a valid id' do
1243
- it 'returns a organization membership' do
1244
- VCR.use_cassette 'user_management/get_organization_membership' do
1245
- organization_membership = described_class.get_organization_membership(
1246
- id: 'om_01H5JQDV7R7ATEYZDEG0W5PRYS',
1247
- )
1248
-
1249
- expect(organization_membership.id.instance_of?(String))
1250
- expect(organization_membership.instance_of?(WorkOS::OrganizationMembership))
1251
- end
1252
- end
1253
- end
1254
-
1255
- context 'with an invalid id' do
1256
- it 'returns an error' do
1257
- expect do
1258
- described_class.get_organization_membership(
1259
- id: 'invalid_organization_membership_id',
1260
- ).to raise_error(WorkOS::APIError)
1261
- end
1262
- end
1263
- end
1264
- end
1265
-
1266
- describe '.list_organization_memberships' do
1267
- context 'with no options' do
1268
- it 'returns a list of users' do
1269
- expected_metadata = {
1270
- 'after' => nil,
1271
- 'before' => 'before-id',
1272
- }
1273
-
1274
- VCR.use_cassette 'user_management/list_organization_memberships/no_options' do
1275
- organization_memberships = described_class.list_organization_memberships
1276
-
1277
- expect(organization_memberships.data.size).to eq(2)
1278
- expect(organization_memberships.list_metadata).to eq(expected_metadata)
1279
- end
1280
- end
1281
- end
1282
-
1283
- context 'with options' do
1284
- it 'returns a list of matching users' do
1285
- request_args = [
1286
- '/user_management/organization_memberships?user_id=user_01H5JQDV7R7ATEYZDEG0W5PRYS&'\
1287
- 'order=desc&limit=5',
1288
- 'Content-Type' => 'application/json'
1289
- ]
1290
-
1291
- expected_request = Net::HTTP::Get.new(*request_args)
1292
-
1293
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
1294
- and_return(expected_request)
1295
-
1296
- VCR.use_cassette 'user_management/list_organization_memberships/with_options' do
1297
- organization_memberships = described_class.list_organization_memberships(
1298
- user_id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
1299
- order: 'desc',
1300
- limit: '5',
1301
- )
1302
-
1303
- expect(organization_memberships.data.size).to eq(1)
1304
- expect(organization_memberships.data[0].user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1305
- end
1306
- end
1307
- end
1308
-
1309
- context 'with statuses option' do
1310
- it 'returns a list of matching users' do
1311
- request_args = [
1312
- '/user_management/organization_memberships?user_id=user_01HXYSZBKQE2N3NHBKZHDP1X5X&'\
1313
- 'statuses=active&statuses=inactive&order=desc&limit=5',
1314
- 'Content-Type' => 'application/json'
1315
- ]
1316
-
1317
- expected_request = Net::HTTP::Get.new(*request_args)
1318
-
1319
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
1320
- and_return(expected_request)
1321
-
1322
- VCR.use_cassette 'user_management/list_organization_memberships/with_statuses_option' do
1323
- organization_memberships = described_class.list_organization_memberships(
1324
- user_id: 'user_01HXYSZBKQE2N3NHBKZHDP1X5X',
1325
- statuses: %w[active inactive],
1326
- order: 'desc',
1327
- limit: '5',
1328
- )
1329
-
1330
- expect(organization_memberships.data.size).to eq(1)
1331
- expect(organization_memberships.data[0].user_id).to eq('user_01HXYSZBKQE2N3NHBKZHDP1X5X')
1332
- end
1333
- end
1334
- end
1335
- end
1336
-
1337
- describe '.create_organization_membership' do
1338
- context 'with a valid payload' do
1339
- it 'creates an organization membership' do
1340
- VCR.use_cassette 'user_management/create_organization_membership/valid' do
1341
- organization_membership = described_class.create_organization_membership(
1342
- user_id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
1343
- organization_id: 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
1344
- )
1345
-
1346
- expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1347
- expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1348
- expect(organization_membership.role).to eq({ slug: 'member' })
1349
- end
1350
- end
1351
- end
1352
-
1353
- context 'with an invalid payload' do
1354
- it 'returns an error' do
1355
- VCR.use_cassette 'user_management/create_organization_membership/invalid' do
1356
- expect do
1357
- described_class.create_organization_membership(user_id: '', organization_id: '')
1358
- end.to raise_error(
1359
- WorkOS::UnprocessableEntityError,
1360
- /user_id_string_required/,
1361
- )
1362
- end
1363
- end
1364
- end
1365
-
1366
- context 'with a role slug' do
1367
- it 'creates an organization with the given role slug ' do
1368
- VCR.use_cassette 'user_management/create_organization_membership/valid' do
1369
- organization_membership = described_class.create_organization_membership(
1370
- user_id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
1371
- organization_id: 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
1372
- role_slug: 'member',
1373
- )
1374
-
1375
- expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1376
- expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1377
- expect(organization_membership.role).to eq({ slug: 'member' })
1378
- end
1379
- end
1380
- end
1381
-
1382
- context 'with role slugs' do
1383
- it 'creates an organization membership with multiple roles' do
1384
- VCR.use_cassette 'user_management/create_organization_membership/valid_multiple_roles' do
1385
- organization_membership = described_class.create_organization_membership(
1386
- user_id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
1387
- organization_id: 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
1388
- role_slugs: %w[admin member],
1389
- )
1390
-
1391
- expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1392
- expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1393
- expect(organization_membership.roles).to be_an(Array)
1394
- expect(organization_membership.roles.length).to eq(2)
1395
- end
1396
- end
1397
- end
1398
- end
1399
-
1400
- describe '.update_organization_membership' do
1401
- context 'with a valid id' do
1402
- it 'returns true' do
1403
- VCR.use_cassette('user_management/update_organization_membership/valid') do
1404
- organization_membership = WorkOS::UserManagement.update_organization_membership(
1405
- id: 'om_01H5JQDV7R7ATEYZDEG0W5PRYS',
1406
- role_slug: 'admin',
1407
- )
1408
-
1409
- expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1410
- expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1411
- expect(organization_membership.role).to eq({ slug: 'admin' })
1412
- end
1413
- end
1414
- end
1415
-
1416
- context 'with an invalid id' do
1417
- it 'raises an error' do
1418
- VCR.use_cassette('user_management/update_organization_membership/invalid') do
1419
- expect do
1420
- WorkOS::UserManagement.update_organization_membership(id: 'invalid', role_slug: 'admin')
1421
- end.to raise_error(WorkOS::NotFoundError, /Organization Membership not found/)
1422
- end
1423
- end
1424
- end
1425
-
1426
- context 'with role slugs' do
1427
- it 'updates an organization membership with multiple roles' do
1428
- VCR.use_cassette('user_management/update_organization_membership/valid_multiple_roles') do
1429
- organization_membership = WorkOS::UserManagement.update_organization_membership(
1430
- id: 'om_01H5JQDV7R7ATEYZDEG0W5PRYS',
1431
- role_slugs: %w[admin editor],
1432
- )
1433
-
1434
- expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1435
- expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1436
- expect(organization_membership.roles).to be_an(Array)
1437
- expect(organization_membership.roles.length).to eq(2)
1438
- end
1439
- end
1440
- end
1441
- end
1442
-
1443
- describe '.delete_organization_membership' do
1444
- context 'with a valid id' do
1445
- it 'returns true' do
1446
- VCR.use_cassette('user_management/delete_organization_membership/valid') do
1447
- response = WorkOS::UserManagement.delete_organization_membership(
1448
- id: 'om_01H5JQDV7R7ATEYZDEG0W5PRYS',
1449
- )
1450
-
1451
- expect(response).to be(true)
1452
- end
1453
- end
1454
- end
1455
-
1456
- context 'with an invalid id' do
1457
- it 'raises an error' do
1458
- VCR.use_cassette('user_management/delete_organization_membership/invalid') do
1459
- expect do
1460
- WorkOS::UserManagement.delete_organization_membership(id: 'invalid')
1461
- end.to raise_error(WorkOS::NotFoundError, /Organization Membership not found/)
1462
- end
1463
- end
1464
- end
1465
- end
1466
-
1467
- describe '.deactivate_organization_membership' do
1468
- context 'with a valid id' do
1469
- it 'returns a organization membership' do
1470
- VCR.use_cassette 'user_management/deactivate_organization_membership' do
1471
- organization_membership = described_class.deactivate_organization_membership(
1472
- id: 'om_01HXYT0G3H5QG9YTSHSHFZQE6D',
1473
- )
1474
-
1475
- expect(organization_membership.id.instance_of?(String))
1476
- expect(organization_membership.instance_of?(WorkOS::OrganizationMembership))
1477
- end
1478
- end
1479
- end
1480
-
1481
- context 'with an invalid id' do
1482
- it 'returns an error' do
1483
- expect do
1484
- described_class.deactivate_organization_membership(
1485
- id: 'invalid_organization_membership_id',
1486
- ).to raise_error(WorkOS::APIError)
1487
- end
1488
- end
1489
- end
1490
- end
1491
-
1492
- describe '.reactivate_organization_membership' do
1493
- context 'with a valid id' do
1494
- it 'returns a organization membership' do
1495
- VCR.use_cassette 'user_management/reactivate_organization_membership' do
1496
- organization_membership = described_class.reactivate_organization_membership(
1497
- id: 'om_01HXYT0G3H5QG9YTSHSHFZQE6D',
1498
- )
1499
-
1500
- expect(organization_membership.id.instance_of?(String))
1501
- expect(organization_membership.instance_of?(WorkOS::OrganizationMembership))
1502
- end
1503
- end
1504
- end
1505
-
1506
- context 'with an invalid id' do
1507
- it 'returns an error' do
1508
- expect do
1509
- described_class.reactivate_organization_membership(
1510
- id: 'invalid_organization_membership_id',
1511
- ).to raise_error(WorkOS::APIError)
1512
- end
1513
- end
1514
- end
1515
- end
1516
-
1517
- describe '.get_invitation' do
1518
- context 'with a valid id' do
1519
- it 'returns an invitation' do
1520
- VCR.use_cassette 'user_management/get_invitation/valid' do
1521
- invitation = described_class.get_invitation(
1522
- id: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1523
- )
1524
-
1525
- expect(invitation.id.instance_of?(String))
1526
- expect(invitation.instance_of?(WorkOS::Invitation))
1527
- end
1528
- end
1529
- end
1530
-
1531
- context 'with an invalid id' do
1532
- it 'raises an error' do
1533
- VCR.use_cassette('user_management/get_invitation/invalid') do
1534
- expect do
1535
- WorkOS::UserManagement.get_invitation(id: 'invalid')
1536
- end.to raise_error(WorkOS::NotFoundError, /Invitation not found/)
1537
- end
1538
- end
1539
- end
1540
- end
1541
-
1542
- describe '.find_invitation_by_token' do
1543
- context 'with a valid id' do
1544
- it 'returns an invitation' do
1545
- VCR.use_cassette 'user_management/find_invitation_by_token/valid' do
1546
- invitation = described_class.find_invitation_by_token(
1547
- token: 'iUV3XbYajpJlbpw1Qt3ZKlaKx',
1548
- )
1549
-
1550
- expect(invitation.id.instance_of?(String))
1551
- expect(invitation.instance_of?(WorkOS::Invitation))
1552
- end
1553
- end
1554
- end
1555
-
1556
- context 'with an invalid id' do
1557
- it 'raises an error' do
1558
- VCR.use_cassette('user_management/find_invitation_by_token/invalid') do
1559
- expect do
1560
- WorkOS::UserManagement.find_invitation_by_token(token: 'invalid')
1561
- end.to raise_error(WorkOS::NotFoundError, /Invitation not found/)
1562
- end
1563
- end
1564
- end
1565
- end
1566
-
1567
- describe '.list_invitations' do
1568
- context 'with no options' do
1569
- it 'returns invitations and metadata' do
1570
- expected_metadata = {
1571
- 'after' => nil,
1572
- 'before' => 'before_id',
1573
- }
1574
-
1575
- VCR.use_cassette 'user_management/list_invitations/with_no_options' do
1576
- invitations = described_class.list_invitations
1577
-
1578
- expect(invitations.data.size).to eq(5)
1579
- expect(invitations.list_metadata).to eq(expected_metadata)
1580
- end
1581
- end
1582
- end
1583
-
1584
- context 'with organization_id option' do
1585
- it 'forms the proper request to the API' do
1586
- request_args = [
1587
- '/user_management/invitations?organization_id=org_01H5JQDV7R7ATEYZDEG0W5PRYS&'\
1588
- 'order=desc',
1589
- 'Content-Type' => 'application/json'
1590
- ]
1591
-
1592
- expected_request = Net::HTTP::Get.new(*request_args)
1593
-
1594
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
1595
- and_return(expected_request)
1596
-
1597
- VCR.use_cassette 'user_management/list_invitations/with_organization_id' do
1598
- invitations = described_class.list_invitations(
1599
- organization_id: 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
1600
- )
1601
-
1602
- expect(invitations.data.size).to eq(1)
1603
- expect(invitations.data.first.organization_id).to eq(
1604
- 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
1605
- )
1606
- end
1607
- end
1608
- end
1609
-
1610
- context 'with limit option' do
1611
- it 'forms the proper request to the API' do
1612
- request_args = [
1613
- '/user_management/invitations?limit=2&'\
1614
- 'order=desc',
1615
- 'Content-Type' => 'application/json'
1616
- ]
1617
-
1618
- expected_request = Net::HTTP::Get.new(*request_args)
1619
-
1620
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
1621
- and_return(expected_request)
1622
-
1623
- VCR.use_cassette 'user_management/list_invitations/with_limit' do
1624
- invitations = described_class.list_invitations(
1625
- limit: 2,
1626
- )
1627
-
1628
- expect(invitations.data.size).to eq(3)
1629
- end
1630
- end
1631
- end
1632
-
1633
- context 'with before option' do
1634
- it 'forms the proper request to the API' do
1635
- request_args = [
1636
- '/user_management/invitations?before=invitation_01H5JQDV7R7ATEYZDEG0W5PRYS&'\
1637
- 'order=desc',
1638
- 'Content-Type' => 'application/json'
1639
- ]
1640
-
1641
- expected_request = Net::HTTP::Get.new(*request_args)
1642
-
1643
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
1644
- and_return(expected_request)
1645
-
1646
- VCR.use_cassette 'user_management/list_invitations/with_before' do
1647
- invitations = described_class.list_invitations(
1648
- before: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1649
- )
1650
-
1651
- expect(invitations.data.size).to eq(2)
1652
- end
1653
- end
1654
- end
1655
-
1656
- context 'with after option' do
1657
- it 'forms the proper request to the API' do
1658
- request_args = [
1659
- '/user_management/invitations?after=invitation_01H5JQDV7R7ATEYZDEG0W5PRYS&'\
1660
- 'order=desc',
1661
- 'Content-Type' => 'application/json'
1662
- ]
1663
-
1664
- expected_request = Net::HTTP::Get.new(*request_args)
1665
-
1666
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
1667
- and_return(expected_request)
1668
-
1669
- VCR.use_cassette 'user_management/list_invitations/with_after' do
1670
- invitations = described_class.list_invitations(
1671
- after: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1672
- )
1673
-
1674
- expect(invitations.data.size).to eq(2)
1675
- end
1676
- end
1677
- end
1678
- end
1679
-
1680
- describe '.send_invitation' do
1681
- context 'with valid payload' do
1682
- it 'sends an invitation' do
1683
- VCR.use_cassette 'user_management/send_invitation/valid' do
1684
- invitation = described_class.send_invitation(
1685
- email: 'test@workos.com',
1686
- )
1687
-
1688
- expect(invitation.id).to eq('invitation_01H5JQDV7R7ATEYZDEG0W5PRYS')
1689
- expect(invitation.email).to eq('test@workos.com')
1690
- end
1691
- end
1692
-
1693
- it 'only sends non-nil values in request body' do
1694
- expect(described_class).to receive(:post_request) do |options|
1695
- body = options[:body]
1696
- expect(body).to eq({ email: 'test@workos.com', organization_id: 'org_123' })
1697
- expect(body).not_to have_key(:expires_in_days)
1698
- expect(body).not_to have_key(:inviter_user_id)
1699
- expect(body).not_to have_key(:role_slug)
1700
-
1701
- double('request')
1702
- end.and_return(double('request'))
1703
-
1704
- expect(described_class).to receive(:execute_request).and_return(
1705
- double('response', body: '{"id": "test_invitation"}'),
1706
- )
1707
-
1708
- described_class.send_invitation(
1709
- email: 'test@workos.com',
1710
- organization_id: 'org_123',
1711
- )
1712
- end
1713
- end
1714
-
1715
- context 'with an invalid payload' do
1716
- it 'returns an error' do
1717
- VCR.use_cassette 'user_management/send_invitation/invalid' do
1718
- expect do
1719
- described_class.send_invitation(
1720
- email: 'invalid@workos.com',
1721
- )
1722
- end.to raise_error(
1723
- WorkOS::APIError,
1724
- /An Invitation with the email invalid@workos.com already exists/,
1725
- )
1726
- end
1727
- end
1728
- end
1729
- end
1730
-
1731
- describe '.accept_invitation' do
1732
- context 'with a valid id' do
1733
- it 'accepts invitation' do
1734
- expect(described_class).to receive(:post_request) do |options|
1735
- expect(options[:path]).to eq('/user_management/invitations/invitation_123/accept')
1736
- expect(options[:auth]).to be true
1737
-
1738
- double('request')
1739
- end.and_return(double('request'))
1740
-
1741
- response_body = {
1742
- id: 'invitation_123',
1743
- email: 'test@workos.com',
1744
- state: 'accepted',
1745
- }.to_json
1746
-
1747
- expect(described_class).to receive(:execute_request).and_return(
1748
- double('response', body: response_body),
1749
- )
1750
-
1751
- invitation = described_class.accept_invitation(
1752
- id: 'invitation_123',
1753
- )
1754
-
1755
- expect(invitation.id).to eq('invitation_123')
1756
- expect(invitation.email).to eq('test@workos.com')
1757
- expect(invitation.state).to eq('accepted')
1758
- end
1759
- end
1760
-
1761
- context 'with an invalid id' do
1762
- it 'returns an error' do
1763
- expect(described_class).to receive(:post_request) do |options|
1764
- expect(options[:path]).to eq('/user_management/invitations/invalid_id/accept')
1765
- expect(options[:auth]).to be true
1766
-
1767
- double('request')
1768
- end.and_return(double('request'))
1769
-
1770
- expect(described_class).to receive(:execute_request).and_raise(
1771
- WorkOS::NotFoundError.new(message: 'Invitation not found'),
1772
- )
1773
-
1774
- expect do
1775
- described_class.accept_invitation(id: 'invalid_id')
1776
- end.to raise_error(
1777
- WorkOS::NotFoundError,
1778
- /Invitation not found/,
1779
- )
1780
- end
1781
- end
1782
-
1783
- context 'when invitation has already been accepted' do
1784
- it 'returns an error' do
1785
- expect(described_class).to receive(:post_request) do |options|
1786
- expect(options[:path]).to eq('/user_management/invitations/invitation_123/accept')
1787
- expect(options[:auth]).to be true
1788
-
1789
- double('request')
1790
- end.and_return(double('request'))
1791
-
1792
- expect(described_class).to receive(:execute_request).and_raise(
1793
- WorkOS::InvalidRequestError.new(message: 'Invite has already been accepted'),
1794
- )
1795
-
1796
- expect do
1797
- described_class.accept_invitation(id: 'invitation_123')
1798
- end.to raise_error(
1799
- WorkOS::InvalidRequestError,
1800
- /Invite has already been accepted/,
1801
- )
1802
- end
1803
- end
1804
- end
1805
-
1806
- describe '.revoke_invitation' do
1807
- context 'with valid payload' do
1808
- it 'revokes invitation' do
1809
- VCR.use_cassette 'user_management/revoke_invitation/valid' do
1810
- invitation = described_class.revoke_invitation(
1811
- id: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1812
- )
1813
-
1814
- expect(invitation.id).to eq('invitation_01H5JQDV7R7ATEYZDEG0W5PRYS')
1815
- expect(invitation.email).to eq('test@workos.com')
1816
- end
1817
- end
1818
- end
1819
-
1820
- context 'with an invalid payload' do
1821
- it 'returns an error' do
1822
- VCR.use_cassette 'user_management/revoke_invitation/invalid' do
1823
- expect do
1824
- described_class.revoke_invitation(
1825
- id: 'invalid_id',
1826
- )
1827
- end.to raise_error(
1828
- WorkOS::NotFoundError,
1829
- /Invitation not found/,
1830
- )
1831
- end
1832
- end
1833
- end
1834
- end
1835
-
1836
- describe '.resend_invitation' do
1837
- context 'with valid payload' do
1838
- it 'resends invitation' do
1839
- VCR.use_cassette 'user_management/resend_invitation/valid' do
1840
- invitation = described_class.resend_invitation(
1841
- id: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1842
- )
1843
-
1844
- expect(invitation.id).to eq('invitation_01H5JQDV7R7ATEYZDEG0W5PRYS')
1845
- expect(invitation.email).to eq('test@workos.com')
1846
- end
1847
- end
1848
- end
1849
-
1850
- context 'with an invalid id' do
1851
- it 'returns an error' do
1852
- VCR.use_cassette 'user_management/resend_invitation/invalid' do
1853
- expect do
1854
- described_class.resend_invitation(
1855
- id: 'invalid_id',
1856
- )
1857
- end.to raise_error(
1858
- WorkOS::NotFoundError,
1859
- /Invitation not found/,
1860
- )
1861
- end
1862
- end
1863
- end
1864
-
1865
- context 'when invitation has expired' do
1866
- it 'returns an error' do
1867
- VCR.use_cassette 'user_management/resend_invitation/expired' do
1868
- expect do
1869
- described_class.resend_invitation(
1870
- id: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1871
- )
1872
- end.to raise_error(
1873
- WorkOS::InvalidRequestError,
1874
- /Invite has expired/,
1875
- )
1876
- end
1877
- end
1878
- end
1879
-
1880
- context 'when invitation has been revoked' do
1881
- it 'returns an error' do
1882
- VCR.use_cassette 'user_management/resend_invitation/revoked' do
1883
- expect do
1884
- described_class.resend_invitation(
1885
- id: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1886
- )
1887
- end.to raise_error(
1888
- WorkOS::InvalidRequestError,
1889
- /Invite has been revoked/,
1890
- )
1891
- end
1892
- end
1893
- end
1894
-
1895
- context 'when invitation has already been accepted' do
1896
- it 'returns an error' do
1897
- VCR.use_cassette 'user_management/resend_invitation/accepted' do
1898
- expect do
1899
- described_class.resend_invitation(
1900
- id: 'invitation_01H5JQDV7R7ATEYZDEG0W5PRYS',
1901
- )
1902
- end.to raise_error(
1903
- WorkOS::InvalidRequestError,
1904
- /Invite has already been accepted/,
1905
- )
1906
- end
1907
- end
1908
- end
1909
- end
1910
-
1911
- describe '.revoke_session' do
1912
- context 'with valid payload' do
1913
- it 'revokes session' do
1914
- VCR.use_cassette 'user_management/revoke_session/valid' do
1915
- result = described_class.revoke_session(
1916
- session_id: 'session_01HRX85ATNADY1GQ053AHRFFN6',
1917
- )
1918
-
1919
- expect(result).to be true
1920
- end
1921
- end
1922
- end
1923
-
1924
- context 'with a non-existant session' do
1925
- it 'returns an error' do
1926
- VCR.use_cassette 'user_management/revoke_session/not_found' do
1927
- expect do
1928
- described_class.revoke_session(
1929
- session_id: 'session_01H5JQDV7R7ATEYZDEG0W5PRYS',
1930
- )
1931
- end.to raise_error(
1932
- WorkOS::NotFoundError,
1933
- /Session not found/,
1934
- )
1935
- end
1936
- end
1937
- end
1938
- end
1939
-
1940
- describe '.list_sessions' do
1941
- context 'with a valid user_id' do
1942
- it 'returns a list of sessions' do
1943
- VCR.use_cassette('user_management/list_sessions/valid') do
1944
- result = described_class.list_sessions(
1945
- user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
1946
- )
1947
-
1948
- expect(result.data).to be_an(Array)
1949
- expect(result.data.first).to be_a(WorkOS::UserManagement::Session)
1950
- expect(result.data.first.id).to eq('session_01H96FETXGTW2S0V5V9XPSM6H44')
1951
- expect(result.data.first.status).to eq('active')
1952
- expect(result.data.first.auth_method).to eq('password')
1953
- end
1954
- end
1955
-
1956
- it 'returns sessions that can be revoked' do
1957
- VCR.use_cassette('user_management/list_sessions/valid') do
1958
- result = described_class.list_sessions(
1959
- user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
1960
- )
1961
- session = result.data.first
1962
-
1963
- expect(described_class).to receive(:post_request) do |options|
1964
- expect(options[:path]).to eq('/user_management/sessions/revoke')
1965
- expect(options[:body]).to eq({ session_id: 'session_01H96FETXGTW2S0V5V9XPSM6H44' })
1966
- expect(options[:auth]).to be true
1967
- end.and_return(double('request'))
1968
-
1969
- expect(described_class).to receive(:execute_request).and_return(
1970
- double('response', is_a?: true),
1971
- )
1972
-
1973
- expect(session.revoke).to be true
1974
- end
1975
- end
1976
- end
1977
- end
1978
-
1979
- describe '.get_logout_url' do
1980
- it 'returns a logout url for the given session ID' do
1981
- result = described_class.get_logout_url(
1982
- session_id: 'session_01HRX85ATNADY1GQ053AHRFFN6',
1983
- )
1984
-
1985
- expect(result).to eq 'https://api.workos.com/user_management/sessions/logout?session_id=session_01HRX85ATNADY1GQ053AHRFFN6'
1986
- end
1987
-
1988
- context 'when a `return_to` is given' do
1989
- it 'returns a logout url with the `return_to` query parameter' do
1990
- result = described_class.get_logout_url(
1991
- session_id: 'session_01HRX85ATNADY1GQ053AHRFFN6',
1992
- return_to: 'https://example.com/signed-out',
1993
- )
1994
-
1995
- expect(result).to eq 'https://api.workos.com/user_management/sessions/logout?session_id=session_01HRX85ATNADY1GQ053AHRFFN6&return_to=https%3A%2F%2Fexample.com%2Fsigned-out'
1996
- end
1997
- end
1998
- end
1999
- end