workos 9.1.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release-please.yml +42 -83
  3. data/.last-synced-sha +1 -1
  4. data/.oagen-manifest.json +74 -3
  5. data/.release-please-manifest.json +1 -1
  6. data/CHANGELOG.md +64 -0
  7. data/Gemfile.lock +2 -2
  8. data/lib/workos/authorization/create_group_role_assignment.rb +7 -0
  9. data/lib/workos/authorization/delete_group_role_assignments_by_criteria.rb +7 -0
  10. data/lib/workos/authorization/group_role_assignment.rb +37 -0
  11. data/lib/workos/authorization/group_role_assignment_list.rb +25 -0
  12. data/lib/workos/authorization/group_role_assignment_resource.rb +25 -0
  13. data/lib/workos/authorization/replace_group_role_assignment_entry.rb +7 -0
  14. data/lib/workos/authorization/replace_group_role_assignments.rb +18 -0
  15. data/lib/workos/authorization/user_role_assignment_resource.rb +1 -19
  16. data/lib/workos/authorization.rb +180 -0
  17. data/lib/workos/client.rb +8 -0
  18. data/lib/workos/client_api/client_api_token.rb +22 -0
  19. data/lib/workos/client_api/client_api_token_response.rb +18 -0
  20. data/lib/workos/client_api.rb +39 -0
  21. data/lib/workos/organization_membership/organization_membership.rb +3 -0
  22. data/lib/workos/organization_membership/user_organization_membership.rb +3 -0
  23. data/lib/workos/pipes/connected_account.rb +6 -0
  24. data/lib/workos/pipes/data_integrations_list_response_data.rb +3 -0
  25. data/lib/workos/pipes/data_integrations_list_response_data_connected_account.rb +6 -0
  26. data/lib/workos/pipes.rb +5 -5
  27. data/lib/workos/pipes_provider/configure_data_integration_body.rb +28 -0
  28. data/lib/workos/pipes_provider/data_integration_configuration_list_response.rb +22 -0
  29. data/lib/workos/pipes_provider/data_integration_configuration_response.rb +46 -0
  30. data/lib/workos/pipes_provider/data_integration_credentials.rb +31 -0
  31. data/lib/workos/pipes_provider.rb +68 -0
  32. data/lib/workos/types/connected_account_auth_method.rb +13 -0
  33. data/lib/workos/types/data_integration_access_token_response_error.rb +2 -2
  34. data/lib/workos/types/data_integration_credentials_credentials_type.rb +14 -0
  35. data/lib/workos/types/data_integrations_list_response_data_auth_methods.rb +9 -0
  36. data/lib/workos/types/data_integrations_list_response_data_connected_account_auth_method.rb +9 -0
  37. data/lib/workos/types/widget_session_token_scopes.rb +2 -1
  38. data/lib/workos/user_management.rb +1 -1
  39. data/lib/workos/version.rb +1 -1
  40. data/lib/workos/widgets/widget_session_token_response.rb +1 -12
  41. data/lib/workos.rb +2 -0
  42. data/rbi/workos/authorization.rbi +63 -0
  43. data/rbi/workos/authorization_code_session_authenticate_request.rbi +2 -2
  44. data/rbi/workos/client.rbi +6 -0
  45. data/rbi/workos/client_api.rbi +22 -0
  46. data/rbi/workos/client_api_token.rbi +30 -0
  47. data/rbi/workos/client_api_token_response.rbi +24 -0
  48. data/rbi/workos/configure_data_integration_body.rbi +42 -0
  49. data/rbi/workos/connected_account.rbi +12 -0
  50. data/rbi/workos/create_group_role_assignment.rbi +42 -0
  51. data/rbi/workos/data_integration_configuration_list_response.rbi +30 -0
  52. data/rbi/workos/data_integration_configuration_response.rbi +78 -0
  53. data/rbi/workos/data_integration_credentials.rbi +48 -0
  54. data/rbi/workos/data_integrations_list_response_data.rbi +6 -0
  55. data/rbi/workos/data_integrations_list_response_data_connected_account.rbi +12 -0
  56. data/rbi/workos/delete_group_role_assignments_by_criteria.rbi +42 -0
  57. data/rbi/workos/group_role_assignment.rbi +60 -0
  58. data/rbi/workos/group_role_assignment_resource.rbi +36 -0
  59. data/rbi/workos/organization_membership.rbi +6 -0
  60. data/rbi/workos/organization_membership_service.rbi +1 -1
  61. data/rbi/workos/pipes.rbi +2 -2
  62. data/rbi/workos/pipes_provider.rbi +34 -0
  63. data/rbi/workos/refresh_token_session_authenticate_request.rbi +2 -2
  64. data/rbi/workos/replace_group_role_assignment_entry.rbi +42 -0
  65. data/rbi/workos/replace_group_role_assignments.rbi +24 -0
  66. data/rbi/workos/user_management.rbi +3 -3
  67. data/rbi/workos/user_organization_membership.rbi +6 -0
  68. data/test/workos/test_authorization.rb +48 -0
  69. data/test/workos/test_client_api.rb +33 -0
  70. data/test/workos/test_model_round_trip.rb +222 -177
  71. data/test/workos/test_pipes.rb +3 -3
  72. data/test/workos/test_pipes_provider.rb +41 -0
  73. data/test/workos/test_user_management.rb +2 -2
  74. metadata +36 -1
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ # typed: strong
6
+
7
+ module WorkOS
8
+ class GroupRoleAssignment
9
+ sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
10
+ def initialize(json); end
11
+
12
+ sig { returns(String) }
13
+ def object; end
14
+
15
+ sig { params(value: String).returns(String) }
16
+ def object=(value); end
17
+
18
+ sig { returns(String) }
19
+ def id; end
20
+
21
+ sig { params(value: String).returns(String) }
22
+ def id=(value); end
23
+
24
+ sig { returns(String) }
25
+ def group_id; end
26
+
27
+ sig { params(value: String).returns(String) }
28
+ def group_id=(value); end
29
+
30
+ sig { returns(WorkOS::SlimRole) }
31
+ def role; end
32
+
33
+ sig { params(value: WorkOS::SlimRole).returns(WorkOS::SlimRole) }
34
+ def role=(value); end
35
+
36
+ sig { returns(WorkOS::GroupRoleAssignmentResource) }
37
+ def resource; end
38
+
39
+ sig { params(value: WorkOS::GroupRoleAssignmentResource).returns(WorkOS::GroupRoleAssignmentResource) }
40
+ def resource=(value); end
41
+
42
+ sig { returns(String) }
43
+ def created_at; end
44
+
45
+ sig { params(value: String).returns(String) }
46
+ def created_at=(value); end
47
+
48
+ sig { returns(String) }
49
+ def updated_at; end
50
+
51
+ sig { params(value: String).returns(String) }
52
+ def updated_at=(value); end
53
+
54
+ sig { returns(T::Hash[Symbol, T.untyped]) }
55
+ def to_h; end
56
+
57
+ sig { params(args: T.untyped).returns(String) }
58
+ def to_json(*args); end
59
+ end
60
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ # typed: strong
6
+
7
+ module WorkOS
8
+ class GroupRoleAssignmentResource
9
+ sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
10
+ def initialize(json); end
11
+
12
+ sig { returns(String) }
13
+ def id; end
14
+
15
+ sig { params(value: String).returns(String) }
16
+ def id=(value); end
17
+
18
+ sig { returns(String) }
19
+ def external_id; end
20
+
21
+ sig { params(value: String).returns(String) }
22
+ def external_id=(value); end
23
+
24
+ sig { returns(String) }
25
+ def resource_type_slug; end
26
+
27
+ sig { params(value: String).returns(String) }
28
+ def resource_type_slug=(value); end
29
+
30
+ sig { returns(T::Hash[Symbol, T.untyped]) }
31
+ def to_h; end
32
+
33
+ sig { params(args: T.untyped).returns(String) }
34
+ def to_json(*args); end
35
+ end
36
+ end
@@ -75,6 +75,12 @@ module WorkOS
75
75
  sig { params(value: WorkOS::SlimRole).returns(WorkOS::SlimRole) }
