workos 4.1.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +37 -0
  3. data/.github/workflows/release.yml +43 -0
  4. data/.rubocop.yml +8 -1
  5. data/Gemfile.lock +22 -69
  6. data/lib/workos/audit_log_export.rb +8 -31
  7. data/lib/workos/audit_logs.rb +0 -26
  8. data/lib/workos/authentication_factor_and_challenge.rb +0 -3
  9. data/lib/workos/authentication_response.rb +3 -6
  10. data/lib/workos/challenge.rb +9 -28
  11. data/lib/workos/client.rb +0 -41
  12. data/lib/workos/configuration.rb +0 -1
  13. data/lib/workos/connection.rb +11 -35
  14. data/lib/workos/directory.rb +10 -37
  15. data/lib/workos/directory_group.rb +9 -36
  16. data/lib/workos/directory_sync.rb +0 -21
  17. data/lib/workos/directory_user.rb +17 -51
  18. data/lib/workos/errors.rb +0 -16
  19. data/lib/workos/event.rb +5 -26
  20. data/lib/workos/events.rb +0 -7
  21. data/lib/workos/factor.rb +9 -28
  22. data/lib/workos/hash_provider.rb +0 -1
  23. data/lib/workos/impersonator.rb +0 -3
  24. data/lib/workos/invitation.rb +12 -37
  25. data/lib/workos/mfa.rb +0 -42
  26. data/lib/workos/organization.rb +8 -31
  27. data/lib/workos/organization_membership.rb +8 -27
  28. data/lib/workos/organizations.rb +0 -26
  29. data/lib/workos/passwordless.rb +0 -14
  30. data/lib/workos/portal.rb +1 -13
  31. data/lib/workos/profile.rb +12 -39
  32. data/lib/workos/profile_and_token.rb +1 -4
  33. data/lib/workos/refresh_authentication_response.rb +2 -5
  34. data/lib/workos/sso.rb +1 -43
  35. data/lib/workos/types/intent.rb +16 -0
  36. data/lib/workos/types/list_struct.rb +8 -5
  37. data/lib/workos/types/passwordless_session_struct.rb +10 -9
  38. data/lib/workos/types/provider.rb +15 -0
  39. data/lib/workos/types.rb +5 -23
  40. data/lib/workos/user.rb +10 -31
  41. data/lib/workos/user_and_token.rb +1 -4
  42. data/lib/workos/user_management.rb +32 -243
  43. data/lib/workos/user_response.rb +0 -3
  44. data/lib/workos/verify_challenge.rb +4 -18
  45. data/lib/workos/version.rb +1 -2
  46. data/lib/workos/webhook.rb +5 -26
  47. data/lib/workos/webhooks.rb +1 -38
  48. data/lib/workos.rb +0 -2
  49. data/spec/lib/workos/audit_logs_spec.rb +2 -3
  50. data/spec/lib/workos/configuration_spec.rb +0 -1
  51. data/spec/lib/workos/directory_sync_spec.rb +0 -1
  52. data/spec/lib/workos/directory_user_spec.rb +0 -1
  53. data/spec/lib/workos/event_spec.rb +0 -1
  54. data/spec/lib/workos/mfa_spec.rb +0 -1
  55. data/spec/lib/workos/organizations_spec.rb +0 -1
  56. data/spec/lib/workos/passwordless_spec.rb +0 -1
  57. data/spec/lib/workos/portal_spec.rb +0 -1
  58. data/spec/lib/workos/sso_spec.rb +0 -1
  59. data/spec/lib/workos/user_management_spec.rb +0 -1
  60. data/spec/lib/workos/webhooks_spec.rb +0 -1
  61. data/spec/spec_helper.rb +0 -9
  62. data/spec/support/shared_examples/client_spec.rb +0 -1
  63. data/workos.gemspec +1 -6
  64. metadata +11 -129
  65. data/.semaphore/rubygems.yml +0 -24
  66. data/.semaphore/semaphore.yml +0 -51
  67. data/bin/tapioca +0 -29
  68. data/codecov.yml +0 -12
  69. data/devbox.json +0 -18
  70. data/devbox.lock +0 -11
  71. data/lib/workos/types/audit_log_export_struct.rb +0 -17
  72. data/lib/workos/types/challenge_struct.rb +0 -18
  73. data/lib/workos/types/connection_struct.rb +0 -20
  74. data/lib/workos/types/directory_group_struct.rb +0 -19
  75. data/lib/workos/types/directory_struct.rb +0 -19
  76. data/lib/workos/types/directory_user_struct.rb +0 -26
  77. data/lib/workos/types/event_struct.rb +0 -15
  78. data/lib/workos/types/factor_struct.rb +0 -18
  79. data/lib/workos/types/intent_enum.rb +0 -17
  80. data/lib/workos/types/invitation_struct.rb +0 -20
  81. data/lib/workos/types/magic_auth_challenge_struct.rb +0 -12
  82. data/lib/workos/types/organization_membership_struct.rb +0 -16
  83. data/lib/workos/types/organization_struct.rb +0 -17
  84. data/lib/workos/types/profile_struct.rb +0 -21
  85. data/lib/workos/types/provider_enum.rb +0 -16
  86. data/lib/workos/types/user_struct.rb +0 -18
  87. data/lib/workos/types/verify_challenge_struct.rb +0 -13
  88. data/lib/workos/types/webhook_struct.rb +0 -15
  89. data/sorbet/config +0 -2
  90. data/sorbet/rbi/gems/addressable@2.8.0.rbi +0 -290
  91. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -54
  92. data/sorbet/rbi/gems/codecov@0.2.12.rbi +0 -55
  93. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
  94. data/sorbet/rbi/gems/crack@0.4.5.rbi +0 -57
  95. data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +0 -185
  96. data/sorbet/rbi/gems/docile@1.3.5.rbi +0 -54
  97. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +0 -82
  98. data/sorbet/rbi/gems/json@2.5.1.rbi +0 -109
  99. data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -8
  100. data/sorbet/rbi/gems/parallel@1.20.1.rbi +0 -113
  101. data/sorbet/rbi/gems/parser@3.0.1.0.rbi +0 -1187
  102. data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -8
  103. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +0 -146
  104. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +0 -153
  105. data/sorbet/rbi/gems/rake@13.0.3.rbi +0 -807
  106. data/sorbet/rbi/gems/rbi@0.0.16.rbi +0 -2118
  107. data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +0 -1117
  108. data/sorbet/rbi/gems/rexml@3.2.5.rbi +0 -709
  109. data/sorbet/rbi/gems/rspec-core@3.9.3.rbi +0 -2467
  110. data/sorbet/rbi/gems/rspec-expectations@3.9.4.rbi +0 -1569
  111. data/sorbet/rbi/gems/rspec-mocks@3.9.1.rbi +0 -1493
  112. data/sorbet/rbi/gems/rspec-support@3.9.4.rbi +0 -511
  113. data/sorbet/rbi/gems/rspec@3.9.0.rbi +0 -38
  114. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +0 -1881
  115. data/sorbet/rbi/gems/rubocop@0.93.1.rbi +0 -11497
  116. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -405
  117. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +0 -89
  118. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +0 -577
  119. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.2.rbi +0 -8
  120. data/sorbet/rbi/gems/spoom@1.1.15.rbi +0 -1549
  121. data/sorbet/rbi/gems/tapioca@0.7.3.rbi +0 -1718
  122. data/sorbet/rbi/gems/thor@1.2.1.rbi +0 -844
  123. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +0 -22
  124. data/sorbet/rbi/gems/unparser@0.6.2.rbi +0 -8
  125. data/sorbet/rbi/gems/vcr@5.0.0.rbi +0 -699
  126. data/sorbet/rbi/gems/webmock@3.12.2.rbi +0 -662
  127. data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +0 -268
  128. data/sorbet/rbi/gems/yard@0.9.26.rbi +0 -4048
  129. data/sorbet/tapioca/config.yml +0 -13
  130. data/sorbet/tapioca/require.rb +0 -4
