ssoready 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/lib/environment.rb +7 -0
  3. data/lib/gemconfig.rb +14 -0
  4. data/lib/requests.rb +159 -0
  5. data/lib/ssoready/management/client.rb +51 -0
  6. data/lib/ssoready/management/organizations/client.rb +247 -0
  7. data/lib/ssoready/management/saml_connections/client.rb +269 -0
  8. data/lib/ssoready/management/scim_directories/client.rb +330 -0
  9. data/lib/ssoready/management/setup_urls/client.rb +97 -0
  10. data/lib/ssoready/saml/client.rb +170 -0
  11. data/lib/ssoready/scim/client.rb +296 -0
  12. data/lib/ssoready/types/create_organization_response.rb +63 -0
  13. data/lib/ssoready/types/create_saml_connection_response.rb +63 -0
  14. data/lib/ssoready/types/create_scim_directory_response.rb +63 -0
  15. data/lib/ssoready/types/create_setup_url_response.rb +62 -0
  16. data/lib/ssoready/types/get_organization_response.rb +63 -0
  17. data/lib/ssoready/types/get_saml_connection_response.rb +63 -0
  18. data/lib/ssoready/types/get_saml_redirect_url_response.rb +56 -0
  19. data/lib/ssoready/types/get_scim_directory_response.rb +63 -0
  20. data/lib/ssoready/types/get_scim_group_response.rb +63 -0
  21. data/lib/ssoready/types/get_scim_user_response.rb +63 -0
  22. data/lib/ssoready/types/google_protobuf_any.rb +58 -0
  23. data/lib/ssoready/types/list_organizations_response.rb +73 -0
  24. data/lib/ssoready/types/list_saml_connections_response.rb +73 -0
  25. data/lib/ssoready/types/list_scim_directories_response.rb +73 -0
  26. data/lib/ssoready/types/list_scim_groups_response.rb +73 -0
  27. data/lib/ssoready/types/list_scim_users_response.rb +73 -0
  28. data/lib/ssoready/types/organization.rb +112 -0
  29. data/lib/ssoready/types/redeem_saml_access_code_response.rb +126 -0
  30. data/lib/ssoready/types/rotate_scim_directory_bearer_token_response.rb +63 -0
  31. data/lib/ssoready/types/saml_connection.rb +144 -0
  32. data/lib/ssoready/types/scim_directory.rb +104 -0
  33. data/lib/ssoready/types/scim_group.rb +114 -0
  34. data/lib/ssoready/types/scim_user.rb +102 -0
  35. data/lib/ssoready/types/status.rb +94 -0
  36. data/lib/ssoready/types/update_organization_response.rb +63 -0
  37. data/lib/ssoready/types/update_saml_connection_response.rb +63 -0
  38. data/lib/ssoready/types/update_scim_directory_response.rb +63 -0
  39. data/lib/ssoready.rb +68 -0
  40. data/lib/types_export.rb +29 -0
  41. metadata +163 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eae7d3a91ffaa2a24a93694e881ad865dd00f9cb4567f657d37335975029ab0a
