clerk-sdk-ruby 8.0.0 → 8.0.1

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 (243) hide show
  1. checksums.yaml +4 -4
  2. data/lib/clerk/actortokens.rb +1 -1
  3. data/lib/clerk/billing.rb +336 -0
  4. data/lib/clerk/directories.rb +1534 -0
  5. data/lib/clerk/domains.rb +7 -4
  6. data/lib/clerk/models/components/amount_off.rb +44 -0
  7. data/lib/clerk/models/components/amount_off.rbi +19 -0
  8. data/lib/clerk/models/components/applycommercediscountrequest.rb +32 -0
  9. data/lib/clerk/models/components/applycommercediscountrequest.rbi +13 -0
  10. data/lib/clerk/models/components/automation_disposition.rb +21 -0
  11. data/lib/clerk/models/components/automation_disposition.rbi +11 -0
  12. data/lib/clerk/models/components/billingstatement.rb +1 -1
  13. data/lib/clerk/models/components/{group.rb → billingstatement_group.rb} +1 -1
  14. data/lib/clerk/models/components/{group.rbi → billingstatement_group.rbi} +2 -2
  15. data/lib/clerk/models/components/biometriccredential.rb +72 -0
  16. data/lib/clerk/models/components/biometriccredential.rbi +33 -0
  17. data/lib/clerk/models/components/biometriccredential_algorithm.rb +19 -0
  18. data/lib/clerk/models/components/biometriccredential_algorithm.rbi +11 -0
  19. data/lib/clerk/models/components/biometriccredential_list.rb +36 -0
  20. data/lib/clerk/models/components/biometriccredential_list.rbi +15 -0
  21. data/lib/clerk/models/components/biometriccredential_object.rb +19 -0
  22. data/lib/clerk/models/components/biometriccredential_object.rbi +11 -0
  23. data/lib/clerk/models/components/biometriccredential_platform.rb +20 -0
  24. data/lib/clerk/models/components/biometriccredential_platform.rbi +11 -0
  25. data/lib/clerk/models/components/biometriccredential_status.rb +20 -0
  26. data/lib/clerk/models/components/biometriccredential_status.rbi +11 -0
  27. data/lib/clerk/models/components/commercediscountredemptionresponse.rb +93 -0
  28. data/lib/clerk/models/components/commercediscountredemptionresponse.rbi +43 -0
  29. data/lib/clerk/models/components/commercediscountredemptionresponse_amount.rb +45 -0
  30. data/lib/clerk/models/components/commercediscountredemptionresponse_amount.rbi +19 -0
  31. data/lib/clerk/models/components/commercediscountredemptionresponse_object.rb +19 -0
  32. data/lib/clerk/models/components/commercediscountredemptionresponse_object.rbi +11 -0
  33. data/lib/clerk/models/components/commercediscountredemptionresponse_status.rb +21 -0
  34. data/lib/clerk/models/components/commercediscountredemptionresponse_status.rbi +11 -0
  35. data/lib/clerk/models/components/createbillingpricerequest.rb +2 -2
  36. data/lib/clerk/models/components/directory.rb +80 -0
  37. data/lib/clerk/models/components/directory.rbi +37 -0
  38. data/lib/clerk/models/components/directory_custom_attribute.rb +52 -0
  39. data/lib/clerk/models/components/directory_custom_attribute.rbi +23 -0
  40. data/lib/clerk/models/components/directory_group.rb +36 -0
  41. data/lib/clerk/models/components/directory_group.rbi +15 -0
  42. data/lib/clerk/models/components/directory_list.rb +36 -0
  43. data/lib/clerk/models/components/directory_list.rbi +15 -0
  44. data/lib/clerk/models/components/directory_object.rb +19 -0
  45. data/lib/clerk/models/components/directory_object.rbi +11 -0
  46. data/lib/clerk/models/components/directorygrouprolemapping.rb +76 -0
  47. data/lib/clerk/models/components/directorygrouprolemapping.rbi +35 -0
  48. data/lib/clerk/models/components/directorygrouprolemapping_deleted.rb +43 -0
  49. data/lib/clerk/models/components/directorygrouprolemapping_deleted.rbi +17 -0
  50. data/lib/clerk/models/components/directorygrouprolemapping_deleted_object.rb +19 -0
  51. data/lib/clerk/models/components/directorygrouprolemapping_deleted_object.rbi +11 -0
  52. data/lib/clerk/models/components/directorygrouprolemapping_list.rb +36 -0
  53. data/lib/clerk/models/components/directorygrouprolemapping_list.rbi +15 -0
  54. data/lib/clerk/models/components/directorygrouprolemapping_object.rb +19 -0
  55. data/lib/clerk/models/components/directorygrouprolemapping_object.rbi +11 -0
  56. data/lib/clerk/models/components/dnstarget.rb +49 -0
  57. data/lib/clerk/models/components/dnstarget.rbi +21 -0
  58. data/lib/clerk/models/components/domain.rb +7 -2
  59. data/lib/clerk/models/components/domain.rbi +2 -0
  60. data/lib/clerk/models/components/effect.rb +20 -0
  61. data/lib/clerk/models/components/{platform.rbi → effect.rbi} +2 -2
  62. data/lib/clerk/models/components/enterpriseconnection_custom_attribute.rb +5 -1
  63. data/lib/clerk/models/components/enterpriseconnection_custom_attribute.rbi +2 -0
  64. data/lib/clerk/models/components/instance.rb +13 -1
  65. data/lib/clerk/models/components/instance.rbi +6 -0
  66. data/lib/clerk/models/components/instanceprotect.rb +10 -2
  67. data/lib/clerk/models/components/instanceprotect.rbi +4 -0
  68. data/lib/clerk/models/components/instancesettings.rb +1 -1
  69. data/lib/clerk/models/components/level.rb +21 -0
  70. data/lib/clerk/models/components/{algorithm.rbi → level.rbi} +2 -2
  71. data/lib/clerk/models/components/oauthapplication.rb +7 -2
  72. data/lib/clerk/models/components/oauthapplication.rbi +2 -0
  73. data/lib/clerk/models/components/oauthapplicationsettings.rb +11 -2
  74. data/lib/clerk/models/components/oauthapplicationsettings.rbi +4 -0
  75. data/lib/clerk/models/components/oauthapplicationwithsecret.rb +7 -2
  76. data/lib/clerk/models/components/oauthapplicationwithsecret.rbi +2 -0
  77. data/lib/clerk/models/components/organization.rb +6 -1
  78. data/lib/clerk/models/components/organization.rbi +2 -0
  79. data/lib/clerk/models/components/organizationmembership_organization.rb +6 -1
  80. data/lib/clerk/models/components/organizationmembership_organization.rbi +2 -0
  81. data/lib/clerk/models/components/organizationwithlogo.rb +6 -1
  82. data/lib/clerk/models/components/organizationwithlogo.rbi +2 -0
  83. data/lib/clerk/models/components/record_type.rb +20 -0
  84. data/lib/clerk/models/components/record_type.rbi +11 -0
  85. data/lib/clerk/models/components/reverification.rb +74 -0
  86. data/lib/clerk/models/components/reverification.rbi +31 -0
  87. data/lib/clerk/models/components/reverification_object.rb +20 -0
  88. data/lib/clerk/models/components/reverification_object.rbi +11 -0
  89. data/lib/clerk/models/components/reverification_status.rb +21 -0
  90. data/lib/clerk/models/components/reverification_status.rbi +11 -0
  91. data/lib/clerk/models/components/scim_group.rb +36 -0
  92. data/lib/clerk/models/components/scim_group.rbi +15 -0
  93. data/lib/clerk/models/components/scimdirectory.rb +8 -8
  94. data/lib/clerk/models/components/scimdirectory_custom_attribute.rb +5 -1
  95. data/lib/clerk/models/components/scimdirectory_custom_attribute.rbi +2 -0
  96. data/lib/clerk/models/components/scimdirectory_list.rb +2 -2
  97. data/lib/clerk/models/components/scimgrouprolemapping.rb +14 -2
  98. data/lib/clerk/models/components/scimgrouprolemapping.rbi +6 -0
  99. data/lib/clerk/models/components/scimusermetadata.rb +64 -0
  100. data/lib/clerk/models/components/scimusermetadata.rbi +27 -0
  101. data/lib/clerk/models/components/scimusermetadata_group.rb +36 -0
  102. data/lib/clerk/models/components/scimusermetadata_group.rbi +15 -0
  103. data/lib/clerk/models/components/source.rb +21 -0
  104. data/lib/clerk/models/components/source.rbi +11 -0
  105. data/lib/clerk/models/components/trusteddevice.rb +2 -2
  106. data/lib/clerk/models/components/{algorithm.rb → trusteddevice_algorithm.rb} +1 -1
  107. data/lib/clerk/models/components/trusteddevice_algorithm.rbi +11 -0
  108. data/lib/clerk/models/components/{platform.rb → trusteddevice_platform.rb} +1 -1
  109. data/lib/clerk/models/components/trusteddevice_platform.rbi +11 -0
  110. data/lib/clerk/models/components/user.rb +16 -3
  111. data/lib/clerk/models/components/user.rbi +4 -0
  112. data/lib/clerk/models/components/user_directory.rb +65 -0
  113. data/lib/clerk/models/components/user_directory.rbi +27 -0
  114. data/lib/clerk/models/components/user_scim.rb +27 -6
  115. data/lib/clerk/models/components/user_scim.rbi +10 -0
  116. data/lib/clerk/models/components.rb +38 -3
  117. data/lib/clerk/models/operations/adddomain_request.rb +3 -6
  118. data/lib/clerk/models/operations/applybillingsubscriptionitemdiscount_request.rb +36 -0
  119. data/lib/clerk/models/operations/applybillingsubscriptionitemdiscount_request.rbi +15 -0
  120. data/lib/clerk/models/operations/applybillingsubscriptionitemdiscount_response.rb +44 -0
  121. data/lib/clerk/models/operations/applybillingsubscriptionitemdiscount_response.rbi +19 -0
  122. data/lib/clerk/models/operations/clerkidpoauthaccesstoken.rb +5 -1
  123. data/lib/clerk/models/operations/clerkidpoauthaccesstoken.rbi +2 -0
  124. data/lib/clerk/models/operations/createdirectory_group_role_mapping.rb +52 -0
  125. data/lib/clerk/models/operations/createdirectory_group_role_mapping.rbi +23 -0
  126. data/lib/clerk/models/operations/createdirectory_request.rb +44 -0
  127. data/lib/clerk/models/operations/createdirectory_request.rbi +19 -0
  128. data/lib/clerk/models/operations/createdirectory_response.rb +44 -0
  129. data/lib/clerk/models/operations/createdirectory_response.rbi +19 -0
  130. data/lib/clerk/models/operations/createdirectorygrouprolemapping_request.rb +36 -0
  131. data/lib/clerk/models/operations/createdirectorygrouprolemapping_request.rbi +15 -0
  132. data/lib/clerk/models/operations/createdirectorygrouprolemapping_requestbody.rb +46 -0
  133. data/lib/clerk/models/operations/createdirectorygrouprolemapping_requestbody.rbi +19 -0
  134. data/lib/clerk/models/operations/createdirectorygrouprolemapping_response.rb +44 -0
  135. data/lib/clerk/models/operations/createdirectorygrouprolemapping_response.rbi +19 -0
  136. data/lib/clerk/models/operations/createenterpriseconnection_custom_attribute.rb +5 -1
  137. data/lib/clerk/models/operations/createenterpriseconnection_custom_attribute.rbi +2 -0
  138. data/lib/clerk/models/operations/createoauthapplication_request.rb +6 -2
  139. data/lib/clerk/models/operations/createoauthapplication_request.rbi +2 -0
  140. data/lib/clerk/models/operations/{group_role_mapping.rb → createscimdirectory_group_role_mapping.rb} +1 -1
  141. data/lib/clerk/models/operations/{group_role_mapping.rbi → createscimdirectory_group_role_mapping.rbi} +2 -2
  142. data/lib/clerk/models/operations/createscimdirectory_request.rb +4 -4
  143. data/lib/clerk/models/operations/createscimdirectory_response.rb +1 -1
  144. data/lib/clerk/models/operations/createscimgrouprolemapping_request.rb +1 -1
  145. data/lib/clerk/models/operations/createuser_request.rb +8 -2
  146. data/lib/clerk/models/operations/createuser_request.rbi +2 -0
  147. data/lib/clerk/models/operations/deletedirectory_request.rb +32 -0
  148. data/lib/clerk/models/operations/deletedirectory_request.rbi +13 -0
  149. data/lib/clerk/models/operations/deletedirectory_response.rb +44 -0
  150. data/lib/clerk/models/operations/deletedirectory_response.rbi +19 -0
  151. data/lib/clerk/models/operations/deletedirectorygrouprolemapping_request.rb +36 -0
  152. data/lib/clerk/models/operations/deletedirectorygrouprolemapping_request.rbi +15 -0
  153. data/lib/clerk/models/operations/deletedirectorygrouprolemapping_response.rb +44 -0
  154. data/lib/clerk/models/operations/deletedirectorygrouprolemapping_response.rbi +19 -0
  155. data/lib/clerk/models/operations/deletedomain_request.rb +1 -1
  156. data/lib/clerk/models/operations/deletescimdirectory_request.rb +1 -1
  157. data/lib/clerk/models/operations/deletescimgrouprolemapping_request.rb +1 -1
  158. data/lib/clerk/models/operations/getdirectory_request.rb +32 -0
  159. data/lib/clerk/models/operations/getdirectory_request.rbi +13 -0
  160. data/lib/clerk/models/operations/getdirectory_response.rb +44 -0
  161. data/lib/clerk/models/operations/getdirectory_response.rbi +19 -0
  162. data/lib/clerk/models/operations/getreverification_request.rb +36 -0
  163. data/lib/clerk/models/operations/getreverification_request.rbi +15 -0
  164. data/lib/clerk/models/operations/getreverification_response.rb +44 -0
  165. data/lib/clerk/models/operations/getreverification_response.rbi +19 -0
  166. data/lib/clerk/models/operations/getscimdirectory_request.rb +1 -1
  167. data/lib/clerk/models/operations/getscimdirectory_response.rb +1 -1
  168. data/lib/clerk/models/operations/getuserlist_request.rb +13 -1
  169. data/lib/clerk/models/operations/getuserlist_request.rbi +2 -0
  170. data/lib/clerk/models/operations/listdirectories_request.rb +39 -0
  171. data/lib/clerk/models/operations/listdirectories_request.rbi +15 -0
  172. data/lib/clerk/models/operations/listdirectories_response.rb +44 -0
  173. data/lib/clerk/models/operations/listdirectories_response.rbi +19 -0
  174. data/lib/clerk/models/operations/listdirectorygrouprolemappings_request.rb +32 -0
  175. data/lib/clerk/models/operations/listdirectorygrouprolemappings_request.rbi +13 -0
  176. data/lib/clerk/models/operations/listdirectorygrouprolemappings_response.rb +44 -0
  177. data/lib/clerk/models/operations/listdirectorygrouprolemappings_response.rbi +19 -0
  178. data/lib/clerk/models/operations/listoauthapplications_request.rb +2 -0
  179. data/lib/clerk/models/operations/listscimdirectories_response.rb +1 -1
  180. data/lib/clerk/models/operations/listscimgrouprolemappings_request.rb +1 -1
  181. data/lib/clerk/models/operations/listuserbiometriccredentials_request.rb +32 -0
  182. data/lib/clerk/models/operations/listuserbiometriccredentials_request.rbi +13 -0
  183. data/lib/clerk/models/operations/listuserbiometriccredentials_response.rb +44 -0
  184. data/lib/clerk/models/operations/listuserbiometriccredentials_response.rbi +19 -0
  185. data/lib/clerk/models/operations/removebillingsubscriptionitemdiscount_request.rb +36 -0
  186. data/lib/clerk/models/operations/removebillingsubscriptionitemdiscount_request.rbi +15 -0
  187. data/lib/clerk/models/operations/removebillingsubscriptionitemdiscount_response.rb +44 -0
  188. data/lib/clerk/models/operations/removebillingsubscriptionitemdiscount_response.rbi +19 -0
  189. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_mapping.rb +40 -0
  190. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_mapping.rbi +17 -0
  191. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_request.rb +36 -0
  192. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_request.rbi +15 -0
  193. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_requestbody.rb +32 -0
  194. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_requestbody.rbi +13 -0
  195. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_response.rb +44 -0
  196. data/lib/clerk/models/operations/replacedirectorygrouprolemappings_response.rbi +19 -0
  197. data/lib/clerk/models/operations/{mapping.rb → replacescimgrouprolemappings_mapping.rb} +1 -1
  198. data/lib/clerk/models/operations/{mapping.rbi → replacescimgrouprolemappings_mapping.rbi} +2 -2
  199. data/lib/clerk/models/operations/replacescimgrouprolemappings_request.rb +1 -1
  200. data/lib/clerk/models/operations/replacescimgrouprolemappings_requestbody.rb +1 -1
  201. data/lib/clerk/models/operations/revokeuserbiometriccredential_request.rb +36 -0
  202. data/lib/clerk/models/operations/revokeuserbiometriccredential_request.rbi +15 -0
  203. data/lib/clerk/models/operations/revokeuserbiometriccredential_response.rb +44 -0
  204. data/lib/clerk/models/operations/revokeuserbiometriccredential_response.rbi +19 -0
  205. data/lib/clerk/models/operations/rotatedirectoryapikey_request.rb +32 -0
  206. data/lib/clerk/models/operations/rotatedirectoryapikey_request.rbi +13 -0
  207. data/lib/clerk/models/operations/rotatedirectoryapikey_response.rb +44 -0
  208. data/lib/clerk/models/operations/rotatedirectoryapikey_response.rbi +19 -0
  209. data/lib/clerk/models/operations/rotatescimdirectoryapikey_request.rb +1 -1
  210. data/lib/clerk/models/operations/rotatescimdirectoryapikey_response.rb +1 -1
  211. data/lib/clerk/models/operations/updatedirectory_request.rb +36 -0
  212. data/lib/clerk/models/operations/updatedirectory_request.rbi +15 -0
  213. data/lib/clerk/models/operations/updatedirectory_requestbody.rb +49 -0
  214. data/lib/clerk/models/operations/updatedirectory_requestbody.rbi +21 -0
  215. data/lib/clerk/models/operations/updatedirectory_response.rb +44 -0
  216. data/lib/clerk/models/operations/updatedirectory_response.rbi +19 -0
  217. data/lib/clerk/models/operations/updateenterpriseconnection_custom_attribute.rb +5 -1
  218. data/lib/clerk/models/operations/updateenterpriseconnection_custom_attribute.rbi +2 -0
  219. data/lib/clerk/models/operations/updateinstance_request.rb +15 -5
  220. data/lib/clerk/models/operations/updateinstance_request.rbi +6 -2
  221. data/lib/clerk/models/operations/updateinstanceoauthapplicationsettings_request.rb +11 -2
  222. data/lib/clerk/models/operations/updateinstanceoauthapplicationsettings_request.rbi +4 -0
  223. data/lib/clerk/models/operations/updateinstanceprotect_request.rb +1 -1
  224. data/lib/clerk/models/operations/updateoauthapplication_requestbody.rb +9 -5
  225. data/lib/clerk/models/operations/updateoauthapplication_requestbody.rbi +4 -2
  226. data/lib/clerk/models/operations/updateorganization_requestbody.rb +6 -1
  227. data/lib/clerk/models/operations/updateorganization_requestbody.rbi +2 -0
  228. data/lib/clerk/models/operations/updatescimdirectory_request.rb +1 -1
  229. data/lib/clerk/models/operations/updatescimdirectory_requestbody.rb +4 -4
  230. data/lib/clerk/models/operations/updatescimdirectory_response.rb +1 -1
  231. data/lib/clerk/models/operations/updateuser_requestbody.rb +1 -1
  232. data/lib/clerk/models/operations.rb +37 -2
  233. data/lib/clerk/openapiclient.rb +2 -1
  234. data/lib/clerk/phonenumbers.rb +10 -2
  235. data/lib/clerk/scimdirectories.rb +23 -20
  236. data/lib/clerk/sdk.rb +21 -1
  237. data/lib/clerk/sdkconfiguration.rb +3 -3
  238. data/lib/clerk/sessions.rb +146 -0
  239. data/lib/clerk/users.rb +329 -1
  240. data/lib/clerk/utils/utils.rb +6 -2
  241. data/lib/clerk_sdk_ruby.rb +1 -0
  242. data/test/clerk/org_permissions_v2_test.rb +130 -0
  243. metadata +154 -12