data/lib/workos/user.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The User class provides a lightweight wrapper around a WorkOS User
@@ -7,23 +6,21 @@ module WorkOS
7
6
  # and is instantiated internally but exposed.
8
7
  class User
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :email, :first_name, :last_name, :email_verified,
13
11
  :profile_picture_url, :created_at, :updated_at
14
12
 
15
- sig { params(json: String).void }
16
13
  def initialize(json)
17
- raw = parse_json(json)
18
-
19
- @id = T.let(raw.id, String)
20
- @email = T.let(raw.email, String)
21
- @first_name = raw.first_name
22
- @last_name = raw.last_name
23
- @email_verified = raw.email_verified
24
- @profile_picture_url = raw.profile_picture_url
25
- @created_at = T.let(raw.created_at, String)
26
- @updated_at = T.let(raw.updated_at, String)
14
+ hash = JSON.parse(json, symbolize_names: true)
15
+
16
+ @id = hash[:id]
17
+ @email = hash[:email]
18
+ @first_name = hash[:first_name]
19
+ @last_name = hash[:last_name]
20
+ @email_verified = hash[:email_verified]
21
+ @profile_picture_url = hash[:profile_picture_url]
22
+ @created_at = hash[:created_at]
23
+ @updated_at = hash[:updated_at]
27
24
  end