4
+ data.tar.gz: 405f5ab9bb277715d81ab9810491133c1cdebada999d72b44a4c3e8b4caf2c8c
5
+ SHA512:
6
+ metadata.gz: f5ab8e8cade77237383875ecc23607ed64e7998cbcfd38f5b92ef7919ac3a0efabd63fea14661f8df3a37a852baf6e705df1455da6067518aa566f6ac5f15da2
7
+ data.tar.gz: 8edde9a2038c2af2f12cdbd63e75bb47098c5bd99c7ad9cfbeb45d1dba24b345e15593357abfd464e7e0b90c11f3b4dbf2f2dd87b40ac5990a924968ba12f7a4
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SSOReady
4
+ class Environment
5
+ DEFAULT = "https://api.ssoready.com"
6
+ end
7
+ end
data/lib/gemconfig.rb ADDED
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SSOReady
4
+ module Gemconfig
5
+ VERSION = ""
6
+ AUTHORS = [""].freeze
7
+ EMAIL = ""
8
+ SUMMARY = ""
9
+ DESCRIPTION = ""
10
+ HOMEPAGE = "https://github.com/ssoready/ssoready-ruby"
11
+ SOURCE_CODE_URI = "https://github.com/ssoready/ssoready-ruby"
12
+ CHANGELOG_URI = "https://github.com/ssoready/ssoready-ruby/blob/master/CHANGELOG.md"
13
+ end
14
+ end
data/lib/requests.rb ADDED
@@ -0,0 +1,159 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "environment"
4
+ require "faraday"
5
+ require "faraday/retry"
6
+ require "async/http/faraday"
7
+
8
+ module SSOReady
9
+ class RequestClient
10
+ # @return [Hash{String => String}]
11
+ attr_reader :headers
12
+ # @return [Faraday]
13
+ attr_reader :conn
14
+ # @return [String]
15
+ attr_reader :base_url
16
+ # @return [String]
17
+ attr_reader :default_environment
18
+
19
+ # @param environment [SSOReady::Environment]
20
+ # @param base_url [String]
21
+ # @param max_retries [Long] The number of times to retry a failed request, defaults to 2.
22
+ # @param timeout_in_seconds [Long]
23
+ # @param api_key [String]
24
+ # @return [SSOReady::RequestClient]
25
+ def initialize(environment: SSOReady::Environment::DEFAULT, base_url: nil, max_retries: nil,
26
+ timeout_in_seconds: nil, api_key: nil)
27
+ @default_environment = environment
28
+ @base_url = environment || base_url
29
+ @headers = {
30
+ "X-Fern-Language": "Ruby",
31
+ "X-Fern-SDK-Name": "ssoready",
32
+ "X-Fern-SDK-Version": "0.1.0",
33
+ "Authorization": %(Bearer #{api_key || ENV["SSOREADY_API_KEY"]})
34
+ }
35
+ @conn = Faraday.new(headers: @headers) do |faraday|
36
+ faraday.request :json
37
+ faraday.response :raise_error, include_request: true
38
+ faraday.request :retry, { max: max_retries } unless max_retries.nil?
39
+ faraday.options.timeout = timeout_in_seconds unless timeout_in_seconds.nil?
40
+ end
41
+ end
42
+
43
+ # @param request_options [SSOReady::RequestOptions]
44
+ # @return [String]
45
+ def get_url(request_options: nil)
46
+ request_options&.base_url || @default_environment || @base_url
47
+ end
48
+ end
49
+
50
+ class AsyncRequestClient
51
+ # @return [Hash{String => String}]
52
+ attr_reader :headers
53
+ # @return [Faraday]
54
+ attr_reader :conn
55
+ # @return [String]
56
+ attr_reader :base_url
57
+ # @return [String]
58
+ attr_reader :default_environment
59
+
60
+ # @param environment [SSOReady::Environment]
61
+ # @param base_url [String]
62
+ # @param max_retries [Long] The number of times to retry a failed request, defaults to 2.
63
+ # @param timeout_in_seconds [Long]
64
+ # @param api_key [String]
65
+ # @return [SSOReady::AsyncRequestClient]
66
+ def initialize(environment: SSOReady::Environment::DEFAULT, base_url: nil, max_retries: nil,
67
+ timeout_in_seconds: nil, api_key: nil)
68
+ @default_environment = environment
69
+ @base_url = environment || base_url
70
+ @headers = {
71
+ "X-Fern-Language": "Ruby",
72
+ "X-Fern-SDK-Name": "ssoready",
73
+ "X-Fern-SDK-Version": "0.1.0",
74
+ "Authorization": %(Bearer #{api_key || ENV["SSOREADY_API_KEY"]})
75
+ }
76
+ @conn = Faraday.new(headers: @headers) do |faraday|
77
+ faraday.request :json
78
+ faraday.response :raise_error, include_request: true
79
+ faraday.adapter :async_http
80
+ faraday.request :retry, { max: max_retries } unless max_retries.nil?
81
+ faraday.options.timeout = timeout_in_seconds unless timeout_in_seconds.nil?
82
+ end
83
+ end
84
+
85
+ # @param request_options [SSOReady::RequestOptions]
86
+ # @return [String]
87
+ def get_url(request_options: nil)
88
+ request_options&.base_url || @default_environment || @base_url
89
+ end
90
+ end
91
+
92
+ # Additional options for request-specific configuration when calling APIs via the
93
+ # SDK.
94
+ class RequestOptions
95
+ # @return [String]
96
+ attr_reader :base_url
97
+ # @return [String]
98
+ attr_reader :api_key
99
+ # @return [Hash{String => Object}]
100
+ attr_reader :additional_headers
101
+ # @return [Hash{String => Object}]
102
+ attr_reader :additional_query_parameters
103
+ # @return [Hash{String => Object}]
104
+ attr_reader :additional_body_parameters
105
+ # @return [Long]
106
+ attr_reader :timeout_in_seconds
107
+
108
+ # @param base_url [String]
109
+ # @param api_key [String]
110
+ # @param additional_headers [Hash{String => Object}]
111
+ # @param additional_query_parameters [Hash{String => Object}]
112
+ # @param additional_body_parameters [Hash{String => Object}]
113
+ # @param timeout_in_seconds [Long]
114
+ # @return [SSOReady::RequestOptions]
115
+ def initialize(base_url: nil, api_key: nil, additional_headers: nil, additional_query_parameters: nil,
116
+ additional_body_parameters: nil, timeout_in_seconds: nil)
117
+ @base_url = base_url
118
+ @api_key = api_key
119
+ @additional_headers = additional_headers
120
+ @additional_query_parameters = additional_query_parameters
121
+ @additional_body_parameters = additional_body_parameters
122
+ @timeout_in_seconds = timeout_in_seconds
123
+ end
124
+ end
125
+
126
+ # Additional options for request-specific configuration when calling APIs via the
127
+ # SDK.
128
+ class IdempotencyRequestOptions
129
+ # @return [String]
130
+ attr_reader :base_url
131
+ # @return [String]
132
+ attr_reader :api_key
133
+ # @return [Hash{String => Object}]
134
+ attr_reader :additional_headers
135
+ # @return [Hash{String => Object}]
136
+ attr_reader :additional_query_parameters
137
+ # @return [Hash{String => Object}]
138
+ attr_reader :additional_body_parameters
139
+ # @return [Long]
140
+ attr_reader :timeout_in_seconds
141
+
142
+ # @param base_url [String]
143
+ # @param api_key [String]
144
+ # @param additional_headers [Hash{String => Object}]
145
+ # @param additional_query_parameters [Hash{String => Object}]
146
+ # @param additional_body_parameters [Hash{String => Object}]
147
+ # @param timeout_in_seconds [Long]
148
+ # @return [SSOReady::IdempotencyRequestOptions]
149
+ def initialize(base_url: nil, api_key: nil, additional_headers: nil, additional_query_parameters: nil,
150
+ additional_body_parameters: nil, timeout_in_seconds: nil)
151
+ @base_url = base_url
152
+ @api_key = api_key
153
+ @additional_headers = additional_headers
154
+ @additional_query_parameters = additional_query_parameters
155
+ @additional_body_parameters = additional_body_parameters
156
+ @timeout_in_seconds = timeout_in_seconds
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "organizations/client"
5
+ require_relative "saml_connections/client"
6
+ require_relative "scim_directories/client"
7
+ require_relative "setup_urls/client"
8
+
9
+ module SSOReady
10
+ module Management
11
+ class Client
12
+ # @return [SSOReady::Management::OrganizationsClient]
13
+ attr_reader :organizations
14
+ # @return [SSOReady::Management::SAMLConnectionsClient]
15
+ attr_reader :saml_connections
16
+ # @return [SSOReady::Management::SCIMDirectoriesClient]
17
+ attr_reader :scim_directories
18
+ # @return [SSOReady::Management::SetupURLsClient]
19
+ attr_reader :setup_urls
20
+
21
+ # @param request_client [SSOReady::RequestClient]
22
+ # @return [SSOReady::Management::Client]
23
+ def initialize(request_client:)
24
+ @organizations = SSOReady::Management::OrganizationsClient.new(request_client: request_client)
25
+ @saml_connections = SSOReady::Management::SAMLConnectionsClient.new(request_client: request_client)
26
+ @scim_directories = SSOReady::Management::SCIMDirectoriesClient.new(request_client: request_client)
27
+ @setup_urls = SSOReady::Management::SetupURLsClient.new(request_client: request_client)
28
+ end
29
+ end
30
+
31
+ class AsyncClient
32
+ # @return [SSOReady::Management::AsyncOrganizationsClient]
33
+ attr_reader :organizations
34
+ # @return [SSOReady::Management::AsyncSAMLConnectionsClient]
35
+ attr_reader :saml_connections
36
+ # @return [SSOReady::Management::AsyncSCIMDirectoriesClient]
37
+ attr_reader :scim_directories
38
+ # @return [SSOReady::Management::AsyncSetupURLsClient]
39
+ attr_reader :setup_urls
40
+
41
+ # @param request_client [SSOReady::AsyncRequestClient]
42
+ # @return [SSOReady::Management::AsyncClient]
43
+ def initialize(request_client:)
44
+ @organizations = SSOReady::Management::AsyncOrganizationsClient.new(request_client: request_client)
45
+ @saml_connections = SSOReady::Management::AsyncSAMLConnectionsClient.new(request_client: request_client)
46
+ @scim_directories = SSOReady::Management::AsyncSCIMDirectoriesClient.new(request_client: request_client)
47
+ @setup_urls = SSOReady::Management::AsyncSetupURLsClient.new(request_client: request_client)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,247 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../requests"
4
+ require_relative "../../types/list_organizations_response"
5
+ require_relative "../../types/organization"
6
+ require_relative "../../types/create_organization_response"
7
+ require_relative "../../types/get_organization_response"
8
+ require_relative "../../types/update_organization_response"
9
+ require "async"
10
+
11
+ module SSOReady
12
+ module Management
13
+ class OrganizationsClient
14
+ # @return [SSOReady::RequestClient]
15
+ attr_reader :request_client
16
+
17
+ # @param request_client [SSOReady::RequestClient]
18
+ # @return [SSOReady::Management::OrganizationsClient]
19
+ def initialize(request_client:)
20
+ @request_client = request_client
21
+ end
22
+
23
+ # Gets a list of organizations.
24
+ #
25
+ # @param page_token [String] Pagination token. Leave empty to get the first page of results.
26
+ # @param request_options [SSOReady::RequestOptions]
27
+ # @return [SSOReady::ListOrganizationsResponse]
28
+ # @example
29
+ # api = SSOReady::Client.new(
30
+ # environment: SSOReady::Environment::DEFAULT,
31
+ # base_url: "https://api.example.com",
32
+ # api_key: "YOUR_AUTH_TOKEN"
33
+ # )
34
+ # api.management.organizations.list_organizations
35
+ def list_organizations(page_token: nil, request_options: nil)
36
+ response = @request_client.conn.get do |req|
37
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
38
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
39
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
40
+ req.params = { **(request_options&.additional_query_parameters || {}), "pageToken": page_token }.compact
41
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations"
42
+ end
43
+ SSOReady::ListOrganizationsResponse.from_json(json_object: response.body)
44
+ end
45
+
46
+ # Creates an organization.
47
+ #
48
+ # @param request [Hash] Request of type SSOReady::Organization, as a Hash
49
+ # * :id (String)
50
+ # * :environment_id (String)
51
+ # * :display_name (String)
52
+ # * :external_id (String)
53
+ # * :domains (Array<String>)
54
+ # @param request_options [SSOReady::RequestOptions]
55
+ # @return [SSOReady::CreateOrganizationResponse]
56
+ # @example
57
+ # api = SSOReady::Client.new(
58
+ # environment: SSOReady::Environment::DEFAULT,
59
+ # base_url: "https://api.example.com",
60
+ # api_key: "YOUR_AUTH_TOKEN"
61
+ # )
62
+ # api.management.organizations.create_organization(request: { })
63
+ def create_organization(request:, request_options: nil)
64
+ response = @request_client.conn.post do |req|
65
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
66
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
67
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
68
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
69
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations"
70
+ end
71
+ SSOReady::CreateOrganizationResponse.from_json(json_object: response.body)
72
+ end
73
+
74
+ # Gets an organization.
75
+ #
76
+ # @param id [String] ID of the organization to get.
77
+ # @param request_options [SSOReady::RequestOptions]
78
+ # @return [SSOReady::GetOrganizationResponse]
79
+ # @example
80
+ # api = SSOReady::Client.new(
81
+ # environment: SSOReady::Environment::DEFAULT,
82
+ # base_url: "https://api.example.com",
83
+ # api_key: "YOUR_AUTH_TOKEN"
84
+ # )
85
+ # api.management.organizations.get_organization(id: "id")
86
+ def get_organization(id:, request_options: nil)
87
+ response = @request_client.conn.get do |req|
88
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
89
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
90
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
91
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations/#{id}"
92
+ end
93
+ SSOReady::GetOrganizationResponse.from_json(json_object: response.body)
94
+ end
95
+
96
+ # Updates an organization.
97
+ #
98
+ # @param id [String] ID of the organization to update.
99
+ # @param request [Hash] Request of type SSOReady::Organization, as a Hash
100
+ # * :id (String)
101
+ # * :environment_id (String)
102
+ # * :display_name (String)
103
+ # * :external_id (String)
104
+ # * :domains (Array<String>)
105
+ # @param request_options [SSOReady::RequestOptions]
106
+ # @return [SSOReady::UpdateOrganizationResponse]
107
+ # @example
108
+ # api = SSOReady::Client.new(
109
+ # environment: SSOReady::Environment::DEFAULT,
110
+ # base_url: "https://api.example.com",
111
+ # api_key: "YOUR_AUTH_TOKEN"
112
+ # )
113
+ # api.management.organizations.update_organization(id: "id", request: { })
114
+ def update_organization(id:, request:, request_options: nil)
115
+ response = @request_client.conn.patch do |req|
116
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
117
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
118
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
119
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
120
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations/#{id}"
121
+ end
122
+ SSOReady::UpdateOrganizationResponse.from_json(json_object: response.body)
123
+ end
124
+ end
125
+
126
+ class AsyncOrganizationsClient
127
+ # @return [SSOReady::AsyncRequestClient]
128
+ attr_reader :request_client
129
+
130
+ # @param request_client [SSOReady::AsyncRequestClient]
131
+ # @return [SSOReady::Management::AsyncOrganizationsClient]
132
+ def initialize(request_client:)
133
+ @request_client = request_client
134
+ end
135
+
136
+ # Gets a list of organizations.
137
+ #
138
+ # @param page_token [String] Pagination token. Leave empty to get the first page of results.
139
+ # @param request_options [SSOReady::RequestOptions]
140
+ # @return [SSOReady::ListOrganizationsResponse]
141
+ # @example
142
+ # api = SSOReady::Client.new(
143
+ # environment: SSOReady::Environment::DEFAULT,
144
+ # base_url: "https://api.example.com",
145
+ # api_key: "YOUR_AUTH_TOKEN"
146
+ # )
147
+ # api.management.organizations.list_organizations
148
+ def list_organizations(page_token: nil, request_options: nil)
149
+ Async do
150
+ response = @request_client.conn.get do |req|
151
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
152
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
153
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
154
+ req.params = { **(request_options&.additional_query_parameters || {}), "pageToken": page_token }.compact
155
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations"
156
+ end
157
+ SSOReady::ListOrganizationsResponse.from_json(json_object: response.body)
158
+ end
159
+ end
160
+
161
+ # Creates an organization.
162
+ #
163
+ # @param request [Hash] Request of type SSOReady::Organization, as a Hash
164
+ # * :id (String)
165
+ # * :environment_id (String)
166
+ # * :display_name (String)
167
+ # * :external_id (String)
168
+ # * :domains (Array<String>)
169
+ # @param request_options [SSOReady::RequestOptions]
170
+ # @return [SSOReady::CreateOrganizationResponse]
171
+ # @example
172
+ # api = SSOReady::Client.new(
173
+ # environment: SSOReady::Environment::DEFAULT,
174
+ # base_url: "https://api.example.com",
175
+ # api_key: "YOUR_AUTH_TOKEN"
176
+ # )
177
+ # api.management.organizations.create_organization(request: { })
178
+ def create_organization(request:, request_options: nil)
179
+ Async do
180
+ response = @request_client.conn.post do |req|
181
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
182
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
183
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
184
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
185
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations"
186
+ end
187
+ SSOReady::CreateOrganizationResponse.from_json(json_object: response.body)
188
+ end
189
+ end
190
+
191
+ # Gets an organization.
192
+ #
193
+ # @param id [String] ID of the organization to get.
194
+ # @param request_options [SSOReady::RequestOptions]
195
+ # @return [SSOReady::GetOrganizationResponse]
196
+ # @example
197
+ # api = SSOReady::Client.new(
198
+ # environment: SSOReady::Environment::DEFAULT,
199
+ # base_url: "https://api.example.com",
200
+ # api_key: "YOUR_AUTH_TOKEN"
201
+ # )
202
+ # api.management.organizations.get_organization(id: "id")
203
+ def get_organization(id:, request_options: nil)
204
+ Async do
205
+ response = @request_client.conn.get do |req|
206
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
207
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
208
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
209
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations/#{id}"
210
+ end
211
+ SSOReady::GetOrganizationResponse.from_json(json_object: response.body)
212
+ end
213
+ end
214
+
215
+ # Updates an organization.
216
+ #
217
+ # @param id [String] ID of the organization to update.
218
+ # @param request [Hash] Request of type SSOReady::Organization, as a Hash
219
+ # * :id (String)
220
+ # * :environment_id (String)
221
+ # * :display_name (String)
222
+ # * :external_id (String)
223
+ # * :domains (Array<String>)
224
+ # @param request_options [SSOReady::RequestOptions]
225
+ # @return [SSOReady::UpdateOrganizationResponse]
226
+ # @example
227
+ # api = SSOReady::Client.new(
228
+ # environment: SSOReady::Environment::DEFAULT,
229
+ # base_url: "https://api.example.com",
230
+ # api_key: "YOUR_AUTH_TOKEN"
231
+ # )
232
+ # api.management.organizations.update_organization(id: "id", request: { })
233
+ def update_organization(id:, request:, request_options: nil)
234
+ Async do
235
+ response = @request_client.conn.patch do |req|
236
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
237
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
238
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
239
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
240
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/organizations/#{id}"
241
+ end
242
+ SSOReady::UpdateOrganizationResponse.from_json(json_object: response.body)
243
+ end
244
+ end
245
+ end
246
+ end
247
+ end