workos 5.25.0 → 5.27.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86d12c42e6f45139b343d1f519807176eca7a9ac77dbd2d3de0287a9406c50c4
4
- data.tar.gz: 3addd0959c8b7b8c2caae994b694bfda1eabe41499f540d76e71865e9ae9b35f
3
+ metadata.gz: d4c13739c752d0a39953650ceaa9ce3b11975333deaee4c3308e68aaf498a81b
4
+ data.tar.gz: 0d1e38dab645be1e74296de37deeb02115e1ef8528c7a2d96a751b0ec8586312
5
5
  SHA512:
6
- metadata.gz: e286d3aa2d010bbab396d9267795c9eee35cac00f7d3c4c95fb35d70b08df133d32b0081a5f83a1ecf1fe28d663f660947b27756b7225a22ed7b345d4e5d5898
7
- data.tar.gz: 9571637a3bda0ce330a54ea0a8a09076905fdece0b2e85565a3dd9510d5c3f27d52021cca7a51372d7bc0c3de00a7aeaacb521e0522b9a849df8081d5c316828
6
+ metadata.gz: f4b7db5351ad49b0c388213769e7d5fb32121eed25999ba75476691c41bc5bd1ce792910912843869440d7ae28734405233cca551d324fb5507d9dabd9c3c04d
7
+ data.tar.gz: d4fba87cbf558a37b3e563f189aeb00e93fad7bfe58fd93473fa615d190c5180756c5de19aa9a0510fc95bf3feb9719c7994d4cdb85b1e405679639d23e85e6b
data/.gitignore CHANGED
@@ -49,3 +49,4 @@
49
49
  # .rubocop-https?--*
50
50
 
51
51
  .vscode
52
+ .idea/
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- workos (5.25.0)
4
+ workos (5.27.0)
5
5
  encryptor (~> 3.0)
6
6
  jwt (~> 2.8)
7
7
 
@@ -7,7 +7,7 @@ module WorkOS
7
7
  class OrganizationMembership
8
8
  include HashProvider
9
9
 
10
- attr_accessor :id, :user_id, :organization_id, :status, :role, :created_at, :updated_at
10
+ attr_accessor :id, :user_id, :organization_id, :status, :role, :roles, :created_at, :updated_at
11
11
 
12
12
  def initialize(json)
13
13
  hash = JSON.parse(json, symbolize_names: true)
@@ -17,6 +17,7 @@ module WorkOS
17
17
  @organization_id = hash[:organization_id]
18
18
  @status = hash[:status]
19
19
  @role = hash[:role]
20
+ @roles = hash[:roles]
20
21
  @created_at = hash[:created_at]
21
22
  @updated_at = hash[:updated_at]
22
23
  end
@@ -28,6 +29,7 @@ module WorkOS
28
29
  organization_id: organization_id,
29
30
  status: status,
30
31
  role: role,
32
+ roles: roles,
31
33
  created_at: created_at,
32
34
  updated_at: updated_at,
33
35
  }
@@ -30,6 +30,7 @@ module WorkOS
30
30
 
31
31
  # Authenticates the user based on the session data
32
32
  # @return [Hash] A hash containing the authentication response and a reason if the authentication failed
33
+ # rubocop:disable Metrics/AbcSize
33
34
  def authenticate
34
35
  return { authenticated: false, reason: 'NO_SESSION_COOKIE_PROVIDED' } if @session_data.nil?
35
36
 
@@ -49,6 +50,7 @@ module WorkOS
49
50
  session_id: decoded['sid'],
50
51
  organization_id: decoded['org_id'],
51
52
  role: decoded['role'],
53
+ roles: decoded['roles'],
52
54
  permissions: decoded['permissions'],
53
55
  entitlements: decoded['entitlements'],
54
56
  feature_flags: decoded['feature_flags'],
@@ -64,7 +66,6 @@ module WorkOS
64
66
  # @option options [String] :organization_id The organization ID to use for refreshing the session
65
67
  # @return [Hash] A hash containing a new sealed session, the authentication response,
66
68
  # and a reason if the refresh failed
67
- # rubocop:disable Metrics/AbcSize
68
69
  # rubocop:disable Metrics/PerceivedComplexity
69
70
  def refresh(options = nil)