28
25
 
29
26
  def to_json(*)
@@ -38,23 +35,5 @@ module WorkOS
38
35
  updated_at: updated_at,
39
36
  }
40
37
  end
41
-
42
- private
43
-
44
- sig { params(json_string: String).returns(WorkOS::Types::UserStruct) }
45
- def parse_json(json_string)
46
- hash = JSON.parse(json_string, symbolize_names: true)
47
-
48
- WorkOS::Types::UserStruct.new(
49
- id: hash[:id],
50
- email: hash[:email],
51
- first_name: hash[:first_name],
52
- last_name: hash[:last_name],
53
- email_verified: hash[:email_verified],
54
- profile_picture_url: hash[:profile_picture_url],
55
- created_at: hash[:created_at],
56
- updated_at: hash[:updated_at],
57
- )
58
- end
59
38
  end
60
39
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The UserAndToken class represents a User and a corresponding Token. This
@@ -7,15 +6,13 @@ module WorkOS
7
6
  # internally but exposed.
8
7
  class UserAndToken
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :token, :user
13
11
 
14
- sig { params(user_and_token_json: String).void }
15
12
  def initialize(user_and_token_json)
16
13
  json = JSON.parse(user_and_token_json, symbolize_names: true)
17
14
 
18
- @token = T.let(json[:token], String)
15
+ @token = json[:token]
19
16
  @user = WorkOS::User.new(json[:user].to_json)
20
17
  end
21
18
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  require 'net/http'
5
4
  require 'uri'
@@ -11,32 +10,31 @@ module WorkOS
11
10
  # rubocop:disable Metrics/ModuleLength
12
11
  module UserManagement
13
12
  module Types
14
- # The ProviderEnum is type-safe declaration of a
13
+ # The ProviderEnum is a declaration of a
15
14
  # fixed set of values for User Management Providers.
16
- class Provider < T::Enum
17
- enums do
18
- GitHub = new('GitHubOAuth')
19
- Google = new('GoogleOAuth')
20
- Microsoft = new('MicrosoftOAuth')
21
- AuthKit = new('authkit')
22
- end
15
+ class Provider
16
+ GitHub = 'GitHubOAuth'
17
+ Google = 'GoogleOAuth'
18
+ Microsoft = 'MicrosoftOAuth'
19
+ AuthKit = 'authkit'
20
+
21
+ ALL = [GitHub, Google, Microsoft, AuthKit].freeze
23
22
  end
24
23
 
25
- # The AuthFactorType is type-safe declaration of a
24
+ # The AuthFactorType is a declaration of a
26
25
  # fixed set of factor values to enroll
27
- class AuthFactorType < T::Enum
28
- enums do
29
- Totp = new('totp')
30
- end
26
+ class AuthFactorType
27
+ Totp = 'totp'
28
+
29
+ ALL = [Totp].freeze
31
30
  end
32
31
  end
33
32
 
34
33
  class << self
35
- extend T::Sig
36
34
  include Client
37
35
 