@@ -0,0 +1,1534 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: false
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'faraday/retry'
9
+ require_relative 'sdk_hooks/hooks'
10
+ require_relative 'utils/retries'
11
+
12
+ module Clerk
13
+
14
+ class Directories
15
+
16
+
17
+
18
+
19
+
20
+ def initialize(sdk_config)
21
+ @sdk_configuration = sdk_config
22
+
23
+ end
24
+
25
+
26
+ def get_url(base_url:, url_variables: nil)
27
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
28
+
29
+ if base_url.nil?
30
+ base_url = sd_base_url
31
+ end
32
+
33
+ if url_variables.nil?
34
+ url_variables = sd_options
35
+ end
36
+
37
+ return Utils.template_url base_url, url_variables
38
+ end
39
+
40
+
41
+
42
+
43
+
44
+ def list(limit: nil, offset: nil, retries: nil, timeout_ms: nil, http_headers: nil)
45
+ # list - List all directories
46
+ # Returns a list of all directories for the instance.
47
+ request = Models::Operations::ListDirectoriesRequest.new(
48
+ limit: limit,
49
+ offset: offset
50
+ )
51
+ url, params = @sdk_configuration.get_server_details
52
+ base_url = Utils.template_url(url, params)
53
+ url = "#{base_url}/directories"
54
+ headers = {}
55
+
56
+ query_params = Utils.get_query_params(Models::Operations::ListDirectoriesRequest, request, nil)
57
+ headers['Accept'] = 'application/json'
58
+ headers['user-agent'] = @sdk_configuration.user_agent
59
+ retries ||= @sdk_configuration.retry_config
60
+ retries ||= Utils::RetryConfig.new(
61
+ backoff: Utils::BackoffStrategy.new(
62
+ exponent: 1.5,
63
+ initial_interval: 500,
64
+ max_elapsed_time: 3_600_000,
65
+ max_interval: 60_000
66
+ ),
67
+ retry_connection_errors: true,
68
+ strategy: 'backoff'
69
+ )
70
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
71
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
72
+
73
+ security = @sdk_configuration.security_source&.call
74
+
75
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
76
+ timeout ||= @sdk_configuration.timeout
77
+
78
+
79
+ connection = @sdk_configuration.client.dup
80
+ connection.use Utils::RetryMiddleware, retry_options
81
+
82
+ hook_ctx = SDKHooks::HookContext.new(
83
+ config: @sdk_configuration,
84
+ base_url: base_url,
85
+ oauth2_scopes: nil,
86
+ operation_id: 'ListDirectories',
87
+ security_source: @sdk_configuration.security_source
88
+ )
89
+
90
+ error = nil
91
+ http_response = nil
92
+
93
+
94
+ begin
95
+ http_response = connection.get(url) do |req|
96
+ req.headers.merge!(headers)
97
+ req.options.timeout = timeout unless timeout.nil?
98
+ req.params = query_params
99
+ Utils.configure_request_security(req, security)
100
+ http_headers&.each do |key, value|
101
+ req.headers[key.to_s] = value
102
+ end
103
+
104
+ @sdk_configuration.hooks.before_request(
105
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
106
+ hook_ctx: hook_ctx
107
+ ),
108
+ request: req
109
+ )
110
+ end
111
+ rescue StandardError => e
112
+ error = e
113
+ ensure
114
+ if http_response.nil? || Utils.error_status?(http_response.status)
115
+ http_response = @sdk_configuration.hooks.after_error(
116
+ error: error,
117
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
118
+ hook_ctx: hook_ctx
119
+ ),
120
+ response: http_response
121
+ )
122
+ else
123
+ http_response = @sdk_configuration.hooks.after_success(
124
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
125
+ hook_ctx: hook_ctx
126
+ ),
127
+ response: http_response
128
+ )
129
+ end
130
+
131
+ if http_response.nil?
132
+ raise error if !error.nil?
133
+ raise 'no response'
134
+ end
135
+ end
136
+
137
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
138
+ if Utils.match_status_code(http_response.status, ['200'])
139
+ if Utils.match_content_type(content_type, 'application/json')
140
+ http_response = @sdk_configuration.hooks.after_success(
141
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
142
+ hook_ctx: hook_ctx
143
+ ),
144
+ response: http_response
145
+ )
146
+ response_data = http_response.env.response_body
147
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DirectoryList)
148
+ response = Models::Operations::ListDirectoriesResponse.new(
149
+ status_code: http_response.status,
150
+ content_type: content_type,
151
+ raw_response: http_response,
152
+ directory_list: obj
153
+ )
154
+
155
+ return response
156
+ else
157
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
158
+ end
159
+ elsif Utils.match_status_code(http_response.status, ['401', '403'])
160
+ if Utils.match_content_type(content_type, 'application/json')
161
+ http_response = @sdk_configuration.hooks.after_success(
162
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
163
+ hook_ctx: hook_ctx
164
+ ),
165
+ response: http_response
166
+ )
167
+ response_data = http_response.env.response_body
168
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
169
+ obj.raw_response = http_response
170
+ raise obj
171
+ else
172
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
173
+ end
174
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
175
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
176
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
177
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
178
+ else
179
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
180
+
181
+ end
182
+ end
183
+
184
+
185
+
186
+ def create(request: nil, retries: nil, timeout_ms: nil, http_headers: nil)
187
+ # create - Create a directory
188
+ # Create a new directory for the instance.
189
+ url, params = @sdk_configuration.get_server_details
190
+ base_url = Utils.template_url(url, params)
191
+ url = "#{base_url}/directories"
192
+ headers = {}
193
+
194
+ req_content_type, data, form = Utils.serialize_request_body(request, false, true, :request, :json)
195
+ headers['content-type'] = req_content_type
196
+
197
+ if form && !form.empty?
198
+ body = Utils.encode_form(form)
199
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
200
+ body = URI.encode_www_form(data)
201
+ else
202
+ body = data
203
+ end
204
+ headers['Accept'] = 'application/json'
205
+ headers['user-agent'] = @sdk_configuration.user_agent
206
+ retries ||= @sdk_configuration.retry_config
207
+ retries ||= Utils::RetryConfig.new(
208
+ backoff: Utils::BackoffStrategy.new(
209
+ exponent: 1.5,
210
+ initial_interval: 500,
211
+ max_elapsed_time: 3_600_000,
212
+ max_interval: 60_000
213
+ ),
214
+ retry_connection_errors: true,
215
+ strategy: 'backoff'
216
+ )
217
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
218
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
219
+
220
+ security = @sdk_configuration.security_source&.call
221
+
222
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
223
+ timeout ||= @sdk_configuration.timeout
224
+
225
+
226
+ connection = @sdk_configuration.client.dup
227
+ connection.use Utils::RetryMiddleware, retry_options
228
+
229
+ hook_ctx = SDKHooks::HookContext.new(
230
+ config: @sdk_configuration,
231
+ base_url: base_url,
232
+ oauth2_scopes: nil,
233
+ operation_id: 'CreateDirectory',
234
+ security_source: @sdk_configuration.security_source
235
+ )
236
+
237
+ error = nil
238
+ http_response = nil
239
+
240
+
241
+ begin
242
+ http_response = connection.post(url) do |req|
243
+ req.body = body
244
+ req.headers.merge!(headers)
245
+ req.options.timeout = timeout unless timeout.nil?
246
+ Utils.configure_request_security(req, security)
247
+ http_headers&.each do |key, value|
248
+ req.headers[key.to_s] = value
249
+ end
250
+
251
+ @sdk_configuration.hooks.before_request(
252
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
253
+ hook_ctx: hook_ctx
254
+ ),
255
+ request: req
256
+ )
257
+ end
258
+ rescue StandardError => e
259
+ error = e
260
+ ensure
261
+ if http_response.nil? || Utils.error_status?(http_response.status)
262
+ http_response = @sdk_configuration.hooks.after_error(
263
+ error: error,
264
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
265
+ hook_ctx: hook_ctx
266
+ ),
267
+ response: http_response
268
+ )
269
+ else
270
+ http_response = @sdk_configuration.hooks.after_success(
271
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
272
+ hook_ctx: hook_ctx
273
+ ),
274
+ response: http_response
275
+ )
276
+ end
277
+
278
+ if http_response.nil?
279
+ raise error if !error.nil?
280
+ raise 'no response'
281
+ end
282
+ end
283
+
284
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
285
+ if Utils.match_status_code(http_response.status, ['200'])
286
+ if Utils.match_content_type(content_type, 'application/json')
287
+ http_response = @sdk_configuration.hooks.after_success(
288
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
289
+ hook_ctx: hook_ctx
290
+ ),
291
+ response: http_response
292
+ )
293
+ response_data = http_response.env.response_body
294
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Directory)
295
+ response = Models::Operations::CreateDirectoryResponse.new(
296
+ status_code: http_response.status,
297
+ content_type: content_type,
298
+ raw_response: http_response,
299
+ directory: obj
300
+ )
301
+
302
+ return response
303
+ else
304
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
305
+ end
306
+ elsif Utils.match_status_code(http_response.status, ['400', '401', '403', '422'])
307
+ if Utils.match_content_type(content_type, 'application/json')
308
+ http_response = @sdk_configuration.hooks.after_success(
309
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
310
+ hook_ctx: hook_ctx
311
+ ),
312
+ response: http_response
313
+ )
314
+ response_data = http_response.env.response_body
315
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
316
+ obj.raw_response = http_response
317
+ raise obj
318
+ else
319
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
320
+ end
321
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
322
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
323
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
324
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
325
+ else
326
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
327
+
328
+ end
329
+ end
330
+
331
+
332
+
333
+ def get(directory_id:, retries: nil, timeout_ms: nil, http_headers: nil)
334
+ # get - Retrieve a directory
335
+ # Returns the details of a directory.
336
+ request = Models::Operations::GetDirectoryRequest.new(
337
+ directory_id: directory_id
338
+ )
339
+ url, params = @sdk_configuration.get_server_details
340
+ base_url = Utils.template_url(url, params)
341
+ url = Utils.generate_url(
342
+ Models::Operations::GetDirectoryRequest,
343
+ base_url,
344
+ '/directories/{directory_id}',
345
+ request
346
+ )
347
+ headers = {}
348
+
349
+ headers['Accept'] = 'application/json'
350
+ headers['user-agent'] = @sdk_configuration.user_agent
351
+ retries ||= @sdk_configuration.retry_config
352
+ retries ||= Utils::RetryConfig.new(
353
+ backoff: Utils::BackoffStrategy.new(
354
+ exponent: 1.5,
355
+ initial_interval: 500,
356
+ max_elapsed_time: 3_600_000,
357
+ max_interval: 60_000
358
+ ),
359
+ retry_connection_errors: true,
360
+ strategy: 'backoff'
361
+ )
362
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
363
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
364
+
365
+ security = @sdk_configuration.security_source&.call
366
+
367
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
368
+ timeout ||= @sdk_configuration.timeout
369
+
370
+
371
+ connection = @sdk_configuration.client.dup
372
+ connection.use Utils::RetryMiddleware, retry_options
373
+
374
+ hook_ctx = SDKHooks::HookContext.new(
375
+ config: @sdk_configuration,
376
+ base_url: base_url,
377
+ oauth2_scopes: nil,
378
+ operation_id: 'GetDirectory',
379
+ security_source: @sdk_configuration.security_source
380
+ )
381
+
382
+ error = nil
383
+ http_response = nil
384
+
385
+
386
+ begin
387
+ http_response = connection.get(url) do |req|
388
+ req.headers.merge!(headers)
389
+ req.options.timeout = timeout unless timeout.nil?
390
+ Utils.configure_request_security(req, security)
391
+ http_headers&.each do |key, value|
392
+ req.headers[key.to_s] = value
393
+ end
394
+
395
+ @sdk_configuration.hooks.before_request(
396
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
397
+ hook_ctx: hook_ctx
398
+ ),
399
+ request: req
400
+ )
401
+ end
402
+ rescue StandardError => e
403
+ error = e
404
+ ensure
405
+ if http_response.nil? || Utils.error_status?(http_response.status)
406
+ http_response = @sdk_configuration.hooks.after_error(
407
+ error: error,
408
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
409
+ hook_ctx: hook_ctx
410
+ ),
411
+ response: http_response
412
+ )
413
+ else
414
+ http_response = @sdk_configuration.hooks.after_success(
415
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
416
+ hook_ctx: hook_ctx
417
+ ),
418
+ response: http_response
419
+ )
420
+ end
421
+
422
+ if http_response.nil?
423
+ raise error if !error.nil?
424
+ raise 'no response'
425
+ end
426
+ end
427
+
428
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
429
+ if Utils.match_status_code(http_response.status, ['200'])
430
+ if Utils.match_content_type(content_type, 'application/json')
431
+ http_response = @sdk_configuration.hooks.after_success(
432
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
433
+ hook_ctx: hook_ctx
434
+ ),
435
+ response: http_response
436
+ )
437
+ response_data = http_response.env.response_body
438
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Directory)
439
+ response = Models::Operations::GetDirectoryResponse.new(
440
+ status_code: http_response.status,
441
+ content_type: content_type,
442
+ raw_response: http_response,
443
+ directory: obj
444
+ )
445
+
446
+ return response
447
+ else
448
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
449
+ end
450
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404'])
451
+ if Utils.match_content_type(content_type, 'application/json')
452
+ http_response = @sdk_configuration.hooks.after_success(
453
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
454
+ hook_ctx: hook_ctx
455
+ ),
456
+ response: http_response
457
+ )
458
+ response_data = http_response.env.response_body
459
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
460
+ obj.raw_response = http_response
461
+ raise obj
462
+ else
463
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
464
+ end
465
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
466
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
467
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
468
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
469
+ else
470
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
471
+
472
+ end
473
+ end
474
+
475
+
476
+
477
+ def update(directory_id:, body: nil, retries: nil, timeout_ms: nil, http_headers: nil)
478
+ # update - Update a directory
479
+ # Updates a directory.
480
+ request = Models::Operations::UpdateDirectoryRequest.new(
481
+ directory_id: directory_id,
482
+ body: body
483
+ )
484
+ url, params = @sdk_configuration.get_server_details
485
+ base_url = Utils.template_url(url, params)
486
+ url = Utils.generate_url(
487
+ Models::Operations::UpdateDirectoryRequest,
488
+ base_url,
489
+ '/directories/{directory_id}',
490
+ request
491
+ )
492
+ headers = {}
493
+
494
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
495
+ headers['content-type'] = req_content_type
496
+
497
+ if form && !form.empty?
498
+ body = Utils.encode_form(form)
499
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
500
+ body = URI.encode_www_form(data)
501
+ else
502
+ body = data
503
+ end
504
+ headers['Accept'] = 'application/json'
505
+ headers['user-agent'] = @sdk_configuration.user_agent
506
+ retries ||= @sdk_configuration.retry_config
507
+ retries ||= Utils::RetryConfig.new(
508
+ backoff: Utils::BackoffStrategy.new(
509
+ exponent: 1.5,
510
+ initial_interval: 500,
511
+ max_elapsed_time: 3_600_000,
512
+ max_interval: 60_000
513
+ ),
514
+ retry_connection_errors: true,
515
+ strategy: 'backoff'
516
+ )
517
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
518
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
519
+
520
+ security = @sdk_configuration.security_source&.call
521
+
522
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
523
+ timeout ||= @sdk_configuration.timeout
524
+
525
+
526
+ connection = @sdk_configuration.client.dup
527
+ connection.use Utils::RetryMiddleware, retry_options
528
+
529
+ hook_ctx = SDKHooks::HookContext.new(
530
+ config: @sdk_configuration,
531
+ base_url: base_url,
532
+ oauth2_scopes: nil,
533
+ operation_id: 'UpdateDirectory',
534
+ security_source: @sdk_configuration.security_source
535
+ )
536
+
537
+ error = nil
538
+ http_response = nil
539
+
540
+
541
+ begin
542
+ http_response = connection.patch(url) do |req|
543
+ req.body = body
544
+ req.headers.merge!(headers)
545
+ req.options.timeout = timeout unless timeout.nil?
546
+ Utils.configure_request_security(req, security)
547
+ http_headers&.each do |key, value|
548
+ req.headers[key.to_s] = value
549
+ end
550
+
551
+ @sdk_configuration.hooks.before_request(
552
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
553
+ hook_ctx: hook_ctx
554
+ ),
555
+ request: req
556
+ )
557
+ end
558
+ rescue StandardError => e
559
+ error = e
560
+ ensure
561
+ if http_response.nil? || Utils.error_status?(http_response.status)
562
+ http_response = @sdk_configuration.hooks.after_error(
563
+ error: error,
564
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
565
+ hook_ctx: hook_ctx
566
+ ),
567
+ response: http_response
568
+ )
569
+ else
570
+ http_response = @sdk_configuration.hooks.after_success(
571
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
572
+ hook_ctx: hook_ctx
573
+ ),
574
+ response: http_response
575
+ )
576
+ end
577
+
578
+ if http_response.nil?
579
+ raise error if !error.nil?
580
+ raise 'no response'
581
+ end
582
+ end
583
+
584
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
585
+ if Utils.match_status_code(http_response.status, ['200'])
586
+ if Utils.match_content_type(content_type, 'application/json')
587
+ http_response = @sdk_configuration.hooks.after_success(
588
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
589
+ hook_ctx: hook_ctx
590
+ ),
591
+ response: http_response
592
+ )
593
+ response_data = http_response.env.response_body
594
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Directory)
595
+ response = Models::Operations::UpdateDirectoryResponse.new(
596
+ status_code: http_response.status,
597
+ content_type: content_type,
598
+ raw_response: http_response,
599
+ directory: obj
600
+ )
601
+
602
+ return response
603
+ else
604
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
605
+ end
606
+ elsif Utils.match_status_code(http_response.status, ['400', '401', '403', '404', '422'])
607
+ if Utils.match_content_type(content_type, 'application/json')
608
+ http_response = @sdk_configuration.hooks.after_success(
609
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
610
+ hook_ctx: hook_ctx
611
+ ),
612
+ response: http_response
613
+ )
614
+ response_data = http_response.env.response_body
615
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
616
+ obj.raw_response = http_response
617
+ raise obj
618
+ else
619
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
620
+ end
621
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
622
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
623
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
624
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
625
+ else
626
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
627
+
628
+ end
629
+ end
630
+
631
+
632
+
633
+ def delete(directory_id:, retries: nil, timeout_ms: nil, http_headers: nil)
634
+ # delete - Delete a directory
635
+ # Deletes a directory and stops provisioning for it. Provisioning requests authenticated
636
+ # with the directory's API key are rejected afterwards.
637
+ request = Models::Operations::DeleteDirectoryRequest.new(
638
+ directory_id: directory_id
639
+ )
640
+ url, params = @sdk_configuration.get_server_details
641
+ base_url = Utils.template_url(url, params)
642
+ url = Utils.generate_url(
643
+ Models::Operations::DeleteDirectoryRequest,
644
+ base_url,
645
+ '/directories/{directory_id}',
646
+ request
647
+ )
648
+ headers = {}
649
+
650
+ headers['Accept'] = 'application/json'
651
+ headers['user-agent'] = @sdk_configuration.user_agent
652
+ retries ||= @sdk_configuration.retry_config
653
+ retries ||= Utils::RetryConfig.new(
654
+ backoff: Utils::BackoffStrategy.new(
655
+ exponent: 1.5,
656
+ initial_interval: 500,
657
+ max_elapsed_time: 3_600_000,
658
+ max_interval: 60_000
659
+ ),
660
+ retry_connection_errors: true,
661
+ strategy: 'backoff'
662
+ )
663
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
664
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
665
+
666
+ security = @sdk_configuration.security_source&.call
667
+
668
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
669
+ timeout ||= @sdk_configuration.timeout
670
+
671
+
672
+ connection = @sdk_configuration.client.dup
673
+ connection.use Utils::RetryMiddleware, retry_options
674
+
675
+ hook_ctx = SDKHooks::HookContext.new(
676
+ config: @sdk_configuration,
677
+ base_url: base_url,
678
+ oauth2_scopes: nil,
679
+ operation_id: 'DeleteDirectory',
680
+ security_source: @sdk_configuration.security_source
681
+ )
682
+
683
+ error = nil
684
+ http_response = nil
685
+
686
+
687
+ begin
688
+ http_response = connection.delete(url) do |req|
689
+ req.headers.merge!(headers)
690
+ req.options.timeout = timeout unless timeout.nil?
691
+ Utils.configure_request_security(req, security)
692
+ http_headers&.each do |key, value|
693
+ req.headers[key.to_s] = value
694
+ end
695
+
696
+ @sdk_configuration.hooks.before_request(
697
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
698
+ hook_ctx: hook_ctx
699
+ ),
700
+ request: req
701
+ )
702
+ end
703
+ rescue StandardError => e
704
+ error = e
705
+ ensure
706
+ if http_response.nil? || Utils.error_status?(http_response.status)
707
+ http_response = @sdk_configuration.hooks.after_error(
708
+ error: error,
709
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
710
+ hook_ctx: hook_ctx
711
+ ),
712
+ response: http_response
713
+ )
714
+ else
715
+ http_response = @sdk_configuration.hooks.after_success(
716
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
717
+ hook_ctx: hook_ctx
718
+ ),
719
+ response: http_response
720
+ )
721
+ end
722
+
723
+ if http_response.nil?
724
+ raise error if !error.nil?
725
+ raise 'no response'
726
+ end
727
+ end
728
+
729
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
730
+ if Utils.match_status_code(http_response.status, ['200'])
731
+ if Utils.match_content_type(content_type, 'application/json')
732
+ http_response = @sdk_configuration.hooks.after_success(
733
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
734
+ hook_ctx: hook_ctx
735
+ ),
736
+ response: http_response
737
+ )
738
+ response_data = http_response.env.response_body
739
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DeletedObject)
740
+ response = Models::Operations::DeleteDirectoryResponse.new(
741
+ status_code: http_response.status,
742
+ content_type: content_type,
743
+ raw_response: http_response,
744
+ deleted_object: obj
745
+ )
746
+
747
+ return response
748
+ else
749
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
750
+ end
751
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404'])
752
+ if Utils.match_content_type(content_type, 'application/json')
753
+ http_response = @sdk_configuration.hooks.after_success(
754
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
755
+ hook_ctx: hook_ctx
756
+ ),
757
+ response: http_response
758
+ )
759
+ response_data = http_response.env.response_body
760
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
761
+ obj.raw_response = http_response
762
+ raise obj
763
+ else
764
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
765
+ end
766
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
767
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
768
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
769
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
770
+ else
771
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
772
+
773
+ end
774
+ end
775
+
776
+
777
+
778
+ def rotate_api_key(directory_id:, retries: nil, timeout_ms: nil, http_headers: nil)
779
+ # rotate_api_key - Rotate a directory's API key
780
+ # Generates a new API key for the directory and returns it in the `api_key` field.
781
+ # This is the only way to obtain the key after creation, so make sure to update it in
782
+ # your identity provider. The previous key remains valid for a short grace period before
783
+ # it expires.
784
+ request = Models::Operations::RotateDirectoryAPIKeyRequest.new(
785
+ directory_id: directory_id
786
+ )
787
+ url, params = @sdk_configuration.get_server_details
788
+ base_url = Utils.template_url(url, params)
789
+ url = Utils.generate_url(
790
+ Models::Operations::RotateDirectoryAPIKeyRequest,
791
+ base_url,
792
+ '/directories/{directory_id}/rotate_api_key',
793
+ request
794
+ )
795
+ headers = {}
796
+
797
+ headers['Accept'] = 'application/json'
798
+ headers['user-agent'] = @sdk_configuration.user_agent
799
+ retries ||= @sdk_configuration.retry_config
800
+ retries ||= Utils::RetryConfig.new(
801
+ backoff: Utils::BackoffStrategy.new(
802
+ exponent: 1.5,
803
+ initial_interval: 500,
804
+ max_elapsed_time: 3_600_000,
805
+ max_interval: 60_000
806
+ ),
807
+ retry_connection_errors: true,
808
+ strategy: 'backoff'
809
+ )
810
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
811
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
812
+
813
+ security = @sdk_configuration.security_source&.call
814
+
815
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
816
+ timeout ||= @sdk_configuration.timeout
817
+
818
+
819
+ connection = @sdk_configuration.client.dup
820
+ connection.use Utils::RetryMiddleware, retry_options
821
+
822
+ hook_ctx = SDKHooks::HookContext.new(
823
+ config: @sdk_configuration,
824
+ base_url: base_url,
825
+ oauth2_scopes: nil,
826
+ operation_id: 'RotateDirectoryAPIKey',
827
+ security_source: @sdk_configuration.security_source
828
+ )
829
+
830
+ error = nil
831
+ http_response = nil
832
+
833
+
834
+ begin
835
+ http_response = connection.post(url) do |req|
836
+ req.headers.merge!(headers)
837
+ req.options.timeout = timeout unless timeout.nil?
838
+ Utils.configure_request_security(req, security)
839
+ http_headers&.each do |key, value|
840
+ req.headers[key.to_s] = value
841
+ end
842
+
843
+ @sdk_configuration.hooks.before_request(
844
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
845
+ hook_ctx: hook_ctx
846
+ ),
847
+ request: req
848
+ )
849
+ end
850
+ rescue StandardError => e
851
+ error = e
852
+ ensure
853
+ if http_response.nil? || Utils.error_status?(http_response.status)
854
+ http_response = @sdk_configuration.hooks.after_error(
855
+ error: error,
856
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
857
+ hook_ctx: hook_ctx
858
+ ),
859
+ response: http_response
860
+ )
861
+ else
862
+ http_response = @sdk_configuration.hooks.after_success(
863
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
864
+ hook_ctx: hook_ctx
865
+ ),
866
+ response: http_response
867
+ )
868
+ end
869
+
870
+ if http_response.nil?
871
+ raise error if !error.nil?
872
+ raise 'no response'
873
+ end
874
+ end
875
+
876
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
877
+ if Utils.match_status_code(http_response.status, ['200'])
878
+ if Utils.match_content_type(content_type, 'application/json')
879
+ http_response = @sdk_configuration.hooks.after_success(
880
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
881
+ hook_ctx: hook_ctx
882
+ ),
883
+ response: http_response
884
+ )
885
+ response_data = http_response.env.response_body
886
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Directory)
887
+ response = Models::Operations::RotateDirectoryAPIKeyResponse.new(
888
+ status_code: http_response.status,
889
+ content_type: content_type,
890
+ raw_response: http_response,
891
+ directory: obj
892
+ )
893
+
894
+ return response
895
+ else
896
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
897
+ end
898
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '422'])
899
+ if Utils.match_content_type(content_type, 'application/json')
900
+ http_response = @sdk_configuration.hooks.after_success(
901
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
902
+ hook_ctx: hook_ctx
903
+ ),
904
+ response: http_response
905
+ )
906
+ response_data = http_response.env.response_body
907
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
908
+ obj.raw_response = http_response
909
+ raise obj
910
+ else
911
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
912
+ end
913
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
914
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
915
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
916
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
917
+ else
918
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
919
+
920
+ end
921
+ end
922
+
923
+
924
+
925
+ def list_group_role_mappings(directory_id:, retries: nil, timeout_ms: nil, http_headers: nil)
926
+ # list_group_role_mappings - List directory group role mappings
927
+ # Returns the list of directory group to organization role mappings for a directory, ordered by precedence.
928
+ request = Models::Operations::ListDirectoryGroupRoleMappingsRequest.new(
929
+ directory_id: directory_id
930
+ )
931
+ url, params = @sdk_configuration.get_server_details
932
+ base_url = Utils.template_url(url, params)
933
+ url = Utils.generate_url(
934
+ Models::Operations::ListDirectoryGroupRoleMappingsRequest,
935
+ base_url,
936
+ '/directories/{directory_id}/group_role_mappings',
937
+ request
938
+ )
939
+ headers = {}
940
+
941
+ headers['Accept'] = 'application/json'
942
+ headers['user-agent'] = @sdk_configuration.user_agent
943
+ retries ||= @sdk_configuration.retry_config
944
+ retries ||= Utils::RetryConfig.new(
945
+ backoff: Utils::BackoffStrategy.new(
946
+ exponent: 1.5,
947
+ initial_interval: 500,
948
+ max_elapsed_time: 3_600_000,
949
+ max_interval: 60_000
950
+ ),
951
+ retry_connection_errors: true,
952
+ strategy: 'backoff'
953
+ )
954
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
955
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
956
+
957
+ security = @sdk_configuration.security_source&.call
958
+
959
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
960
+ timeout ||= @sdk_configuration.timeout
961
+
962
+
963
+ connection = @sdk_configuration.client.dup
964
+ connection.use Utils::RetryMiddleware, retry_options
965
+
966
+ hook_ctx = SDKHooks::HookContext.new(
967
+ config: @sdk_configuration,
968
+ base_url: base_url,
969
+ oauth2_scopes: nil,
970
+ operation_id: 'ListDirectoryGroupRoleMappings',
971
+ security_source: @sdk_configuration.security_source
972
+ )
973
+
974
+ error = nil
975
+ http_response = nil
976
+
977
+
978
+ begin
979
+ http_response = connection.get(url) do |req|
980
+ req.headers.merge!(headers)
981
+ req.options.timeout = timeout unless timeout.nil?
982
+ Utils.configure_request_security(req, security)
983
+ http_headers&.each do |key, value|
984
+ req.headers[key.to_s] = value
985
+ end
986
+
987
+ @sdk_configuration.hooks.before_request(
988
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
989
+ hook_ctx: hook_ctx
990
+ ),
991
+ request: req
992
+ )
993
+ end
994
+ rescue StandardError => e
995
+ error = e
996
+ ensure
997
+ if http_response.nil? || Utils.error_status?(http_response.status)
998
+ http_response = @sdk_configuration.hooks.after_error(
999
+ error: error,
1000
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1001
+ hook_ctx: hook_ctx
1002
+ ),
1003
+ response: http_response
1004
+ )
1005
+ else
1006
+ http_response = @sdk_configuration.hooks.after_success(
1007
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1008
+ hook_ctx: hook_ctx
1009
+ ),
1010
+ response: http_response
1011
+ )
1012
+ end
1013
+
1014
+ if http_response.nil?
1015
+ raise error if !error.nil?
1016
+ raise 'no response'
1017
+ end
1018
+ end
1019
+
1020
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1021
+ if Utils.match_status_code(http_response.status, ['200'])
1022
+ if Utils.match_content_type(content_type, 'application/json')
1023
+ http_response = @sdk_configuration.hooks.after_success(
1024
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1025
+ hook_ctx: hook_ctx
1026
+ ),
1027
+ response: http_response
1028
+ )
1029
+ response_data = http_response.env.response_body
1030
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DirectoryGroupRoleMappingList)
1031
+ response = Models::Operations::ListDirectoryGroupRoleMappingsResponse.new(
1032
+ status_code: http_response.status,
1033
+ content_type: content_type,
1034
+ raw_response: http_response,
1035
+ directory_group_role_mapping_list: obj
1036
+ )
1037
+
1038
+ return response
1039
+ else
1040
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1041
+ end
1042
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404'])
1043
+ if Utils.match_content_type(content_type, 'application/json')
1044
+ http_response = @sdk_configuration.hooks.after_success(
1045
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1046
+ hook_ctx: hook_ctx
1047
+ ),
1048
+ response: http_response
1049
+ )
1050
+ response_data = http_response.env.response_body
1051
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
1052
+ obj.raw_response = http_response
1053
+ raise obj
1054
+ else
1055
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1056
+ end
1057
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1058
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1059
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1060
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1061
+ else
1062
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1063
+
1064
+ end
1065
+ end
1066
+
1067
+
1068
+
1069
+ def create_group_role_mapping(body:, directory_id:, retries: nil, timeout_ms: nil, http_headers: nil)
1070
+ # create_group_role_mapping - Create a directory group role mapping
1071
+ # Creates a new directory group to organization role mapping for a directory.
1072
+ # Mappings can be created while group role mapping is disabled on the
1073
+ # directory, but they only take effect once it is enabled.
1074
+ request = Models::Operations::CreateDirectoryGroupRoleMappingRequest.new(
1075
+ directory_id: directory_id,
1076
+ body: body
1077
+ )
1078
+ url, params = @sdk_configuration.get_server_details
1079
+ base_url = Utils.template_url(url, params)
1080
+ url = Utils.generate_url(
1081
+ Models::Operations::CreateDirectoryGroupRoleMappingRequest,
1082
+ base_url,
1083
+ '/directories/{directory_id}/group_role_mappings',
1084
+ request
1085
+ )
1086
+ headers = {}
1087
+
1088
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
1089
+ headers['content-type'] = req_content_type
1090
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
1091
+
1092
+ if form && !form.empty?
1093
+ body = Utils.encode_form(form)
1094
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
1095
+ body = URI.encode_www_form(data)
1096
+ else
1097
+ body = data
1098
+ end
1099
+ headers['Accept'] = 'application/json'
1100
+ headers['user-agent'] = @sdk_configuration.user_agent
1101
+ retries ||= @sdk_configuration.retry_config
1102
+ retries ||= Utils::RetryConfig.new(
1103
+ backoff: Utils::BackoffStrategy.new(
1104
+ exponent: 1.5,
1105
+ initial_interval: 500,
1106
+ max_elapsed_time: 3_600_000,
1107
+ max_interval: 60_000
1108
+ ),
1109
+ retry_connection_errors: true,
1110
+ strategy: 'backoff'
1111
+ )
1112
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
1113
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
1114
+
1115
+ security = @sdk_configuration.security_source&.call
1116
+
1117
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1118
+ timeout ||= @sdk_configuration.timeout
1119
+
1120
+
1121
+ connection = @sdk_configuration.client.dup
1122
+ connection.use Utils::RetryMiddleware, retry_options
1123
+
1124
+ hook_ctx = SDKHooks::HookContext.new(
1125
+ config: @sdk_configuration,
1126
+ base_url: base_url,
1127
+ oauth2_scopes: nil,
1128
+ operation_id: 'CreateDirectoryGroupRoleMapping',
1129
+ security_source: @sdk_configuration.security_source
1130
+ )
1131
+
1132
+ error = nil
1133
+ http_response = nil
1134
+
1135
+
1136
+ begin
1137
+ http_response = connection.post(url) do |req|
1138
+ req.body = body
1139
+ req.headers.merge!(headers)
1140
+ req.options.timeout = timeout unless timeout.nil?
1141
+ Utils.configure_request_security(req, security)
1142
+ http_headers&.each do |key, value|
1143
+ req.headers[key.to_s] = value
1144
+ end
1145
+
1146
+ @sdk_configuration.hooks.before_request(
1147
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1148
+ hook_ctx: hook_ctx
1149
+ ),
1150
+ request: req
1151
+ )
1152
+ end
1153
+ rescue StandardError => e
1154
+ error = e
1155
+ ensure
1156
+ if http_response.nil? || Utils.error_status?(http_response.status)
1157
+ http_response = @sdk_configuration.hooks.after_error(
1158
+ error: error,
1159
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1160
+ hook_ctx: hook_ctx
1161
+ ),
1162
+ response: http_response
1163
+ )
1164
+ else
1165
+ http_response = @sdk_configuration.hooks.after_success(
1166
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1167
+ hook_ctx: hook_ctx
1168
+ ),
1169
+ response: http_response
1170
+ )
1171
+ end
1172
+
1173
+ if http_response.nil?
1174
+ raise error if !error.nil?
1175
+ raise 'no response'
1176
+ end
1177
+ end
1178
+
1179
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1180
+ if Utils.match_status_code(http_response.status, ['200'])
1181
+ if Utils.match_content_type(content_type, 'application/json')
1182
+ http_response = @sdk_configuration.hooks.after_success(
1183
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1184
+ hook_ctx: hook_ctx
1185
+ ),
1186
+ response: http_response
1187
+ )
1188
+ response_data = http_response.env.response_body
1189
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DirectoryGroupRoleMapping)
1190
+ response = Models::Operations::CreateDirectoryGroupRoleMappingResponse.new(
1191
+ status_code: http_response.status,
1192
+ content_type: content_type,
1193
+ raw_response: http_response,
1194
+ directory_group_role_mapping: obj
1195
+ )
1196
+
1197
+ return response
1198
+ else
1199
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1200
+ end
1201
+ elsif Utils.match_status_code(http_response.status, ['400', '401', '403', '404', '422'])
1202
+ if Utils.match_content_type(content_type, 'application/json')
1203
+ http_response = @sdk_configuration.hooks.after_success(
1204
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1205
+ hook_ctx: hook_ctx
1206
+ ),
1207
+ response: http_response
1208
+ )
1209
+ response_data = http_response.env.response_body
1210
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
1211
+ obj.raw_response = http_response
1212
+ raise obj
1213
+ else
1214
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1215
+ end
1216
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1217
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1218
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1219
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1220
+ else
1221
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1222
+
1223
+ end
1224
+ end
1225
+
1226
+
1227
+
1228
+ def replace_group_role_mappings(body:, directory_id:, retries: nil, timeout_ms: nil, http_headers: nil)
1229
+ # replace_group_role_mappings - Replace directory group role mappings
1230
+ # Replaces the entire set of directory group role mappings for a directory. The position of
1231
+ # each item in the `mappings` array determines its precedence (the first item gets
1232
+ # precedence 1). Passing an empty array removes all mappings. Mappings can be replaced
1233
+ # while group role mapping is disabled on the directory, but they only take effect once
1234
+ # it is enabled.
1235
+ request = Models::Operations::ReplaceDirectoryGroupRoleMappingsRequest.new(
1236
+ directory_id: directory_id,
1237
+ body: body
1238
+ )
1239
+ url, params = @sdk_configuration.get_server_details
1240
+ base_url = Utils.template_url(url, params)
1241
+ url = Utils.generate_url(
1242
+ Models::Operations::ReplaceDirectoryGroupRoleMappingsRequest,
1243
+ base_url,
1244
+ '/directories/{directory_id}/group_role_mappings',
1245
+ request
1246
+ )
1247
+ headers = {}
1248
+
1249
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
1250
+ headers['content-type'] = req_content_type
1251
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
1252
+
1253
+ if form && !form.empty?
1254
+ body = Utils.encode_form(form)
1255
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
1256
+ body = URI.encode_www_form(data)
1257
+ else
1258
+ body = data
1259
+ end
1260
+ headers['Accept'] = 'application/json'
1261
+ headers['user-agent'] = @sdk_configuration.user_agent
1262
+ retries ||= @sdk_configuration.retry_config
1263
+ retries ||= Utils::RetryConfig.new(
1264
+ backoff: Utils::BackoffStrategy.new(
1265
+ exponent: 1.5,
1266
+ initial_interval: 500,
1267
+ max_elapsed_time: 3_600_000,
1268
+ max_interval: 60_000
1269
+ ),
1270
+ retry_connection_errors: true,
1271
+ strategy: 'backoff'
1272
+ )
1273
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
1274
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
1275
+
1276
+ security = @sdk_configuration.security_source&.call
1277
+
1278
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1279
+ timeout ||= @sdk_configuration.timeout
1280
+
1281
+
1282
+ connection = @sdk_configuration.client.dup
1283
+ connection.use Utils::RetryMiddleware, retry_options
1284
+
1285
+ hook_ctx = SDKHooks::HookContext.new(
1286
+ config: @sdk_configuration,
1287
+ base_url: base_url,
1288
+ oauth2_scopes: nil,
1289
+ operation_id: 'ReplaceDirectoryGroupRoleMappings',
1290
+ security_source: @sdk_configuration.security_source
1291
+ )
1292
+
1293
+ error = nil
1294
+ http_response = nil
1295
+
1296
+
1297
+ begin
1298
+ http_response = connection.put(url) do |req|
1299
+ req.body = body
1300
+ req.headers.merge!(headers)
1301
+ req.options.timeout = timeout unless timeout.nil?
1302
+ Utils.configure_request_security(req, security)
1303
+ http_headers&.each do |key, value|
1304
+ req.headers[key.to_s] = value
1305
+ end
1306
+
1307
+ @sdk_configuration.hooks.before_request(
1308
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1309
+ hook_ctx: hook_ctx
1310
+ ),
1311
+ request: req
1312
+ )
1313
+ end
1314
+ rescue StandardError => e
1315
+ error = e
1316
+ ensure
1317
+ if http_response.nil? || Utils.error_status?(http_response.status)
1318
+ http_response = @sdk_configuration.hooks.after_error(
1319
+ error: error,
1320
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1321
+ hook_ctx: hook_ctx
1322
+ ),
1323
+ response: http_response
1324
+ )
1325
+ else
1326
+ http_response = @sdk_configuration.hooks.after_success(
1327
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1328
+ hook_ctx: hook_ctx
1329
+ ),
1330
+ response: http_response
1331
+ )
1332
+ end
1333
+
1334
+ if http_response.nil?
1335
+ raise error if !error.nil?
1336
+ raise 'no response'
1337
+ end
1338
+ end
1339
+
1340
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1341
+ if Utils.match_status_code(http_response.status, ['200'])
1342
+ if Utils.match_content_type(content_type, 'application/json')
1343
+ http_response = @sdk_configuration.hooks.after_success(
1344
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1345
+ hook_ctx: hook_ctx
1346
+ ),
1347
+ response: http_response
1348
+ )
1349
+ response_data = http_response.env.response_body
1350
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DirectoryGroupRoleMappingList)
1351
+ response = Models::Operations::ReplaceDirectoryGroupRoleMappingsResponse.new(
1352
+ status_code: http_response.status,
1353
+ content_type: content_type,
1354
+ raw_response: http_response,
1355
+ directory_group_role_mapping_list: obj
1356
+ )
1357
+
1358
+ return response
1359
+ else
1360
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1361
+ end
1362
+ elsif Utils.match_status_code(http_response.status, ['400', '401', '403', '404', '422'])
1363
+ if Utils.match_content_type(content_type, 'application/json')
1364
+ http_response = @sdk_configuration.hooks.after_success(
1365
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1366
+ hook_ctx: hook_ctx
1367
+ ),
1368
+ response: http_response
1369
+ )
1370
+ response_data = http_response.env.response_body
1371
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
1372
+ obj.raw_response = http_response
1373
+ raise obj
1374
+ else
1375
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1376
+ end
1377
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1378
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1379
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1380
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1381
+ else
1382
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1383
+
1384
+ end
1385
+ end
1386
+
1387
+
1388
+
1389
+ def delete_group_role_mapping(directory_id:, mapping_id:, retries: nil, timeout_ms: nil, http_headers: nil)
1390
+ # delete_group_role_mapping - Delete a directory group role mapping
1391
+ # Deletes a single directory group role mapping. Mappings can be deleted while group role
1392
+ # mapping is disabled on the directory, but the change only takes effect once it is
1393
+ # enabled.
1394
+ request = Models::Operations::DeleteDirectoryGroupRoleMappingRequest.new(
1395
+ directory_id: directory_id,
1396
+ mapping_id: mapping_id
1397
+ )
1398
+ url, params = @sdk_configuration.get_server_details
1399
+ base_url = Utils.template_url(url, params)
1400
+ url = Utils.generate_url(
1401
+ Models::Operations::DeleteDirectoryGroupRoleMappingRequest,
1402
+ base_url,
1403
+ '/directories/{directory_id}/group_role_mappings/{mapping_id}',
1404
+ request
1405
+ )
1406
+ headers = {}
1407
+
1408
+ headers['Accept'] = 'application/json'
1409
+ headers['user-agent'] = @sdk_configuration.user_agent
1410
+ retries ||= @sdk_configuration.retry_config
1411
+ retries ||= Utils::RetryConfig.new(
1412
+ backoff: Utils::BackoffStrategy.new(
1413
+ exponent: 1.5,
1414
+ initial_interval: 500,
1415
+ max_elapsed_time: 3_600_000,
1416
+ max_interval: 60_000
1417
+ ),
1418
+ retry_connection_errors: true,
1419
+ strategy: 'backoff'
1420
+ )
1421
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
1422
+ retry_options[:retry_statuses] = [500, 501, 502, 503, 504, 505]
1423
+
1424
+ security = @sdk_configuration.security_source&.call
1425
+
1426
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1427
+ timeout ||= @sdk_configuration.timeout
1428
+
1429
+
1430
+ connection = @sdk_configuration.client.dup
1431
+ connection.use Utils::RetryMiddleware, retry_options
1432
+
1433
+ hook_ctx = SDKHooks::HookContext.new(
1434
+ config: @sdk_configuration,
1435
+ base_url: base_url,
1436
+ oauth2_scopes: nil,
1437
+ operation_id: 'DeleteDirectoryGroupRoleMapping',
1438
+ security_source: @sdk_configuration.security_source
1439
+ )
1440
+
1441
+ error = nil
1442
+ http_response = nil
1443
+
1444
+
1445
+ begin
1446
+ http_response = connection.delete(url) do |req|
1447
+ req.headers.merge!(headers)
1448
+ req.options.timeout = timeout unless timeout.nil?
1449
+ Utils.configure_request_security(req, security)
1450
+ http_headers&.each do |key, value|
1451
+ req.headers[key.to_s] = value
1452
+ end
1453
+
1454
+ @sdk_configuration.hooks.before_request(
1455
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1456
+ hook_ctx: hook_ctx
1457
+ ),
1458
+ request: req
1459
+ )
1460
+ end
1461
+ rescue StandardError => e
1462
+ error = e
1463
+ ensure
1464
+ if http_response.nil? || Utils.error_status?(http_response.status)
1465
+ http_response = @sdk_configuration.hooks.after_error(
1466
+ error: error,
1467
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1468
+ hook_ctx: hook_ctx
1469
+ ),
1470
+ response: http_response
1471
+ )
1472
+ else
1473
+ http_response = @sdk_configuration.hooks.after_success(
1474
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1475
+ hook_ctx: hook_ctx
1476
+ ),
1477
+ response: http_response
1478
+ )
1479
+ end
1480
+
1481
+ if http_response.nil?
1482
+ raise error if !error.nil?
1483
+ raise 'no response'
1484
+ end
1485
+ end
1486
+
1487
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1488
+ if Utils.match_status_code(http_response.status, ['200'])
1489
+ if Utils.match_content_type(content_type, 'application/json')
1490
+ http_response = @sdk_configuration.hooks.after_success(
1491
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1492
+ hook_ctx: hook_ctx
1493
+ ),
1494
+ response: http_response
1495
+ )
1496
+ response_data = http_response.env.response_body
1497
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DirectoryGroupRoleMappingDeleted)
1498
+ response = Models::Operations::DeleteDirectoryGroupRoleMappingResponse.new(
1499
+ status_code: http_response.status,
1500
+ content_type: content_type,
1501
+ raw_response: http_response,
1502
+ directory_group_role_mapping_deleted: obj
1503
+ )
1504
+
1505
+ return response
1506
+ else
1507
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1508
+ end
1509
+ elsif Utils.match_status_code(http_response.status, ['400', '401', '403', '404'])
1510
+ if Utils.match_content_type(content_type, 'application/json')
1511
+ http_response = @sdk_configuration.hooks.after_success(
1512
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1513
+ hook_ctx: hook_ctx
1514
+ ),
1515
+ response: http_response
1516
+ )
1517
+ response_data = http_response.env.response_body
1518
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ClerkErrors)
1519
+ obj.raw_response = http_response
1520
+ raise obj
1521
+ else
1522
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1523
+ end
1524
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1525
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1526
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1527
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1528
+ else
1529
+ raise ::Clerk::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1530
+
1531
+ end
1532
+ end
1533
+ end
1534
+ end