70
71
  cookie_password = options.nil? || options[:cookie_password].nil? ? @cookie_password : options[:cookie_password]
@@ -6,8 +6,10 @@ module WorkOS
6
6
  # scopes while generating a widget token.
7
7
  module WidgetScope
8
8
  USERS_TABLE_MANAGE = 'widgets:users-table:manage'
9
+ SSO_MANAGE = 'widgets:sso:manage'
10
+ DOMAIN_VERIFICATION_MANAGE = 'widgets:domain-verification:manage'
9
11
 
10
- ALL = [USERS_TABLE_MANAGE].freeze
12
+ ALL = [USERS_TABLE_MANAGE, SSO_MANAGE, DOMAIN_VERIFICATION_MANAGE].freeze
11
13
  end
12
14
  end
13
15
  end
data/lib/workos/user.rb CHANGED
@@ -8,7 +8,7 @@ module WorkOS
8
8
  include HashProvider
9
9
 
10
10
  attr_accessor :id, :email, :first_name, :last_name, :email_verified,
11
- :profile_picture_url, :external_id, :last_sign_in_at, :created_at, :updated_at
11
+ :profile_picture_url, :external_id, :locale, :last_sign_in_at, :created_at, :updated_at
12
12
 
13
13
  def initialize(json)
14
14
  hash = JSON.parse(json, symbolize_names: true)
@@ -20,6 +20,7 @@ module WorkOS
20
20
  @email_verified = hash[:email_verified]
21
21
  @profile_picture_url = hash[:profile_picture_url]
22
22
  @external_id = hash[:external_id]
23
+ @locale = hash[:locale]
23
24
  @last_sign_in_at = hash[:last_sign_in_at]
24
25
  @created_at = hash[:created_at]
25
26
  @updated_at = hash[:updated_at]
@@ -34,6 +35,7 @@ module WorkOS
34
35
  email_verified: email_verified,
35
36
  profile_picture_url: profile_picture_url,
36
37
  external_id: external_id,
38
+ locale: locale,
37
39
  last_sign_in_at: last_sign_in_at,
38
40
  created_at: created_at,
39
41
  updated_at: updated_at,
@@ -230,6 +230,7 @@ module WorkOS
230
230
  # @param [String] last_name The user's last name.
231
231
  # @param [Boolean] email_verified Whether the user's email address was previously verified.
232
232
  # @param [String] external_id The users's external ID
233
+ # @param [String] locale The user's locale.
233
234
  # @param [String] password The user's password.
234
235
  # @param [String] password_hash The user's hashed password.
235
236
  # @option [String] password_hash_type The algorithm originally used to hash the password.
@@ -243,6 +244,7 @@ module WorkOS
243
244
  last_name: :not_set,
244
245
  email_verified: :not_set,
245
246
  external_id: :not_set,
247
+ locale: :not_set,
246
248
  password: :not_set,
247
249
  password_hash: :not_set,
248
250
  password_hash_type: :not_set
@@ -255,6 +257,7 @@ module WorkOS
255
257
  last_name: last_name,
256
258
  email_verified: email_verified,
257
259
  external_id: external_id,
260
+ locale: locale,
258
261
  password: password,
259
262
  password_hash: password_hash,
260
263
  password_hash_type: password_hash_type,
@@ -926,16 +929,23 @@ module WorkOS
926
929
  # @param [String] user_id The ID of the User.
927
930
  # @param [String] organization_id The ID of the Organization to which the user belongs to.
928
931
  # @param [String] role_slug The slug of the role to grant to this membership. (Optional)
932
+ # @param [Array<String>] role_slugs Array of role slugs to assign to this membership. (Optional)
929
933
  #
930
934
  # @return [WorkOS::OrganizationMembership]
931
- def create_organization_membership(user_id:, organization_id:, role_slug: nil)
935
+ def create_organization_membership(user_id:, organization_id:, role_slug: nil, role_slugs: nil)
936
+ raise ArgumentError, 'Cannot specify both role_slug and role_slugs' if role_slug && role_slugs
937
+
938
+ body = {
939
+ user_id: user_id,
940
+ organization_id: organization_id,
941
+ }
942
+
943
+ body[:role_slugs] = role_slugs if role_slugs
944
+ body[:role_slug] = role_slug if role_slug
945
+
932
946
  request = post_request(
933
947
  path: '/user_management/organization_memberships',
934
- body: {
935
- user_id: user_id,
936
- organization_id: organization_id,
937
- role_slug: role_slug,
938
- }.compact,
948
+ body: body.compact,
939
949
  auth: true,
940
950
  )