76
76
  def role=(value); end
77
77
 
78
+ sig { returns(T::Array[WorkOS::SlimRole]) }
79
+ def roles; end
80
+
81
+ sig { params(value: T::Array[WorkOS::SlimRole]).returns(T::Array[WorkOS::SlimRole]) }
82
+ def roles=(value); end
83
+
78
84
  sig { returns(WorkOS::User) }
79
85
  def user; end
80
86
 
@@ -43,7 +43,7 @@ module WorkOS
43
43
  statuses: T.nilable(T::Array[String]),
44
44
  user_id: T.nilable(String),
45
45
  request_options: T::Hash[Symbol, T.untyped]
46
- ).returns(T::Array[WorkOS::UserOrganizationMembership])
46
+ ).returns(WorkOS::Types::ListStruct)
47
47
  end
48
48
  def list_organization_memberships(before:, after:, limit:, order:, organization_id:, statuses:, user_id:, request_options:); end
49
49
 
data/rbi/workos/pipes.rbi CHANGED
@@ -22,13 +22,13 @@ module WorkOS
22
22
 
23
23
  sig do
24
24
  params(
25
- slug: String,
25
+ provider: String,
26
26
  user_id: String,
27
27
  organization_id: T.nilable(String),
28
28
  request_options: T::Hash[Symbol, T.untyped]
29
29
  ).returns(WorkOS::DataIntegrationAccessTokenResponse)
