workos 4.7.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a8eee76f744e675549099b150414fde6c8fb299bd40efd35f4765f4491a7896
4
- data.tar.gz: de96239fdd72faf0e772146a7532b1e9a948f001c43e217d8af7636a75c2aa43
3
+ metadata.gz: 7d59f479bcadc439580843b8c8a608b41e4c0183d657241955ed3cfbc0f75a38
4
+ data.tar.gz: 48209d43a10edf6d5afa7b4ed5d92c69ee400afb660d23152706b46970602dcc
5
5
  SHA512:
6
- metadata.gz: abc6d1b314105f5fb113e178015376d3ea607970ebb7d28cd1cdea8b914d558803504bdc420148aae0649fbcf997ee6cecf3602732b76fe356447e87fa5121a8
7
- data.tar.gz: 36d55ffc100b13b92a172002fc921ffd980399c395b2f7bffea9d266eb9c9f01db4439b16dbb10371bb08f6d23b4e6f101c5b92559754be29b03bbc16e2b2f93
6
+ metadata.gz: 4457fcc8b132f5c7229d8ac5a480b0a3b86de5c1f5a8f28b688cca1e228a1d745fb906495708cf1466cc3a97aaead69fcb970f5fbffd457cdb8cf474ae72eda9
7
+ data.tar.gz: 778cebe2ed866d97858822ec755de7ebe105203450e1cc1de8858b863c1af21788582c74d86f249ea2c5561d5c330c669540d970e2769fadbed8f997e223daba
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- workos (4.7.0)
4
+ workos (5.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/workos/client.rb CHANGED
@@ -86,7 +86,7 @@ module WorkOS
86
86
  ].join('; ')
87
87
  end
88
88
 
89
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
89
+ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity:
90
90
  def handle_error_response(response:)
91
91
  http_status = response.code.to_i
92
92
  json = JSON.parse(response.body)
@@ -99,6 +99,9 @@ module WorkOS
99
99
  request_id: response['x-request-id'],
100
100
  code: json['code'],
101
101
  errors: json['errors'],
102
+ error: json['error'],
103
+ error_description: json['error_description'],
104
+ data: json,
102
105
  )
103
106
  when 401
104
107
  raise AuthenticationError.new(
@@ -107,7 +110,7 @@ module WorkOS
107
110
  request_id: response['x-request-id'],
108
111
  )
109
112
  when 404