941
951
 
@@ -946,17 +956,22 @@ module WorkOS
946
956
 
947
957
  # Update an Organization Membership
948
958
  #
949
- # @param [String] organization_membership_id The ID of the Organization Membership.
950
- # @param [String] role_slug The slug of the role to grant to this membership.
959
+ # @param [String] id The ID of the Organization Membership.
960
+ # @param [String] role_slug The slug of the role to grant to this membership. (Optional)
961
+ # @param [Array<String>] role_slugs Array of role slugs to assign to this membership. (Optional)
951
962
  #
952
963
  # @return [WorkOS::OrganizationMembership]
953
- def update_organization_membership(id:, role_slug:)
964
+ def update_organization_membership(id:, role_slug: nil, role_slugs: nil)
965
+ raise ArgumentError, 'Cannot specify both role_slug and role_slugs' if role_slug && role_slugs
966
+
967
+ body = { id: id }
968
+
969
+ body[:role_slugs] = role_slugs if role_slugs
970
+ body[:role_slug] = role_slug if role_slug
971
+
954
972
  request = put_request(
955
973
  path: "/user_management/organization_memberships/#{id}",
956
- body: {
957
- id: id,
958
- role_slug: role_slug,
959
- },
974
+ body: body.compact,
960
975
  auth: true,
961
976
  )
962
977
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WorkOS
4
- VERSION = '5.25.0'
4
+ VERSION = '5.27.0'
5
5
  end
@@ -108,6 +108,7 @@ describe WorkOS::Session do
108
108
  sid: 'session_id',
109
109
  org_id: 'org_id',
110
110
  role: 'role',
111
+ roles: ['role'],
111
112
  permissions: ['read'],
112
113
  exp: Time.now.to_i + 3600,
113
114
  }
@@ -173,6 +174,7 @@ describe WorkOS::Session do
173
174
  session_id: 'session_id',
174
175
  organization_id: 'org_id',
175
176
  role: 'role',
177
+ roles: ['role'],
176
178
  permissions: ['read'],
177
179
  feature_flags: nil,
178
180
  entitlements: nil,
@@ -188,6 +190,7 @@ describe WorkOS::Session do
188
190
  sid: 'session_id',
189
191
  org_id: 'org_id',
190
192
  role: 'role',
193
+ roles: ['role'],
191
194
  permissions: ['read'],
192
195
  entitlements: ['billing'],
193
196
  exp: Time.now.to_i + 3600,
@@ -208,6 +211,7 @@ describe WorkOS::Session do
208
211
  session_id: 'session_id',
209
212
  organization_id: 'org_id',
210
213
  role: 'role',
214
+ roles: ['role'],
211
215
  permissions: ['read'],
212
216
  entitlements: ['billing'],
213
217
  feature_flags: nil,
@@ -224,6 +228,7 @@ describe WorkOS::Session do
224
228
  sid: 'session_id',
225
229
  org_id: 'org_id',
226
230
  role: 'role',
231
+ roles: ['role'],
227
232
  permissions: ['read'],
228
233
  feature_flags: ['new_feature_enabled'],
229
234
  exp: Time.now.to_i + 3600,
@@ -244,6 +249,7 @@ describe WorkOS::Session do
244
249
  session_id: 'session_id',
245
250
  organization_id: 'org_id',
246
251
  role: 'role',
252
+ roles: ['role'],
247
253
  permissions: ['read'],
248
254
  entitlements: nil,
249
255
  feature_flags: ['new_feature_enabled'],
@@ -442,6 +442,16 @@ describe WorkOS::UserManagement do
442
442
  end
443
443
  end
444
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
+
445
455
  it 'can update email addresses' do
446
456
  VCR.use_cassette 'user_management/update_user/email' do