30
30
  end
31
- def create_data_integration_token(slug:, user_id:, organization_id:, request_options:); end
31
+ def get_access_token(provider:, user_id:, organization_id:, request_options:); end
32
32
 
33
33
  sig do
34
34
  params(
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ # typed: strong
6
+
7
+ module WorkOS
8
+ class PipesProvider
9
+ sig { params(client: WorkOS::BaseClient).void }
10
+ def initialize(client); end
11
+
12
+ sig do
13
+ params(
14
+ organization_id: String,
15
+ request_options: T::Hash[Symbol, T.untyped]
16
+ ).returns(WorkOS::DataIntegrationConfigurationListResponse)
17
+ end
18
+ def list_organization_data_integration_configurations(organization_id:, request_options:); end
19
+
20
+ sig do
21
+ params(
22
+ organization_id: String,
23
+ slug: String,
24
+ enabled: T.nilable(T::Boolean),
25
+ scopes: T.nilable(T::Array[String]),
26
+ client_id: T.nilable(String),
27
+ client_secret: T.nilable(String),
28
+ request_options: T::Hash[Symbol, T.untyped]
29
+ ).returns(WorkOS::DataIntegrationConfigurationResponse)
30
+ end
31
+ def update_organization_data_integration_configuration(organization_id:, slug:, enabled:, scopes:, client_id:, client_secret:, request_options:); end
32
+
33
+ end
34
+ end
@@ -15,10 +15,10 @@ module WorkOS
15
15
  sig { params(value: String).returns(String) }
16
16
  def client_id=(value); end
17
17
 
18
- sig { returns(String) }
18
+ sig { returns(T.nilable(String)) }
19
19
  def client_secret; end
20
20
 
21
- sig { params(value: String).returns(String) }
21
+ sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
22
22
  def client_secret=(value); end
23
23
 
24
24
  sig { returns(String) }
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ # typed: strong
6
+
7
+ module WorkOS
8
+ class ReplaceGroupRoleAssignmentEntry
9
+ sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
10
+ def initialize(json); end
11
+
12
+ sig { returns(String) }
13
+ def role_slug; end
14
+
15
+ sig { params(value: String).returns(String) }
16
+ def role_slug=(value); end
17
+
18
+ sig { returns(T.nilable(String)) }
19
+ def resource_id; end
20
+
21
+ sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
22
+ def resource_id=(value); end
23
+
24
+ sig { returns(T.nilable(String)) }
25
+ def resource_external_id; end
26
+
27
+ sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
28
+ def resource_external_id=(value); end
29
+
30
+ sig { returns(T.nilable(String)) }
31
+ def resource_type_slug; end
32
+
33
+ sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
34
+ def resource_type_slug=(value); end
35
+
36
+ sig { returns(T::Hash[Symbol, T.untyped]) }
37
+ def to_h; end
38
+
39
+ sig { params(args: T.untyped).returns(String) }
40
+ def to_json(*args); end
41
+ end
42
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ # typed: strong
6
+
7
+ module WorkOS
8
+ class ReplaceGroupRoleAssignments
9
+ sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
10
+ def initialize(json); end
11
+
12
+ sig { returns(T::Array[WorkOS::ReplaceGroupRoleAssignmentEntry]) }
13
+ def role_assignments; end
14
+
15
+ sig { params(value: T::Array[WorkOS::ReplaceGroupRoleAssignmentEntry]).returns(T::Array[WorkOS::ReplaceGroupRoleAssignmentEntry]) }
16
+ def role_assignments=(value); end
17
+
18
+ sig { returns(T::Hash[Symbol, T.untyped]) }
19
+ def to_h; end
20
+
21
+ sig { params(args: T.untyped).returns(String) }
22
+ def to_json(*args); end
23
+ end
24
+ end
@@ -48,9 +48,9 @@ module WorkOS
48
48
  sig do
49
49
  params(
50
50
  client_id: String,
51
- client_secret: String,
52
51
  grant_type: String,
53
52
  code: String,
53
+ client_secret: T.nilable(String),
54
54
  code_verifier: T.nilable(String),
55
55
  invitation_token: T.nilable(String),
56
56
  ip_address: T.nilable(String),
@@ -59,7 +59,7 @@ module WorkOS
59
59
  request_options: T::Hash[Symbol, T.untyped]
60
60
  ).returns(WorkOS::AuthenticateResponse)
61
61
  end
62
- def create_authenticate(client_id:, client_secret:, grant_type:, code:, code_verifier:, invitation_token:, ip_address:, device_id:, user_agent:, request_options:); end
62
+ def create_authenticate(client_id:, grant_type:, code:, client_secret:, code_verifier:, invitation_token:, ip_address:, device_id:, user_agent:, request_options:); end
63
63
 
64
64
  sig do
65
65
  params(
@@ -252,7 +252,7 @@ module WorkOS
252
252
  organization_id: T.nilable(String),
253
253
  email: T.nilable(String),
254
254
  request_options: T::Hash[Symbol, T.untyped]
255
- ).returns(T::Array[WorkOS::UserInvite])
255
+ ).returns(WorkOS::Types::ListStruct)
256
256
  end