110
- raise APIError.new(
113
+ raise NotFoundError.new(
111
114
  message: json['message'],
112
115
  http_status: http_status,
113
116
  request_id: response['x-request-id'],
@@ -118,12 +121,21 @@ module WorkOS
118
121
  errors = extract_error(json['errors']) if json['errors']
119
122
  message += " (#{errors})" if errors
120
123
 
121
- raise InvalidRequestError.new(
124
+ raise UnprocessableEntityError.new(
122
125
  message: message,
123
126
  http_status: http_status,
124
127
  request_id: response['x-request-id'],
128
+ error: json['error'],
129
+ errors: errors,
125
130
  code: code,
126
131
  )
132
+ when 429
133
+ raise RateLimitExceededError.new(
134
+ message: json['message'],
135
+ http_status: http_status,
136
+ request_id: response['x-request-id'],
137
+ retry_after: response['Retry-After'],
138
+ )
127
139
  else
128
140
  raise APIError.new(
129
141
  message: json['message'],
@@ -132,7 +144,7 @@ module WorkOS
132
144
  )
133
145
  end
134
146
  end
135
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
147
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity:
136
148
 
137
149
  private
138
150
 
@@ -15,8 +15,6 @@ module WorkOS
15
15
  # Retrieve directories.
16
16
  #
17
17
  # @param [Hash] options An options hash
18
- # @option options [String] domain The domain of the directory to be
19
- # retrieved.
20
18
  # @option options [String] search A search term for direcory names.
21
19
  # @option options [String] limit Maximum number of records to return.
22
20
  # @option options [String] order The order in which to paginate records
data/lib/workos/errors.rb CHANGED
@@ -7,6 +7,10 @@ module WorkOS
7
7
  attr_reader :request_id
8
8
  attr_reader :code
9
9
  attr_reader :errors
10
+ attr_reader :error
11
+ attr_reader :error_description
12
+ attr_reader :data
13
+ attr_reader :retry_after
10
14
 
11
15
  # rubocop:disable Metrics/ParameterLists
12
16
  def initialize(
@@ -16,7 +20,9 @@ module WorkOS
16
20
  http_status: nil,
17
21
  request_id: nil,
18
22
  code: nil,
19
- errors: nil
23
+ errors: nil,
24
+ data: nil,
25
+ retry_after: nil
20
26
  )
21
27
  @message = message
22
28
  @error = error
@@ -25,6 +31,8 @@ module WorkOS
25
31
  @request_id = request_id
26
32
  @code = code
27
33
  @errors = errors
34
+ @data = data
35
+ @retry_after = retry_after
28
36
  end
29
37
  # rubocop:enable Metrics/ParameterLists
30
38
 
@@ -62,4 +70,13 @@ module WorkOS
62
70
 
63
71
  # TimeoutError is raised when the HTTP request to the API times out
64
72
  class TimeoutError < WorkOSError; end
73
+
74
+ # RateLimitExceededError is raised when the rate limit for the API has been hit
75
+ class RateLimitExceededError < WorkOSError; end
76
+
77
+ # NotFoundError is raised when a resource is not found
78
+ class NotFoundError < WorkOSError; end
79
+
80
+ # UnprocessableEntityError is raised when a request is made that cannot be processed
81
+ class UnprocessableEntityError < WorkOSError; end
65
82
  end
data/lib/workos/events.rb CHANGED
@@ -22,6 +22,8 @@ module WorkOS
22
22
  #
23
23
  # @return [Hash]
24
24
  def list_events(options = {})
25
+ raise ArgumentError, 'Events parameter is required.' if options[:events].nil?
26
+
25
27
  response = execute_request(
26
28
  request: get_request(
27
29
  path: '/events',
@@ -603,9 +603,11 @@ module WorkOS
603
603
  # @param [String] totp_issuer For totp factors. Typically your application
604
604
  # or company name, this helps users distinguish between factors in authenticator apps.
605
605
  # @param [String] totp_user For totp factors. Used as the account name in authenticator apps.
606
+ # @param [String] totp_secret For totp factors. The Base32 encdoded secret key for the
607
+ # factor. Generated if not provided. (Optional)
606
608
  #
607
609
  # @return WorkOS::AuthenticationFactorAndChallenge
608
- def enroll_auth_factor(user_id:, type:, totp_issuer: nil, totp_user: nil)
610
+ def enroll_auth_factor(user_id:, type:, totp_issuer: nil, totp_user: nil, totp_secret: nil)
609
611
  validate_auth_factor_type(
610
612
  type: type,
611
613
  )
@@ -617,6 +619,7 @@ module WorkOS
617
619
  type: type,
618
620
  totp_issuer: totp_issuer,
619
621
  totp_user: totp_user,
622
+ totp_secret: totp_secret,
620
623
  },
621
624
  auth: true,
622
625
  ),
@@ -919,6 +922,22 @@ module WorkOS
919
922
  WorkOS::Invitation.new(response.body)
920
923
  end
921
924
 
925
+ # Finds an Invitation by Token
926
+ #
927
+ # @param [String] token The token of the Invitation.
928
+ #
929
+ # @return WorkOS::Invitation
930
+ def find_invitation_by_token(token:)
931
+ response = execute_request(
932
+ request: get_request(
933
+ path: "/user_management/invitations/by_token/#{token}",
934
+ auth: true,
935
+ ),
936
+ )
937
+
938
+ WorkOS::Invitation.new(response.body)
939
+ end
940
+
922
941
  # Retrieve a list of invitations.
923
942
  #
924
943
  # @param [Hash] options
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WorkOS
4
- VERSION = '4.7.0'
4
+ VERSION = '5.0.0'
5
5
  end
data/lib/workos.rb CHANGED
@@ -87,4 +87,7 @@ module WorkOS
87
87
  autoload :InvalidRequestError, 'workos/errors'
88
88
  autoload :SignatureVerificationError, 'workos/errors'
89
89
  autoload :TimeoutError, 'workos/errors'
90
+ autoload :NotFoundError, 'workos/errors'
91
+ autoload :UnprocessableEntityError, 'workos/errors'
92
+ autoload :RateLimitExceededError, 'workos/errors'
90
93
  end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Style/MultilineBlockChain
4
+ describe WorkOS::Client do
5
+ describe '.client' do
6
+ it 'returns a 400 error with appropriate fields' do
7
+ VCR.use_cassette('user_management/authenticate_with_code/invalid') do
8
+ expect do
9
+ WorkOS::UserManagement.authenticate_with_code(
10
+ code: 'invalid',
11
+ client_id: 'client_123',
12
+ ip_address: '200.240.210.16',
13
+ user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
14
+ )
15
+ end.to raise_error do |error|
16
+ expect(error).to be_a(WorkOS::InvalidRequestError)
17
+ expect(error.error).not_to be_nil
18
+ expect(error.error_description).not_to be_nil
19
+ expect(error.data).not_to be_nil
20
+ end
21
+ end
22
+ end
23
+
24
+ it 'returns a 401 error with appropriate fields' do
25
+ VCR.use_cassette('base/execute_request_unauthenticated') do
26
+ expect do
27
+ WorkOS::AuditLogs.create_event(
28
+ organization: 'org_123',
29
+ event: {},
30
+ )
31
+ end.to raise_error do |error|
32
+ expect(error).to be_a(WorkOS::AuthenticationError)
33
+ expect(error.message).not_to be_nil
34
+ end
35
+ end
36
+ end
37
+
38
+ it 'returns a 404 error with appropriate fields' do
39
+ VCR.use_cassette('user_management/get_email_verification/invalid') do
40
+ expect do
41
+ WorkOS::UserManagement.get_email_verification(
42
+ id: 'invalid',
43
+ )
44
+ end.to raise_error do |error|
45
+ expect(error).to be_a(WorkOS::NotFoundError)
46
+ expect(error.message).not_to be_nil
47
+ end
48
+ end
49
+ end
50
+
51
+ it 'returns a 422 error with appropriate fields' do
52
+ VCR.use_cassette('user_management/create_user_invalid') do
53
+ expect do
54
+ WorkOS::UserManagement.create_user(
55
+ email: 'invalid',
56
+ )
57
+ end.to raise_error do |error|
58
+ expect(error).to be_a(WorkOS::UnprocessableEntityError)
59
+ expect(error.message).not_to be_nil
60
+ expect(error.errors).not_to be_nil
61
+ expect(error.code).not_to be_nil
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ # rubocop:enable Style/MultilineBlockChain
@@ -20,29 +20,6 @@ describe WorkOS::DirectorySync do
20
20
  end
21
21
  end
22
22
 
23
- context 'with domain option' do
24
- it 'forms the proper request to the API' do
25
- request_args = [
26
- '/directories?domain=foo-corp.com&'\
27
- 'order=desc',
28
- 'Content-Type' => 'application/json'
29
- ]
30
-
31
- expected_request = Net::HTTP::Get.new(*request_args)
32
-
33
- expect(Net::HTTP::Get).to receive(:new).with(*request_args).
34
- and_return(expected_request)
35
-
36
- VCR.use_cassette 'directory_sync/list_directories/with_domain' do
37
- directories = described_class.list_directories(
38
- domain: 'foo-corp.com',
39
- )
40
-
41
- expect(directories.data.size).to eq(1)
42
- end
43
- end
44
- end
45
-
46
23
  context 'with search option' do
47
24
  it 'forms the proper request to the API' do
48
25
  request_args = [
@@ -171,7 +148,7 @@ describe WorkOS::DirectorySync do
171
148
  expect do
172
149
  WorkOS::DirectorySync.get_directory(id: 'invalid')
173
150
  end.to raise_error(
174
- WorkOS::APIError,
151
+ WorkOS::NotFoundError,
175
152
  "Status 404, Directory not found: 'invalid'. - request ID: ",
176
153
  )
177
154
  end
@@ -185,7 +162,7 @@ describe WorkOS::DirectorySync do
185
162
  VCR.use_cassette('directory_sync/list_groups/with_no_options') do
186
163
  expect do
187
164
  WorkOS::DirectorySync.list_groups
188
- end.to raise_error(WorkOS::InvalidRequestError)
165
+ end.to raise_error(WorkOS::UnprocessableEntityError)
189
166
  end
190
167
  end
191
168
  end
@@ -319,7 +296,7 @@ describe WorkOS::DirectorySync do
319
296
  VCR.use_cassette('directory_sync/list_users/with_no_options') do
320
297
  expect do
321
298
  WorkOS::DirectorySync.list_users
322
- end.to raise_error(WorkOS::InvalidRequestError)
299
+ end.to raise_error(WorkOS::UnprocessableEntityError)
323
300
  end
324
301
  end
325
302
  end
@@ -471,7 +448,7 @@ describe WorkOS::DirectorySync do
471
448
  VCR.use_cassette('directory_sync/get_group_with_invalid_id') do
472
449
  expect do
473
450
  WorkOS::DirectorySync.get_group('invalid')
474
- end.to raise_error(WorkOS::APIError)
451
+ end.to raise_error(WorkOS:: NotFoundError)
475
452
  end
476
453
  end
477
454
  end
@@ -498,7 +475,7 @@ describe WorkOS::DirectorySync do
498
475
  VCR.use_cassette('directory_sync/get_user_with_invalid_id') do
499
476
  expect do
500
477
  WorkOS::DirectorySync.get_user('invalid')
501
- end.to raise_error(WorkOS::APIError)
478
+ end.to raise_error(WorkOS::NotFoundError)
502
479
  end
503
480
  end
504
481
  end
@@ -5,16 +5,11 @@ describe WorkOS::Events do
5
5
 
6
6
  describe '.list_events' do
7
7
  context 'with no options' do
8
- it 'returns events and metadata' do
9
- expected_metadata = {
10
- 'after' => nil,
11
- }
12
-
8
+ it 'raises ArgumentError' do
13
9
  VCR.use_cassette 'events/list_events_with_no_options' do
14
- events = described_class.list_events
15
-
16
- expect(events.data.size).to eq(1)
17
- expect(events.list_metadata).to eq(expected_metadata)
10
+ expect do
11
+ described_class.list_events
12
+ end.to raise_error(ArgumentError)
18
13
  end
19
14
  end
20
15
  end
@@ -44,7 +39,7 @@ describe WorkOS::Events do
44
39
  context 'with the after option' do
45
40
  it 'forms the proper request to the API' do
46
41
  request_args = [
47
- '/events?after=event_01FGCPNV312FHFRCX0BYWHVSE1',
42
+ '/events?after=event_01FGCPNV312FHFRCX0BYWHVSE1&events=dsync.user.created',
48
43
  'Content-Type' => 'application/json'
49
44
  ]
50
45
 
@@ -54,7 +49,10 @@ describe WorkOS::Events do
54
49
  and_return(expected_request)
55
50
 
56
51
  VCR.use_cassette 'events/list_events_with_after' do
57
- events = described_class.list_events(after: 'event_01FGCPNV312FHFRCX0BYWHVSE1')
52
+ events = described_class.list_events(
53
+ after: 'event_01FGCPNV312FHFRCX0BYWHVSE1',
54
+ events: ['dsync.user.created'],
55
+ )
58
56
 
59
57
  expect(events.data.size).to eq(1)
60
58
  end
@@ -64,7 +62,7 @@ describe WorkOS::Events do
64
62
  context 'with the range_start and range_end options' do
65
63
  it 'forms the proper request to the API' do
66
64
  request_args = [
67
- '/events?range_start=2023-01-01T00%3A00%3A00Z&range_end=2023-01-03T00%3A00%3A00Z',
65
+ '/events?events=dsync.user.created&range_start=2023-01-01T00%3A00%3A00Z&range_end=2023-01-03T00%3A00%3A00Z',
68
66
  'Content-Type' => 'application/json'
69
67
  ]
70
68
 
@@ -75,6 +73,7 @@ describe WorkOS::Events do
75
73
 
76
74
  VCR.use_cassette 'events/list_events_with_range' do
77
75
  events = described_class.list_events(
76
+ events: ['dsync.user.created'],
78
77
  range_start: '2023-01-01T00:00:00Z',
79
78
  range_end: '2023-01-03T00:00:00Z',
80
79
  )
@@ -87,7 +86,7 @@ describe WorkOS::Events do
87
86
  context 'with the organization_id option' do
88
87
  it 'forms the proper request to the API' do
89
88
  request_args = [
90
- '/events?organization_id=org_1234',
89
+ '/events?events=dsync.user.created&organization_id=org_1234',
91
90
  'Content-Type' => 'application/json'
92
91
  ]
93
92
 
@@ -98,6 +97,7 @@ describe WorkOS::Events do
98
97
 
99
98
  VCR.use_cassette 'events/list_events_with_organization_id' do
100
99
  events = described_class.list_events(
100
+ events: ['dsync.user.created'],
101
101
  organization_id: 'org_1234',
102
102
  )
103
103
 
@@ -188,7 +188,7 @@ describe WorkOS::MFA do
188
188
  authentication_challenge_id: 'auth_challenge_01FZ4YVRBMXP5ZM0A7BP4AJ12J',
189
189
  code: '897792',
190
190
  )
191
- end.to raise_error(WorkOS::InvalidRequestError)
191
+ end.to raise_error(WorkOS::UnprocessableEntityError)
192
192
  end
193
193
  end
194
194
  end
@@ -201,7 +201,7 @@ describe WorkOS::MFA do
201
201
  authentication_challenge_id: 'auth_challenge_01FZ4YVRBMXP5ZM0A7BP4AJ12J',
202
202
  code: '897792',
203
203
  )
204
- end.to raise_error(WorkOS::InvalidRequestError)
204
+ end.to raise_error(WorkOS::UnprocessableEntityError)
205
205
  end
206
206
  end
207
207
  end
@@ -264,7 +264,7 @@ describe WorkOS::MFA do
264
264
  described_class.get_factor(
265
265
  id: 'auth_factor_invalid',
266
266
  )
267
- end.to raise_error(WorkOS::APIError)
267
+ end.to raise_error(WorkOS::NotFoundError)
268
268
  end
269
269
  end
270
270
  end
@@ -257,7 +257,7 @@ describe WorkOS::Organizations do
257
257
  expect do
258
258
  described_class.get_organization(id: 'invalid')
259
259
  end.to raise_error(
260
- WorkOS::APIError,
260
+ WorkOS::NotFoundError,
261
261
  'Status 404, Not Found - request ID: ',
262
262
  )
263
263
  end
@@ -302,7 +302,7 @@ describe WorkOS::Organizations do
302
302
  expect do
303
303
  described_class.delete_organization(id: 'invalid')
304
304
  end.to raise_error(
305
- WorkOS::APIError,
305
+ WorkOS::NotFoundError,
306
306
  'Status 404, Not Found - request ID: ',
307
307
  )
308
308
  end
@@ -32,7 +32,7 @@ describe WorkOS::Passwordless do
32
32
  expect do
33
33
  described_class.create_session(invalid_options)
34
34
  end.to raise_error(
35
- WorkOS::InvalidRequestError,
35
+ WorkOS::UnprocessableEntityError,
36
36
  /Status 422, Validation failed \(email: email must be a string; type: type must be a valid enum value\)/,
37
37
  )
38
38
  end
@@ -66,7 +66,7 @@ describe WorkOS::Passwordless do
66
66
  expect do
67
67
  described_class.send_session('session_123')
68
68
  end.to raise_error(
69
- WorkOS::InvalidRequestError,
69
+ WorkOS::UnprocessableEntityError,
70
70
  /Status 422, The passwordless session 'session_123' has expired or is invalid./,
71
71
  )
72
72
  end
@@ -618,7 +618,7 @@ describe WorkOS::SSO do
618
618
  expect do
619
619
  WorkOS::SSO.get_connection(id: 'invalid')
620
620
  end.to raise_error(
621
- WorkOS::APIError,
621
+ WorkOS::NotFoundError,
622
622
  'Status 404, Not Found - request ID: ',
623
623
  )
624
624
  end
@@ -645,7 +645,7 @@ describe WorkOS::SSO do
645
645
  expect do
646
646
  WorkOS::SSO.delete_connection(id: 'invalid')
647
647
  end.to raise_error(
648
- WorkOS::APIError,
648
+ WorkOS::NotFoundError,
649
649
  'Status 404, Not Found - request ID: ',
650
650
  )
651
651
  end
@@ -312,7 +312,7 @@ describe WorkOS::UserManagement do
312
312
  expect do
313
313
  described_class.create_user(email: '')
314
314
  end.to raise_error(
315
- WorkOS::InvalidRequestError,
315
+ WorkOS::UnprocessableEntityError,
316
316
  /email_string_required/,
317
317
  )
318
318
  end
@@ -342,7 +342,7 @@ describe WorkOS::UserManagement do
342
342
  VCR.use_cassette 'user_management/update_user/invalid' do
343
343
  expect do
344
344
  described_class.update_user(id: 'invalid')
345
- end.to raise_error(WorkOS::APIError, /User not found/)
345
+ end.to raise_error(WorkOS::NotFoundError, /User not found/)
346
346
  end
347
347
  end
348
348
  end
@@ -367,7 +367,7 @@ describe WorkOS::UserManagement do
367
367
  VCR.use_cassette('user_management/delete_user/invalid') do
368
368
  expect do
369
369
  WorkOS::UserManagement.delete_user(id: 'invalid')
370
- end.to raise_error(WorkOS::APIError, /User not found/)
370
+ end.to raise_error(WorkOS::NotFoundError, /User not found/)
371
371
  end
372
372
  end
373
373
  end
@@ -400,7 +400,7 @@ describe WorkOS::UserManagement do
400
400
  ip_address: '200.240.210.16',
401
401
  user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/108.0.0.0 Safari/537.36',
402
402
  )
403
- end.to raise_error(WorkOS::APIError, /User not found/)
403
+ end.to raise_error(WorkOS::NotFoundError, /User not found/)
404
404
  end
405
405
  end
406
406
  end
@@ -512,7 +512,7 @@ describe WorkOS::UserManagement do
512
512
  client_id: 'client_123',
513
513
  email: 'test@workos.com',
514
514
  )