447
457
  user = described_class.update_user(
@@ -462,6 +472,7 @@ describe WorkOS::UserManagement do
462
472
  expect(body).not_to have_key(:first_name)
463
473
  expect(body).not_to have_key(:last_name)
464
474
  expect(body).not_to have_key(:email)
475
+ expect(body).not_to have_key(:locale)
465
476
 
466
477
  # Return a mock request object
467
478
  double('request')
@@ -1302,6 +1313,23 @@ describe WorkOS::UserManagement do
1302
1313
  end
1303
1314
  end
1304
1315
  end
1316
+
1317
+ context 'with role slugs' do
1318
+ it 'creates an organization membership with multiple roles' do
1319
+ VCR.use_cassette 'user_management/create_organization_membership/valid_multiple_roles' do
1320
+ organization_membership = described_class.create_organization_membership(
1321
+ user_id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
1322
+ organization_id: 'org_01H5JQDV7R7ATEYZDEG0W5PRYS',
1323
+ role_slugs: %w[admin member],
1324
+ )
1325
+
1326
+ expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1327
+ expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1328
+ expect(organization_membership.roles).to be_an(Array)
1329
+ expect(organization_membership.roles.length).to eq(2)
1330
+ end
1331
+ end
1332
+ end
1305
1333
  end
1306
1334
 
1307
1335
  describe '.update_organization_membership' do
@@ -1329,6 +1357,22 @@ describe WorkOS::UserManagement do
1329
1357
  end
1330
1358
  end
1331
1359
  end
1360
+
1361
+ context 'with role slugs' do
1362
+ it 'updates an organization membership with multiple roles' do
1363
+ VCR.use_cassette('user_management/update_organization_membership/valid_multiple_roles') do
1364
+ organization_membership = WorkOS::UserManagement.update_organization_membership(
1365
+ id: 'om_01H5JQDV7R7ATEYZDEG0W5PRYS',
1366
+ role_slugs: %w[admin editor],
1367
+ )
1368
+
1369
+ expect(organization_membership.organization_id).to eq('organization_01H5JQDV7R7ATEYZDEG0W5PRYS')
1370
+ expect(organization_membership.user_id).to eq('user_01H5JQDV7R7ATEYZDEG0W5PRYS')
1371
+ expect(organization_membership.roles).to be_an(Array)
1372
+ expect(organization_membership.roles.length).to eq(2)
1373
+ end
1374
+ end
1375
+ end
1332
1376
  end
1333
1377
 
1334
1378
  describe '.delete_organization_membership' do
@@ -0,0 +1,76 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.workos.com/user_management/organization_memberships
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"user_id":"user_01H5JQDV7R7ATEYZDEG0W5PRYS","organization_id":"org_01H5JQDV7R7ATEYZDEG0W5PRYS","role_slugs":["admin","member"]}'
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.1.4; arm64-darwin24; v5.25.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 201
23
+ message: Created
24
+ headers:
25
+ Date:
26
+ - Mon, 06 Oct 2025 19:57:34 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Content-Length:
30
+ - '26'
31
+ Connection:
32
+ - keep-alive
33
+ Server:
34
+ - cloudflare
35
+ Cf-Ray:
36
+ - 98a7ba7fea91ead7-ORD
37
+ Cf-Cache-Status:
38
+ - DYNAMIC
39
+ Etag:
40
+ - W/"1a-pljHtlo127JYJR4E/RYOPb6ucbw"
41
+ Strict-Transport-Security:
42
+ - max-age=15552000; includeSubDomains
43
+ Vary:
44
+ - Origin, Accept-Encoding
45
+ Access-Control-Allow-Credentials:
46
+ - 'true'
47
+ Content-Security-Policy:
48
+ - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
49
+ https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
50
+ ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
51
+ Expect-Ct:
52
+ - max-age=0
53
+ Referrer-Policy:
54
+ - no-referrer
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ X-Dns-Prefetch-Control:
58
+ - 'off'
59
+ X-Download-Options:
60
+ - noopen
61
+ X-Frame-Options:
62
+ - SAMEORIGIN
63
+ X-Permitted-Cross-Domain-Policies:
64
+ - none
65
+ X-Request-Id:
66
+ - 6507807d-d3b9-4e8f-9ca8-f84c6f9c6eb4
67
+ X-Xss-Protection:
68
+ - '0'
69
+ Set-Cookie:
70
+ - _cfuvid=recfIuOTSO3jIxK5SUOdhHRRfTGoiOFOMgSbEpVIjpg-1759780654123-0.0.1.1-604800000;
71
+ path=/; domain=.workos.com; HttpOnly; Secure; SameSite=None
72
+ body:
73
+ encoding: UTF-8
74
+ string: '{"object":"organization_membership","id":"om_01H5JQDV7R7ATEYZDEG0W5PRYS","user_id":"user_01H5JQDV7R7ATEYZDEG0W5PRYS","organization_id":"organization_01H5JQDV7R7ATEYZDEG0W5PRYS","status":"active","role":{"slug":"member"}, "roles":[{"slug":"member"}, {"slug":"admin"}], "created_at":"2023-07-18T02:07:19.911Z","updated_at":"2023-07-18T02:07:19.911Z"}'
75
+ recorded_at: Mon, 06 Oct 2025 19:57:34 GMT
76
+ recorded_with: VCR 6.3.1
@@ -0,0 +1,76 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://api.workos.com/user_management/organization_memberships/om_01H5JQDV7R7ATEYZDEG0W5PRYS
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"id":"om_01H5JQDV7R7ATEYZDEG0W5PRYS","role_slugs":["admin","editor"]}'
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.1.4; arm64-darwin24; v5.25.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Tue, 07 Oct 2025 14:22:26 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Content-Length:
30
+ - '26'
31
+ Connection:
32
+ - keep-alive
33
+ Server:
34
+ - cloudflare
35
+ Cf-Ray:
36
+ - 98ae0cf66dd9344d-ORD
37
+ Cf-Cache-Status:
38
+ - DYNAMIC
39
+ Etag:
40
+ - W/"1a-pljHtlo127JYJR4E/RYOPb6ucbw"
41
+ Strict-Transport-Security:
42
+ - max-age=15552000; includeSubDomains
43
+ Vary:
44
+ - Origin, Accept-Encoding
45
+ Access-Control-Allow-Credentials:
46
+ - 'true'
47
+ Content-Security-Policy:
48
+ - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
49
+ https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
50
+ ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
51
+ Expect-Ct:
52
+ - max-age=0
53
+ Referrer-Policy:
54
+ - no-referrer
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ X-Dns-Prefetch-Control:
58
+ - 'off'
59
+ X-Download-Options:
60
+ - noopen
61
+ X-Frame-Options:
62
+ - SAMEORIGIN
63
+ X-Permitted-Cross-Domain-Policies:
64
+ - none
65
+ X-Request-Id:
66
+ - 92b6245b-40a8-4bdd-95d1-e32f6e9d1d70
67
+ X-Xss-Protection:
68
+ - '0'
69
+ Set-Cookie:
70
+ - _cfuvid=hq7zKar8D7SHPwNzTjLw.29beujgLQlq6cOYaWvYhEM-1759846946364-0.0.1.1-604800000;
71
+ path=/; domain=.workos.com; HttpOnly; Secure; SameSite=None
72
+ body:
73
+ encoding: UTF-8
74
+ string: '{"object":"organization_membership","id":"om_01H5JQDV7R7ATEYZDEG0W5PRYS","user_id":"user_01H5JQDV7R7ATEYZDEG0W5PRYS","organization_id":"organization_01H5JQDV7R7ATEYZDEG0W5PRYS","status":"active","role":{"slug":"admin"},"roles":[{"slug":"admin"},{"slug":"editor"}],"created_at":"2023-07-18T02:07:19.911Z","updated_at":"2023-07-18T02:07:19.911Z"}'
75
+ recorded_at: Tue, 07 Oct 2025 14:22:26 GMT
76
+ recorded_with: VCR 6.3.1
@@ -0,0 +1,76 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://api.workos.com/user_management/users/user_01K78B3ZB5B7119MYEXTQE5KNE
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"locale":"en-US"}'
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.1.4; arm64-darwin23; v5.25.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Sat, 11 Oct 2025 00:40:19 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Cf-Ray:
34
+ - 98ca4e2ece4df13a-ORD
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Etag:
38
+ - W/"14b-avtqVpGgr9LY49Al2c3gzw62Mbc"
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
+ - e9a5015e-44f0-4321-990a-66d2ba4a3e15
65
+ X-Xss-Protection:
66
+ - '0'
67
+ Set-Cookie:
68
+ - _cfuvid=IZBV12JrFjDy0rHr.O3LoIyI0iKnOHdGa_R3uam5bZI-1760143219077-0.0.1.1-604800000;
69
+ path=/; domain=.workos.com; HttpOnly; Secure; SameSite=None
70
+ Server:
71
+ - cloudflare
72
+ body:
73
+ encoding: ASCII-8BIT
74
+ string: '{"object":"user","id":"user_01K78B3ZB5B7119MYEXTQE5KNE","email":"test-locale@example.com","email_verified":false,"first_name":"Jane","last_name":"Doe","profile_picture_url":null,"metadata":{},"last_sign_in_at":null,"locale":"en-US","created_at":"2025-10-11T00:35:49.727Z","updated_at":"2025-10-11T00:40:19.051Z","external_id":null}'
75
+ recorded_at: Sat, 11 Oct 2025 00:40:19 GMT
76
+ recorded_with: VCR 6.3.1
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: 5.25.0
4
+ version: 5.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WorkOS
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-05 00:00:00.000000000 Z
11
+ date: 2025-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: encryptor
@@ -326,6 +326,7 @@ files:
326
326
  - spec/support/fixtures/vcr_cassettes/user_management/create_magic_auth/valid.yml