257
257
  def list_invitations(before:, after:, limit:, order:, organization_id:, email:, request_options:); end
258
258
 
@@ -75,6 +75,12 @@ module WorkOS
75
75
  sig { params(value: WorkOS::SlimRole).returns(WorkOS::SlimRole) }
76
76
  def role=(value); end
77
77
 
78
+ sig { returns(T::Array[WorkOS::SlimRole]) }
79
+ def roles; end
80
+
81
+ sig { params(value: T::Array[WorkOS::SlimRole]).returns(T::Array[WorkOS::SlimRole]) }
82
+ def roles=(value); end
83
+
78
84
  sig { returns(WorkOS::User) }
79
85
  def user; end
80
86
 
@@ -11,6 +11,48 @@ class AuthorizationTest < Minitest::Test
11
11
  @client = WorkOS::Client.new(api_key: "sk_test_123")
12
12
  end
13
13
 
14
+ def test_list_group_role_assignments_returns_expected_result
15
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)})
16
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
17
+ result = @client.authorization.list_group_role_assignments(group_id: "stub")
18
+ assert_kind_of WorkOS::Types::ListStruct, result
19
+ end
20
+
21
+ def test_create_group_role_assignment_returns_expected_result
22
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)})
23
+ .to_return(body: "{}", status: 200)
24
+ result = @client.authorization.create_group_role_assignment(group_id: "stub", role_slug: "stub")
25
+ refute_nil result
26
+ end
27
+
28
+ def test_update_group_role_assignments_returns_expected_result
29
+ stub_request(:put, %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)})
30
+ .to_return(body: '{"data": [], "list_metadata": {}}', status: 200)
31
+ result = @client.authorization.update_group_role_assignments(group_id: "stub", role_assignments: [{}])
32
+ assert_kind_of WorkOS::Types::ListStruct, result
33
+ end
34
+
35
+ def test_delete_group_role_assignments_returns_expected_result
36
+ stub_request(:delete, %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)})
37
+ .to_return(body: "{}", status: 200)
38
+ result = @client.authorization.delete_group_role_assignments(group_id: "stub", role_slug: "stub")
39
+ assert_nil result
40
+ end
41
+
42
+ def test_get_group_role_assignment_returns_expected_result
43
+ stub_request(:get, %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments/stub(\?|\z)})
44
+ .to_return(body: "{}", status: 200)
45
+ result = @client.authorization.get_group_role_assignment(group_id: "stub", role_assignment_id: "stub")
46
+ refute_nil result
47
+ end
48
+
49
+ def test_delete_group_role_assignment_returns_expected_result
50
+ stub_request(:delete, %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments/stub(\?|\z)})
51
+ .to_return(body: "{}", status: 200)
52
+ result = @client.authorization.delete_group_role_assignment(group_id: "stub", role_assignment_id: "stub")
53
+ assert_nil result
54
+ end
55
+
14
56
  def test_check_returns_expected_result