515
- end.to raise_error(WorkOS::APIError, /User not found/)
515
+ end.to raise_error(WorkOS::NotFoundError, /User not found/)
516
516
  end
517
517
  end
518
518
  end
@@ -637,7 +637,7 @@ describe WorkOS::UserManagement do
637
637
  VCR.use_cassette('user_management/get_magic_auth/invalid') do
638
638
  expect do
639
639
  WorkOS::UserManagement.get_magic_auth(id: 'invalid')
640
- end.to raise_error(WorkOS::APIError, /MagicAuth not found/)
640
+ end.to raise_error(WorkOS::NotFoundError, /MagicAuth not found/)
641
641
  end
642
642
  end
643
643
  end
@@ -677,6 +677,7 @@ describe WorkOS::UserManagement do
677
677
  authentication_response = WorkOS::UserManagement.enroll_auth_factor(
678
678
  user_id: 'user_01H7TVSKS45SDHN5V9XPSM6H44',
679
679
  type: 'totp',
680
+ totp_secret: 'secret-test',
680
681
  )
681
682
 
682
683
  expect(authentication_response.authentication_factor.id).to eq('auth_factor_01H96FETXENNY99ARX0GRC804C')
@@ -755,7 +756,7 @@ describe WorkOS::UserManagement do
755
756
  VCR.use_cassette('user_management/get_email_verification/invalid') do