327
327
  - spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/invalid.yml
328
328
  - spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid.yml
329
+ - spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid_multiple_roles.yml
329
330
  - spec/support/fixtures/vcr_cassettes/user_management/create_password_reset/valid.yml
330
331
  - spec/support/fixtures/vcr_cassettes/user_management/create_user_invalid.yml
331
332
  - spec/support/fixtures/vcr_cassettes/user_management/create_user_valid.yml
@@ -377,8 +378,10 @@ files:
377
378
  - spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/valid.yml
378
379
  - spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/invalid.yml
379
380
  - spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/valid.yml
381
+ - spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/valid_multiple_roles.yml
380
382
  - spec/support/fixtures/vcr_cassettes/user_management/update_user/email.yml
381
383
  - spec/support/fixtures/vcr_cassettes/user_management/update_user/invalid.yml
384
+ - spec/support/fixtures/vcr_cassettes/user_management/update_user/locale.yml
382
385
  - spec/support/fixtures/vcr_cassettes/user_management/update_user/valid.yml
383
386
  - spec/support/fixtures/vcr_cassettes/user_management/update_user_external_id_null.yml
384
387
  - spec/support/fixtures/vcr_cassettes/user_management/update_user_password/invalid.yml
@@ -557,6 +560,7 @@ test_files:
557
560
  - spec/support/fixtures/vcr_cassettes/user_management/create_magic_auth/valid.yml