15
57
  stub_request(:post, %r{\Ahttps://api\.workos\.com/authorization/organization_memberships/stub/check(\?|\z)})
16
58
  .with(body: hash_including("permission_slug" => "stub", "resource_id" => "stub"))
@@ -352,6 +394,12 @@ class AuthorizationTest < Minitest::Test
352
394
 
353
395
  # Parameterized authentication error tests (one per endpoint).
354
396
  [
397
+ {name: :list_group_role_assignments, verb: :get, url: %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)}, args: {group_id: "stub"}},
398
+ {name: :create_group_role_assignment, verb: :post, url: %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)}, args: {group_id: "stub", role_slug: "stub"}},
399
+ {name: :update_group_role_assignments, verb: :put, url: %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)}, args: {group_id: "stub", role_assignments: [{}]}},
400
+ {name: :delete_group_role_assignments, verb: :delete, url: %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments(\?|\z)}, args: {group_id: "stub", role_slug: "stub"}},
401
+ {name: :get_group_role_assignment, verb: :get, url: %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments/stub(\?|\z)}, args: {group_id: "stub", role_assignment_id: "stub"}},
402
+ {name: :delete_group_role_assignment, verb: :delete, url: %r{\Ahttps://api\.workos\.com/authorization/groups/stub/role_assignments/stub(\?|\z)}, args: {group_id: "stub", role_assignment_id: "stub"}},
355
403
  {name: :check, verb: :post, url: %r{\Ahttps://api\.workos\.com/authorization/organization_memberships/stub/check(\?|\z)}, args: {organization_membership_id: "stub", permission_slug: "stub", resource_target: WorkOS::Authorization::ResourceTargetById.new(resource_id: "stub")}},
356
404
  {name: :list_resources_for_membership, verb: :get, url: %r{\Ahttps://api\.workos\.com/authorization/organization_memberships/stub/resources(\?|\z)}, args: {organization_membership_id: "stub", permission_slug: "stub", parent_resource: WorkOS::Authorization::ParentResourceById.new(parent_resource_id: "stub")}},
357
405
  {name: :list_effective_permissions, verb: :get, url: %r{\Ahttps://api\.workos\.com/authorization/organization_memberships/stub/resources/stub/permissions(\?|\z)}, args: {organization_membership_id: "stub", resource_id: "stub"}},
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated by oagen. Do not edit.
4
+
5
+ require "test_helper"
6
+
7
+ class ClientApiTest < Minitest::Test
8
+ include FixtureHelper
9
+
10
+ def setup
11
+ @client = WorkOS::Client.new(api_key: "sk_test_123")
12
+ end
13
+
14
+ def test_create_token_returns_expected_result
15
+ stub_request(:post, %r{\Ahttps://api\.workos\.com/client/token(\?|\z)})
16
+ .to_return(body: "{}", status: 200)
17
+ result = @client.client_api.create_token(organization_id: "stub", user_id: "stub")
18
+ refute_nil result
19
+ end
20
+
21
+ # Parameterized authentication error tests (one per endpoint).
22
+ [
23
+ {name: :create_token, verb: :post, url: %r{\Ahttps://api\.workos\.com/client/token(\?|\z)}, args: {organization_id: "stub", user_id: "stub"}}
24
+ ].each do |spec|
25
+ define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do
26
+ stub_request(spec[:verb], spec[:url])
27
+ .to_return(body: '{"message": "Unauthorized"}', status: 401)
28
+ assert_raises(WorkOS::AuthenticationError) do
29
+ @client.client_api.send(spec[:name], **(spec[:args] || {}))
30
+ end
31
+ end
32
+ end
33
+ end