756
757
  expect do
757
758
  WorkOS::UserManagement.get_email_verification(id: 'invalid')
758
- end.to raise_error(WorkOS::APIError, /Email Verification not found/)
759
+ end.to raise_error(WorkOS::NotFoundError, /Email Verification not found/)
759
760
  end
760
761
  end
761
762
  end
@@ -780,7 +781,7 @@ describe WorkOS::UserManagement do
780
781
  described_class.send_verification_email(
781
782
  user_id: 'bad_id',
782
783
  )
783
- end.to raise_error(WorkOS::APIError, /User not found/)
784
+ end.to raise_error(WorkOS::NotFoundError, /User not found/)
784
785
  end
785
786
  end
786
787
  end
@@ -809,7 +810,7 @@ describe WorkOS::UserManagement do
809
810
  code: '659770',
810
811
  user_id: 'bad_id',
811
812
  )
812
- end.to raise_error(WorkOS::APIError, /User not found/)
813
+ end.to raise_error(WorkOS::NotFoundError, /User not found/)
813
814
  end
814
815
  end
815
816
  end
@@ -848,7 +849,7 @@ describe WorkOS::UserManagement do
848
849
  VCR.use_cassette('user_management/get_password_reset/invalid') do
849
850
  expect do
850
851
  WorkOS::UserManagement.get_password_reset(id: 'invalid')