558
561
  - spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/invalid.yml
559
562
  - spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid.yml
563
+ - spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid_multiple_roles.yml
560
564
  - spec/support/fixtures/vcr_cassettes/user_management/create_password_reset/valid.yml
561
565
  - spec/support/fixtures/vcr_cassettes/user_management/create_user_invalid.yml
562
566
  - spec/support/fixtures/vcr_cassettes/user_management/create_user_valid.yml
@@ -608,8 +612,10 @@ test_files:
608
612
  - spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/valid.yml
609
613
  - spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/invalid.yml
610
614
  - spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/valid.yml
615
+ - spec/support/fixtures/vcr_cassettes/user_management/update_organization_membership/valid_multiple_roles.yml
611
616
  - spec/support/fixtures/vcr_cassettes/user_management/update_user/email.yml
612
617
  - spec/support/fixtures/vcr_cassettes/user_management/update_user/invalid.yml
618
+ - spec/support/fixtures/vcr_cassettes/user_management/update_user/locale.yml
613
619
  - spec/support/fixtures/vcr_cassettes/user_management/update_user/valid.yml
614
620
  - spec/support/fixtures/vcr_cassettes/user_management/update_user_external_id_null.yml
615
621
  - spec/support/fixtures/vcr_cassettes/user_management/update_user_password/invalid.yml