38
- PROVIDERS = WorkOS::UserManagement::Types::Provider.values.map(&:serialize).freeze
39
- AUTH_FACTOR_TYPES = WorkOS::UserManagement::Types::AuthFactorType.values.map(&:serialize).freeze
36
+ PROVIDERS = WorkOS::UserManagement::Types::Provider::ALL
37
+ AUTH_FACTOR_TYPES = WorkOS::UserManagement::Types::AuthFactorType::ALL
40
38
 
41
39
  # Generate an OAuth 2.0 authorization URL that automatically directs a user
42
40
  # to their Identity Provider.
@@ -74,18 +72,6 @@ module WorkOS
74
72
  #
75
73
  # @return [String]
76
74
  # rubocop:disable Metrics/ParameterLists
77
- sig do
78
- params(
79
- redirect_uri: String,
80
- client_id: T.nilable(String),
81
- domain_hint: T.nilable(String),
82
- login_hint: T.nilable(String),
83
- provider: T.nilable(String),
84
- connection_id: T.nilable(String),
85
- organization_id: T.nilable(String),
86
- state: T.nilable(String),
87
- ).returns(String)
88
- end
89
75
  def authorization_url(
90
76
  redirect_uri:,
91
77
  client_id: nil,
@@ -124,9 +110,6 @@ module WorkOS
124
110
  # @param [String] id The unique ID of the User.
125
111
  #
126
112
  # @return WorkOS::User
127
- sig do
128
- params(id: String).returns(WorkOS::User)
129
- end
130
113
  def get_user(id:)
131
114
  response = execute_request(
132
115
  request: get_request(
@@ -151,11 +134,6 @@ module WorkOS
151
134
  # before a provided User ID.
152
135
  #
153
136
  # @return [WorkOS::User]
154
- sig do
155
- params(
156
- options: T::Hash[Symbol, String],
157
- ).returns(WorkOS::Types::ListStruct)
158
- end
159
137
  def list_users(options = {})
160
138
  options[:order] ||= 'desc'
161
139
  response = execute_request(
@@ -185,18 +163,20 @@ module WorkOS
185
163
  # @param [String] first_name The user's first name.
186
164
  # @param [String] last_name The user's last name.
187
165
  # @param [Boolean] email_verified Whether the user's email address was previously verified.
166
+ # @param [String] password_hash The user's hashed password.
167
+ # @option [String] password_hash_type The algorithm originally used to hash the password.
188
168
  #
189
169
  # @return [WorkOS::User]
190
- sig do
191
- params(
192
- email: String,
193
- password: T.nilable(String),
194
- first_name: T.nilable(String),
195
- last_name: T.nilable(String),
196
- email_verified: T.nilable(T::Boolean),
197
- ).returns(WorkOS::User)
198
- end
199
- def create_user(email:, password: nil, first_name: nil, last_name: nil, email_verified: nil)
170
+ # rubocop:disable Metrics/ParameterLists
171
+ def create_user(
172
+ email:,
173
+ password: nil,
174
+ first_name: nil,
175
+ last_name: nil,
176
+ email_verified: nil,
177
+ password_hash: nil,
178
+ password_hash_type: nil
179
+ )
200
180
  request = post_request(
201
181
  path: '/user_management/users',
202
182
  body: {
@@ -205,6 +185,8 @@ module WorkOS
205
185
  first_name: first_name,
206
186
  last_name: last_name,
207
187
  email_verified: email_verified,
188
+ password_hash: password_hash,
189
+ password_hash_type: password_hash_type,
208
190
  },
209
191
  auth: true,
210
192
  )
@@ -226,18 +208,6 @@ module WorkOS
226
208
  # Valid values are bcrypt.
227
209
  #
228
210
  # @return [WorkOS::User]
229
- # rubocop:disable Metrics/ParameterLists
230
- sig do
231
- params(
232
- id: String,
233
- first_name: T.nilable(String),
234
- last_name: T.nilable(String),
235
- email_verified: T.nilable(T::Boolean),
236
- password: T.nilable(String),
237
- password_hash: T.nilable(String),
238
- password_hash_type: T.nilable(String),
239
- ).returns(WorkOS::User)
240
- end
241
211
  def update_user(
242
212
  id:,
243
213
  first_name: nil,
@@ -271,11 +241,6 @@ module WorkOS
271
241
  # @param [String] id The unique ID of the User.
272
242
  #
273
243
  # @return [Bool] - returns `true` if successful
274
- sig do
275
- params(
276
- id: String,
277
- ).returns(T::Boolean)
278
- end
279
244
  def delete_user(id:)
280
245
  response = execute_request(
281
246
  request: delete_request(
@@ -296,16 +261,6 @@ module WorkOS
296
261
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
297
262
  #
298
263
  # @return WorkOS::AuthenticationResponse
299
-
300
- sig do
301
- params(
302
- email: String,
303
- password: String,
304
- client_id: String,
305
- ip_address: T.nilable(String),
306
- user_agent: T.nilable(String),
307
- ).returns(WorkOS::AuthenticationResponse)
308
- end
309
264
  def authenticate_with_password(email:, password:, client_id:, ip_address: nil, user_agent: nil)
310
265
  response = execute_request(
311
266
  request: post_request(
@@ -334,15 +289,6 @@ module WorkOS
334
289
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
335
290
  #
336
291
  # @return WorkOS::AuthenticationResponse
337
-
338
- sig do
339
- params(
340
- code: String,
341
- client_id: String,
342
- ip_address: T.nilable(String),
343
- user_agent: T.nilable(String),
344
- ).returns(WorkOS::AuthenticationResponse)
345
- end
346
292
  def authenticate_with_code(
347
293
  code:,
348
294
  client_id:,
@@ -374,15 +320,6 @@ module WorkOS
374
320
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
375
321
  #
376
322
  # @return WorkOS::RefreshAuthenticationResponse
377
-
378
- sig do
379
- params(
380
- refresh_token: String,
381
- client_id: String,
382
- ip_address: T.nilable(String),
383
- user_agent: T.nilable(String),
384
- ).returns(WorkOS::RefreshAuthenticationResponse)
385
- end
386
323
  def authenticate_with_refresh_token(
387
324
  refresh_token:,
388
325
  client_id:,
@@ -417,17 +354,6 @@ module WorkOS
417
354
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
418
355
  #
419
356
  # @return WorkOS::AuthenticationResponse
420
-
421
- sig do
422
- params(
423
- code: String,
424
- email: String,
425
- client_id: String,
426
- ip_address: T.nilable(String),
427
- user_agent: T.nilable(String),
428
- link_authorization_code: T.nilable(String),
429
- ).returns(WorkOS::AuthenticationResponse)
430
- end
431
357
  def authenticate_with_magic_auth(
432
358
  code:,
433
359
  email:,
@@ -455,7 +381,6 @@ module WorkOS
455
381
  WorkOS::AuthenticationResponse.new(response.body)
456
382
  end
457
383
 
458
-
459
384
  # Authenticate a user into an organization they are a member of.
460
385
  #
461
386
  # @param [String] client_id The WorkOS client ID for the environment.
@@ -465,15 +390,6 @@ module WorkOS
465
390
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
466
391
  #
467
392
  # @return WorkOS::AuthenticationResponse
468
- sig do
469
- params(
470
- client_id: String,
471
- organization_id: String,
472
- pending_authentication_token: String,
473
- ip_address: T.nilable(String),
474
- user_agent: T.nilable(String),
475
- ).returns(WorkOS::AuthenticationResponse)
476
- end
477
393
  def authenticate_with_organization_selection(
478
394
  client_id:,
479
395
  organization_id:,
@@ -511,17 +427,6 @@ module WorkOS
511
427
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
512
428
  #
513
429
  # @return WorkOS::AuthenticationResponse
514
-
515
- sig do
516
- params(
517
- code: String,
518
- client_id: String,
519
- pending_authentication_token: String,
520
- authentication_challenge_id: String,
521
- ip_address: T.nilable(String),
522
- user_agent: T.nilable(String),
523
- ).returns(WorkOS::AuthenticationResponse)
524
- end
525
430
  def authenticate_with_totp(
526
431
  code:,
527
432
  client_id:,
@@ -559,16 +464,6 @@ module WorkOS
559
464
  # @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
560
465
  #
561
466
  # @return WorkOS::AuthenticationResponse
562
-
563
- sig do
564
- params(
565
- code: String,
566
- client_id: String,
567
- pending_authentication_token: String,
568
- ip_address: T.nilable(String),
569
- user_agent: T.nilable(String),
570
- ).returns(WorkOS::AuthenticationResponse)
571
- end
572
467
  def authenticate_with_email_verification(
573
468
  code:,
574
469
  client_id:,
@@ -602,11 +497,6 @@ module WorkOS
602
497
  # claim of the access token
603
498
  #
604
499
  # @return String
605
- sig do
606
- params(
607
- session_id: String,
608
- ).returns(String)
609
- end
610
500
  def get_logout_url(session_id:)
611
501
  URI::HTTPS.build(
612
502
  host: WorkOS.config.api_hostname,
@@ -619,11 +509,6 @@ module WorkOS
619
509
  #
620
510
  # @param [String] session_id The session ID can be found in the `sid`
621
511
  # claim of the access token
622
- sig do
623
- params(
624
- session_id: String,
625
- ).void
626
- end
627
512
  def revoke_session(session_id:)
628
513
  execute_request(
629
514
  request: post_request(
@@ -642,11 +527,6 @@ module WorkOS
642
527
  # @param [String] client_id The WorkOS client ID for the environment
643
528
  #
644
529
  # @return String
645
- sig do
646
- params(
647
- client_id: String,
648
- ).returns(String)
649
- end
650
530
  def get_jwks_url(client_id)
651
531
  URI::HTTPS.build(
652
532
  host: WorkOS.config.api_hostname,
@@ -659,11 +539,6 @@ module WorkOS
659
539
  # @param [String] email The email address the one-time code will be sent to.
660
540
  #
661
541
  # @return Boolean
662
- sig do
663
- params(
664
- email: String,
665
- ).returns(T::Boolean)
666
- end
667
542
  def send_magic_auth_code(email:)
668
543
  response = execute_request(
669
544
  request: post_request(
@@ -687,14 +562,6 @@ module WorkOS
687
562
  # @param [String] totp_user For totp factors. Used as the account name in authenticator apps.
688
563
  #
689
564
  # @return WorkOS::AuthenticationFactorAndChallenge
690
- sig do
691
- params(
692
- user_id: String,
693
- type: String,
694
- totp_issuer: T.nilable(String),
695
- totp_user: T.nilable(String),
696
- ).returns(WorkOS::AuthenticationFactorAndChallenge)
697
- end
698
565
  def enroll_auth_factor(user_id:, type:, totp_issuer: nil, totp_user: nil)
699
566
  validate_auth_factor_type(
700
567
  type: type,
@@ -720,11 +587,6 @@ module WorkOS
720
587
  # @param [String] user_id The id for the user.
721
588
  #
722
589
  # @return WorkOS::ListStruct
723
- sig do
724
- params(
725
- user_id: String,
726
- ).returns(WorkOS::Types::ListStruct)
727
- end
728
590
  def list_auth_factors(user_id:)
729
591
  response = execute_request(
730
592
  request: get_request(
@@ -750,11 +612,6 @@ module WorkOS
750
612
  # @param [String] user_id The unique ID of the User whose email address will be verified.
751
613
  #
752
614
  # @return WorkOS::UserResponse
753
- sig do
754
- params(
755
- user_id: String,
756
- ).returns(WorkOS::UserResponse)
757
- end
758
615
  def send_verification_email(user_id:)
759
616
  response = execute_request(
760
617
  request: post_request(
@@ -772,12 +629,6 @@ module WorkOS
772
629
  # @param [String] code The one-time code emailed to the user.
773
630
  #
774
631
  # @return WorkOS::UserResponse
775
- sig do
776
- params(
777
- user_id: String,
778
- code: String,
779
- ).returns(WorkOS::UserResponse)
780
- end
781
632
  def verify_email(user_id:, code:)
782
633
  response = execute_request(
783
634
  request: post_request(
@@ -798,12 +649,6 @@ module WorkOS
798
649
  # @param [String] password_reset_url The URL that will be linked to in the email.
799
650
  #
800
651
  # @return [Bool] - returns `true` if successful
801
- sig do
802
- params(
803
- email: String,
804
- password_reset_url: String,
805
- ).returns(T::Boolean)
806
- end
807
652
  def send_password_reset_email(email:, password_reset_url:)
808
653
  request = post_request(
809
654
  path: '/user_management/password_reset/send',
@@ -825,12 +670,6 @@ module WorkOS
825
670
  # @param [String] new_password The new password to set for the user.
826
671
  #
827
672
  # @return WorkOS::User
828
- sig do
829
- params(
830
- token: String,
831
- new_password: String,
832
- ).returns(WorkOS::User)
833
- end
834
673
  def reset_password(token:, new_password:)
835
674
  response = execute_request(
836
675
  request: post_request(
@@ -851,9 +690,6 @@ module WorkOS
851
690
  # @param [String] id The unique ID of the Organization Membership.
852
691
  #
853
692
  # @return WorkOS::OrganizationMembership
854
- sig do
855
- params(id: String).returns(WorkOS::OrganizationMembership)
856
- end
857
693
  def get_organization_membership(id:)
858
694
  response = execute_request(
859
695
  request: get_request(
@@ -878,11 +714,6 @@ module WorkOS
878
714
  # before a provided User ID.
879
715
  #
880
716
  # @return [WorkOS::OrganizationMembership]
881
- sig do
882
- params(
883
- options: T::Hash[Symbol, String],
884
- ).returns(WorkOS::Types::ListStruct)
885
- end
886
717
  def list_organization_memberships(options = {})
887
718
  options[:order] ||= 'desc'
888
719
  response = execute_request(
@@ -911,12 +742,6 @@ module WorkOS
911
742
  # @param [String] organization_id The ID of the Organization to which the user belongs to.
912
743
  #
913
744
  # @return [WorkOS::OrganizationMembership]
914
- sig do
915
- params(
916
- user_id: String,
917
- organization_id: String,
918
- ).returns(WorkOS::OrganizationMembership)
919
- end
920
745
  def create_organization_membership(user_id:, organization_id:)
921
746
  request = post_request(
922
747
  path: '/user_management/organization_memberships',
@@ -937,11 +762,6 @@ module WorkOS
937
762
  # @param [String] id The unique ID of the Organization Membership.
938
763
  #
939
764
  # @return [Bool] - returns `true` if successful
940
- sig do
941
- params(
942
- id: String,
943
- ).returns(T::Boolean)
944
- end
945
765
  def delete_organization_membership(id:)
946
766
  response = execute_request(
947
767
  request: delete_request(
@@ -958,9 +778,6 @@ module WorkOS
958
778
  # @param [String] id The unique ID of the Invitation.
959
779
  #
960
780
  # @return WorkOS::Invitation
961
- sig do
962
- params(id: String).returns(WorkOS::Invitation)
963
- end
964
781
  def get_invitation(id:)
965
782
  response = execute_request(
966
783
  request: get_request(
@@ -985,11 +802,6 @@ module WorkOS
985
802
  # before a provided User ID.
986
803
  #
987
804
  # @return [WorkOS::Invitation]
988
- sig do
989
- params(
990
- options: T::Hash[Symbol, String],
991
- ).returns(WorkOS::Types::ListStruct)
992
- end
993
805
  def list_invitations(options = {})
994
806
  options[:order] ||= 'desc'
995
807
  response = execute_request(
@@ -1019,17 +831,10 @@ module WorkOS
1019
831
  # @param [Integer] expires_in_days The number of days the invitations will be valid for.
1020
832
  # Must be between 1 and 30, defaults to 7 if not specified.
1021
833
  # @param [String] inviter_user_id The ID of the User sending the invitation.
834
+ # @param [String] role_slug The slug of the role to assign to the user upon invitation.
1022
835
  #
1023
836
  # @return WorkOS::Invitation
1024
- sig do
1025
- params(
1026
- email: String,
1027
- organization_id: T.nilable(String),
1028
- expires_in_days: T.nilable(Integer),
1029
- inviter_user_id: T.nilable(String),
1030
- ).returns(WorkOS::Invitation)
1031
- end
1032
- def send_invitation(email:, organization_id: nil, expires_in_days: nil, inviter_user_id: nil)
837
+ def send_invitation(email:, organization_id: nil, expires_in_days: nil, inviter_user_id: nil, role_slug: nil)
1033
838
  response = execute_request(
1034
839
  request: post_request(
1035
840
  path: '/user_management/invitations',
@@ -1038,6 +843,7 @@ module WorkOS
1038
843
  organization_id: organization_id,
1039
844
  expires_in_days: expires_in_days,
1040
845
  inviter_user_id: inviter_user_id,
846
+ role_slug: role_slug,
1041
847
  },
1042
848
  auth: true,
1043
849
  ),
@@ -1051,9 +857,6 @@ module WorkOS
1051
857
  # @param [String] id The unique ID of the Invitation.
1052
858
  #
1053
859
  # @return WorkOS::Invitation
1054
- sig do
1055
- params(id: String).returns(WorkOS::Invitation)
1056
- end
1057
860
  def revoke_invitation(id:)
1058
861
  request = post_request(
1059
862
  path: "/user_management/invitations/#{id}/revoke",
@@ -1067,14 +870,6 @@ module WorkOS
1067
870
 
1068
871
  private
1069
872
 
1070
- sig do
1071
- params(
1072
- provider: T.nilable(String),
1073
- connection_id: T.nilable(String),
1074
- organization_id: T.nilable(String),
1075
- ).void
1076
- end
1077
-
1078
873
  def validate_authorization_url_arguments(
1079
874
  provider:,
1080
875
  connection_id:,
@@ -1091,12 +886,6 @@ module WorkOS
1091
886
  " `provider` must be in #{PROVIDERS}"
1092
887
  end
1093
888
 
1094
- sig do
1095
- params(
1096
- type: String,
1097
- ).void
1098
- end
1099
-
1100
889
  def validate_auth_factor_type(
1101
890
  type:
1102
891
  )
@@ -1,16 +1,13 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The UserResponse class represents a User as well as an corresponding
6
5
  # response data that can later be appended on.
7
6
  class UserResponse
8
7
  include HashProvider
9
- extend T::Sig
10
8
 
11
9
  attr_accessor :user
12
10
 
13
- sig { params(user_response_json: String).void }
14
11
  def initialize(user_response_json)
15
12
  json = JSON.parse(user_response_json, symbolize_names: true)
16
13
  @user = WorkOS::User.new(json[:user].to_json)
@@ -1,20 +1,18 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  module WorkOS
5
4
  # The VerifyChallenge class provides a lightweight wrapper around
6
5
  # a WorkOS Authentication Challenge resource.
7
6
  class VerifyChallenge
8
7
  include HashProvider
9
- extend T::Sig
10
8
 
11
9
  attr_accessor :challenge, :valid
12
10
 
13
- sig { params(json: String).void }
14
11
  def initialize(json)
15
- raw = parse_json(json)
16
- @challenge = T.let(raw.challenge, Hash)
17
- @valid = raw.valid
12
+ hash = JSON.parse(json, symbolize_names: true)
13
+
14
+ @challenge = hash[:challenge]
15
+ @valid = hash[:valid]
18
16
  end
19
17
 
20
18
  def to_json(*)
@@ -23,17 +21,5 @@ module WorkOS
23
21
  valid: valid,
24
22
  }
25
23
  end
26
-
27
- private
28
-
29
- sig { params(json_string: String).returns(WorkOS::Types::VerifyChallengeStruct) }
30
- def parse_json(json_string)
31
- hash = JSON.parse(json_string, symbolize_names: true)
32
-
33
- WorkOS::Types::VerifyChallengeStruct.new(
34
- challenge: hash[:challenge],
35
- valid: hash[:valid],
36
- )
37
- end
38
24
  end
39
25
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # typed: strong
3
2
 
4
3
  module WorkOS
5
- VERSION = '4.1.0'
4
+ VERSION = '4.2.0'
6
5
  end