851
- end.to raise_error(WorkOS::APIError, /Password Reset not found/)
852
+ end.to raise_error(WorkOS::NotFoundError, /Password Reset not found/)
852
853
  end
853
854
  end
854
855
  end
@@ -892,7 +893,7 @@ describe WorkOS::UserManagement do
892
893
  password_reset_url: '',
893
894
  )
894
895
  end.to raise_error(
895
- WorkOS::InvalidRequestError,
896
+ WorkOS::UnprocessableEntityError,
896
897
  /password_reset_url_string_required/,
897
898
  )
898
899
  end
@@ -923,7 +924,7 @@ describe WorkOS::UserManagement do
923
924
  new_password: 'new_password',
924
925
  )
925
926
  end.to raise_error(
926
- WorkOS::APIError,
927
+ WorkOS::NotFoundError,
927
928
  /Could not locate user with provided token/,
928
929
  )
929
930
  end
@@ -1047,7 +1048,7 @@ describe WorkOS::UserManagement do
1047
1048
  expect do
1048
1049
  described_class.create_organization_membership(user_id: '', organization_id: '')
1049
1050
  end.to raise_error(
1050
- WorkOS::InvalidRequestError,
1051
+ WorkOS::UnprocessableEntityError,
1051
1052
  /user_id_string_required/,
1052
1053
  )
1053
1054
  end
@@ -1074,7 +1075,7 @@ describe WorkOS::UserManagement do
1074
1075
  VCR.use_cassette('user_management/delete_organization_membership/invalid') do
1075
1076
  expect do
1076
1077
  WorkOS::UserManagement.delete_organization_membership(id: 'invalid')
1077
- end.to raise_error(WorkOS::APIError, /Organization Membership not found/)
1078
+ end.to raise_error(WorkOS::NotFoundError, /Organization Membership not found/)
1078
1079
  end
1079
1080
  end
1080
1081
  end
@@ -1149,7 +1150,32 @@ describe WorkOS::UserManagement do
1149
1150
  VCR.use_cassette('user_management/get_invitation/invalid') do
1150
1151
  expect do
1151
1152
  WorkOS::UserManagement.get_invitation(id: 'invalid')
1152
- end.to raise_error(WorkOS::APIError, /Invitation not found/)
1153
+ end.to raise_error(WorkOS::NotFoundError, /Invitation not found/)
1154
+ end
1155
+ end
1156
+ end
1157
+ end
1158
+
1159
+ describe '.find_invitation_by_token' do
1160
+ context 'with a valid id' do
1161
+ it 'returns an invitation' do
1162
+ VCR.use_cassette 'user_management/find_invitation_by_token/valid' do
1163
+ invitation = described_class.find_invitation_by_token(
1164
+ token: 'iUV3XbYajpJlbpw1Qt3ZKlaKx',
1165
+ )
1166
+
1167
+ expect(invitation.id.instance_of?(String))
1168
+ expect(invitation.instance_of?(WorkOS::Invitation))
1169
+ end
1170
+ end
1171
+ end
1172
+
1173
+ context 'with an invalid id' do
1174
+ it 'raises an error' do
1175
+ VCR.use_cassette('user_management/find_invitation_by_token/invalid') do
1176
+ expect do
1177
+ WorkOS::UserManagement.find_invitation_by_token(token: 'invalid')
1178
+ end.to raise_error(WorkOS::NotFoundError, /Invitation not found/)
1153
1179
  end
1154
1180
  end
1155
1181
  end
@@ -1320,7 +1346,7 @@ describe WorkOS::UserManagement do
1320
1346
  id: 'invalid_id',
1321
1347
  )
1322
1348
  end.to raise_error(
1323
- WorkOS::APIError,
1349
+ WorkOS::NotFoundError,
1324
1350
  /Invitation not found/,
1325
1351
  )
1326
1352
  end
@@ -1349,7 +1375,7 @@ describe WorkOS::UserManagement do
1349
1375
  session_id: 'session_01H5JQDV7R7ATEYZDEG0W5PRYS',
1350
1376
  )
1351
1377
  end.to raise_error(
1352
- WorkOS::APIError,
1378
+ WorkOS::NotFoundError,
1353
1379
  /Session not found/,
1354
1380
  )
1355
1381
  end
@@ -1,66 +1,66 @@
1
1
  ---
2
2
  http_interactions:
3
- - request:
4
- method: post
5
- uri: https://api.workos.com/events
6
- body:
7
- encoding: UTF-8
8
- string: "{}"
9
- headers:
10
- Content-Type:
11
- - application/json
12
- Accept-Encoding:
13
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
- Accept:
15
- - "*/*"
16
- User-Agent:
17
- - WorkOS; ruby/2.6.5; x86_64-darwin19; v0.1.0
18
- Authorization:
19
- - 'Bearer '
20
- response:
21
- status:
22
- code: 401
23
- message: Unauthorized
24
- headers:
25
- Server:
26
- - Cowboy
27
- Connection:
28
- - keep-alive
29
- Access-Control-Allow-Origin:
30
- - https://dashboard.workos-test.com
31
- Vary:
32
- - Origin, Accept-Encoding
33
- Access-Control-Allow-Credentials:
34
- - 'true'
35
- X-Dns-Prefetch-Control:
36
- - 'off'
37
- X-Frame-Options:
38
- - SAMEORIGIN
39
- Strict-Transport-Security:
40
- - max-age=15552000; includeSubDomains
41
- X-Download-Options:
42
- - noopen
43
- X-Content-Type-Options:
44
- - nosniff
45
- X-Xss-Protection:
46
- - 1; mode=block
47
- X-Request-Id:
48
- - 32a67a24-bfaf-4463-bf47-c407d54955d3
49
- Request-Id:
50
- - 32a67a24-bfaf-4463-bf47-c407d54955d3
51
- Content-Type:
52
- - application/json; charset=utf-8
53
- Content-Length:
54
- - '26'
55
- Etag:
56
- - W/"1a-pljHtlo127JYJR4E/RYOPb6ucbw"
57
- Date:
58
- - Sat, 11 Jan 2020 03:50:27 GMT
59
- Via:
60
- - 1.1 vegur
61
- body:
62
- encoding: UTF-8
63
- string: '{"message":"Unauthorized"}'
64
- http_version:
65
- recorded_at: Sat, 11 Jan 2020 03:50:27 GMT
3
+ - request:
4
+ method: post
5
+ uri: https://api.workos.com/audit_logs/events
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{}'
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - '*/*'
16
+ User-Agent:
17
+ - WorkOS; ruby/2.6.5; x86_64-darwin19; v0.1.0
18
+ Authorization:
19
+ - 'Bearer '
20
+ response:
21
+ status:
22
+ code: 401
23
+ message: Unauthorized
24
+ headers:
25
+ Server:
26
+ - Cowboy
27
+ Connection:
28
+ - keep-alive
29
+ Access-Control-Allow-Origin:
30
+ - https://dashboard.workos-test.com
31
+ Vary:
32
+ - Origin, Accept-Encoding
33
+ Access-Control-Allow-Credentials:
34
+ - 'true'
35
+ X-Dns-Prefetch-Control:
36
+ - 'off'
37
+ X-Frame-Options:
38
+ - SAMEORIGIN
39
+ Strict-Transport-Security:
40
+ - max-age=15552000; includeSubDomains
41
+ X-Download-Options:
42
+ - noopen
43
+ X-Content-Type-Options:
44
+ - nosniff
45
+ X-Xss-Protection:
46
+ - 1; mode=block
47
+ X-Request-Id:
48
+ - 32a67a24-bfaf-4463-bf47-c407d54955d3
49
+ Request-Id:
50
+ - 32a67a24-bfaf-4463-bf47-c407d54955d3
51
+ Content-Type:
52
+ - application/json; charset=utf-8
53
+ Content-Length:
54
+ - '26'
55
+ Etag:
56
+ - W/"1a-pljHtlo127JYJR4E/RYOPb6ucbw"
57
+ Date:
58
+ - Sat, 11 Jan 2020 03:50:27 GMT
59
+ Via:
60
+ - 1.1 vegur
61
+ body:
62
+ encoding: UTF-8
63
+ string: '{"message":"Unauthorized"}'
64
+ http_version:
65
+ recorded_at: Sat, 11 Jan 2020 03:50:27 GMT
66
66
  recorded_with: VCR 5.0.0
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://api.workos.com/events?after=event_01FGCPNV312FHFRCX0BYWHVSE1
5
+ uri: https://api.workos.com/events?after=event_01FGCPNV312FHFRCX0BYWHVSE1&events=dsync.user.created
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -14,40 +14,42 @@ http_interactions:
14
14
  Accept:
15
15
  - "*/*"
16
16
  User-Agent:
17
- - WorkOS; ruby/2.7.2; arm64-darwin21; v2.3.0
17
+ - WorkOS; ruby/3.3.0; arm64-darwin23; v4.1.0
18
18
  Authorization:
19
19
  - Bearer <API_KEY>
20
20
  response:
21
21
  status:
22
- code: 200
23
- message: OK
22
+ code: 400
23
+ message: Bad Request
24
24
  headers:
25
25
  Date:
26
- - Thu, 14 Jul 2022 16:46:23 GMT
26
+ - Thu, 11 Apr 2024 15:44:49 GMT
27
27
  Content-Type:
28
28
  - application/json; charset=utf-8
29
29
  Content-Length:
30
- - '616'
30
+ - '140'
31
31
  Connection:
32
32
  - keep-alive
33
+ Cf-Ray:
34
+ - 872c19a65dcb3af9-IAD
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Etag:
38
+ - W/"8c-3NPoweNh0oXUDzElVKxg5PG7PWk"
39
+ Strict-Transport-Security:
40
+ - max-age=15552000; includeSubDomains
41
+ Vary:
42
+ - Origin, Accept-Encoding
33
43
  Access-Control-Allow-Credentials:
34
44
  - 'true'
35
45
  Content-Security-Policy:
36
46
  - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
37
47
  https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
38
48
  ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
39
- Etag:
40
- - W/"680-NPvBik348v8xg6EE7iZMYwD5UXw"
41
49
  Expect-Ct:
42
50
  - max-age=0
43
51
  Referrer-Policy:
44
52
  - no-referrer
45
- Strict-Transport-Security:
46
- - max-age=15552000; includeSubDomains
47
- Vary:
48
- - Origin, Accept-Encoding
49
- Via:
50
- - 1.1 spaces-router (b642bf20b975)
51
53
  X-Content-Type-Options:
52
54
  - nosniff
53
55
  X-Dns-Prefetch-Control:
@@ -59,22 +61,21 @@ http_interactions:
59
61
  X-Permitted-Cross-Domain-Policies:
60
62
  - none
61
63
  X-Request-Id:
62
- - 51a82273-b413-cead-b968-c07ba4d6fd08
64
+ - 660c0035-b70d-4939-a0d3-2b0917535e7f
63
65
  X-Xss-Protection:
64
66
  - '0'
65
- Cf-Cache-Status:
66
- - DYNAMIC
67
- Report-To:
68
- - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=OS7ELJ3A8tkzMafvaIThD%2B5JlYmul1puZlAXTxEKYBLlq%2B6DCtqDqAi4dtr4yRP3khNmg6MwPiuLqtdOXRmPOtag9Ti%2FGK8ra%2BJOlpwkFjD965CNBfzao4EJtExDkbS3"}],"group":"cf-nel","max_age":604800}'
69
- Nel:
70
- - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
67
+ Set-Cookie:
68
+ - __cf_bm=UpBr7jsatrWLaunHA8NhaflwkUco6FBxeXhgwz2bAoM-1712850289-1.0.1.1-KJCKaoohiG088DieTdV2V91AtW1fbs7ec.x7gsal9xsVzA2OPf67b0R__57KFvEsEZ97obgydtH.VEwyYhpGTw;
69
+ path=/; expires=Thu, 11-Apr-24 16:14:49 GMT; domain=.workos.com; HttpOnly;
70
+ Secure; SameSite=None
71
+ - __cfruid=bbad8ba60df9a023f0ba77749b5c0b92162e6ed3-1712850289; path=/; domain=.workos.com;
72
+ HttpOnly; Secure; SameSite=None
71
73
  Server:
72
74
  - cloudflare
73
- Cf-Ray:
74
- - 72abbbf2b93e8ca5-EWR
75
75
  body:
76
- encoding: ASCII-8BIT
77
- string: '{"object":"list","data":[{"object":"event","id":"event_01FK3HFFGMC2WF32RR8SKWC8KA","event":"dsync.user.created","created_at":"2021-10-28T13:29:54.451Z","data":{"email":"foo@foocorp.com"}}], "list_metadata":{"after":null}}'
76
+ encoding: UTF-8
77
+ string: '{"message":"One or more event names (e.g. dsync.user.created) must
78
+ be provided using the events parameter.","code":"invalid_events_request"}'
78
79
  http_version:
79
- recorded_at: Thu, 14 Jul 2022 16:46:23 GMT
80
+ recorded_at: Thu, 11 Apr 2024 15:44:49 GMT
80
81
  recorded_with: VCR 5.0.0
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://api.workos.com/events?organization_id=org_1234
5
+ uri: https://api.workos.com/events?events=dsync.user.created&organization_id=org_1234
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://api.workos.com/events?range_end=2023-01-03T00:00:00Z&range_start=2023-01-01T00:00:00Z
5
+ uri: https://api.workos.com/events?events=dsync.user.created&range_end=2023-01-03T00:00:00Z&range_start=2023-01-01T00:00:00Z
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.workos.com/user_management/invitations/by_token/invalid
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ User-Agent:
17
+ - WorkOS; ruby/3.0.2; x86_64-darwin19; v4.7.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 404
23
+ message: Not Found
24
+ headers:
25
+ Date:
26
+ - Mon, 03 Jun 2024 20:16:37 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Cf-Ray:
34
+ - 88e25cab2e0c520c-DEN
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Etag:
38
+ - W/"5a-PPX6d4bMxLfMyXe/1aUqFNwW/Dc"
39
+ Strict-Transport-Security:
40
+ - max-age=15552000; includeSubDomains
41
+ Vary:
42
+ - Origin, Accept-Encoding
43
+ Access-Control-Allow-Credentials:
44
+ - 'true'
45
+ Content-Security-Policy:
46
+ - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
47
+ https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
48
+ ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
49
+ Expect-Ct:
50
+ - max-age=0
51
+ Referrer-Policy:
52
+ - no-referrer
53
+ X-Content-Type-Options:
54
+ - nosniff
55
+ X-Dns-Prefetch-Control:
56
+ - 'off'
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - SAMEORIGIN
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Request-Id:
64
+ - 7066479f-3c65-4eb0-a5ab-fa371e8747e5
65
+ X-Xss-Protection:
66
+ - '0'
67
+ Set-Cookie:
68
+ - __cf_bm=V3RT_KMrnFyoIbj_1OgapyAtReNBXvdzeYmNZWQQt6Y-1717445797-1.0.1.1-XWQk50226uaRo4S1BTn3wou4.mFaLOC20eA_MhrSil._j0XoCx6I2Q0gmgtBp1j9.dHqkmf4ZwOw1j6RmBLSnQ;
69
+ path=/; expires=Mon, 03-Jun-24 20:46:37 GMT; domain=.workos.com; HttpOnly;
70
+ Secure; SameSite=None
71
+ - __cfruid=cb54bc416259840c8c11ad58469ec2c5d9f88ff3-1717445797; path=/; domain=.workos.com;
72
+ HttpOnly; Secure; SameSite=None
73
+ Server:
74
+ - cloudflare
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"message":"Invitation not found: ''invalid''.","code":"entity_not_found","entity_id":"invalid"}'
78
+ http_version:
79
+ recorded_at: Mon, 03 Jun 2024 20:16:37 GMT
80
+ recorded_with: VCR 5.0.0
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.workos.com/user_management/invitations/by_token/iUV3XbYajpJlbpw1Qt3ZKlaKx
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ User-Agent:
17
+ - WorkOS; ruby/3.0.2; x86_64-darwin19; v4.7.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Mon, 03 Jun 2024 20:16:37 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Cf-Ray:
34
+ - 88e25ca97a127b32-DEN
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Etag:
38
+ - W/"1e5-ZUKH6e1N8G9JBxE8/nulDIEawKk"
39
+ Strict-Transport-Security:
40
+ - max-age=15552000; includeSubDomains
41
+ Vary:
42
+ - Origin, Accept-Encoding
43
+ Access-Control-Allow-Credentials:
44
+ - 'true'
45
+ Content-Security-Policy:
46
+ - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
47
+ https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
48
+ ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
49
+ Expect-Ct:
50
+ - max-age=0
51
+ Referrer-Policy:
52
+ - no-referrer
53
+ X-Content-Type-Options:
54
+ - nosniff
55
+ X-Dns-Prefetch-Control:
56
+ - 'off'
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - SAMEORIGIN
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Request-Id:
64
+ - 1359e287-00bc-4081-a3d9-6bfcded70273
65
+ X-Xss-Protection:
66
+ - '0'
67
+ Set-Cookie:
68
+ - __cf_bm=WToCUplL1o5i0KSz5l81mSZ5SqsRh0MGwXHPwM7C.Sg-1717445797-1.0.1.1-KXhOU0BqmCe7ZDWcpEJ7V3gLLZpioBrWPxtyB5m2sOmYxj3GWOfjhqRz5d1L0cTOpGoT9OfeqzGa5qfmD0ELZw;
69
+ path=/; expires=Mon, 03-Jun-24 20:46:37 GMT; domain=.workos.com; HttpOnly;
70
+ Secure; SameSite=None
71
+ - __cfruid=cb54bc416259840c8c11ad58469ec2c5d9f88ff3-1717445797; path=/; domain=.workos.com;
72
+ HttpOnly; Secure; SameSite=None
73
+ Server:
74
+ - cloudflare
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"object":"invitation","id":"invitation_01HZFVRAJ7EV7935K7H8NX2MRH","email":"blairlunceford@gmail.com","state":"pending","accepted_at":null,"revoked_at":null,"expires_at":"2024-06-10T20:13:21.862Z","organization_id":null,"inviter_user_id":null,"token":"iUV3XbYajpJlbpw1Qt3ZKlaKx","accept_invitation_url":"https://manageable-child-63-staging.authkit.app/invite/?invitation_token=iUV3XbYajpJlbpw1Qt3ZKlaKx","created_at":"2024-06-03T20:13:21.820Z","updated_at":"2024-06-03T20:13:21.820Z"}'
78
+ http_version:
79
+ recorded_at: Mon, 03 Jun 2024 20:16:37 GMT
80
+ recorded_with: VCR 5.0.0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workos
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.7.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WorkOS
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-24 00:00:00.000000000 Z
11
+ date: 2024-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -152,6 +152,7 @@ files:
152
152
  - lib/workos/webhook.rb
153
153
  - lib/workos/webhooks.rb
154
154
  - spec/lib/workos/audit_logs_spec.rb
155
+ - spec/lib/workos/client.rb
155
156
  - spec/lib/workos/configuration_spec.rb
156
157
  - spec/lib/workos/directory_sync_spec.rb
157
158
  - spec/lib/workos/directory_user_spec.rb
@@ -284,6 +285,8 @@ files:
284
285
  - spec/support/fixtures/vcr_cassettes/user_management/delete_user/valid.yml
285
286
  - spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/invalid.yml
286
287
  - spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/valid.yml
288
+ - spec/support/fixtures/vcr_cassettes/user_management/find_invitation_by_token/invalid.yml
289
+ - spec/support/fixtures/vcr_cassettes/user_management/find_invitation_by_token/valid.yml
287
290
  - spec/support/fixtures/vcr_cassettes/user_management/get_email_verification/invalid.yml
288
291
  - spec/support/fixtures/vcr_cassettes/user_management/get_email_verification/valid.yml
289
292
  - spec/support/fixtures/vcr_cassettes/user_management/get_invitation/invalid.yml
@@ -357,6 +360,7 @@ specification_version: 4
357
360
  summary: API client for WorkOS
358
361
  test_files:
359
362
  - spec/lib/workos/audit_logs_spec.rb
363
+ - spec/lib/workos/client.rb
360
364
  - spec/lib/workos/configuration_spec.rb
361
365
  - spec/lib/workos/directory_sync_spec.rb
362
366
  - spec/lib/workos/directory_user_spec.rb
@@ -489,6 +493,8 @@ test_files:
489
493
  - spec/support/fixtures/vcr_cassettes/user_management/delete_user/valid.yml
490
494
  - spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/invalid.yml
491
495
  - spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/valid.yml
496
+ - spec/support/fixtures/vcr_cassettes/user_management/find_invitation_by_token/invalid.yml
497
+ - spec/support/fixtures/vcr_cassettes/user_management/find_invitation_by_token/valid.yml
492
498
  - spec/support/fixtures/vcr_cassettes/user_management/get_email_verification/invalid.yml
493
499
  - spec/support/fixtures/vcr_cassettes/user_management/get_email_verification/valid.yml
494
500
  - spec/support/fixtures/vcr_cassettes/user_management/get_invitation/invalid.yml