noresponse 8.4.1 → 9.0.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 (568) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/accounts.rb +794 -126
  3. data/lib/no_response/audit.rb +2132 -0
  4. data/lib/no_response/erasures.rb +328 -0
  5. data/lib/no_response/evaluations.rb +1856 -0
  6. data/lib/no_response/exports.rb +1837 -0
  7. data/lib/no_response/invites.rb +1179 -0
  8. data/lib/no_response/keys.rb +2 -2
  9. data/lib/no_response/keyusage.rb +2 -0
  10. data/lib/no_response/lists.rb +947 -5
  11. data/lib/no_response/members.rb +906 -0
  12. data/lib/no_response/models/operations/addreviewsubject_request.rb +57 -0
  13. data/lib/no_response/models/operations/addreviewsubject_request.rbi +32 -0
  14. data/lib/no_response/models/operations/addreviewsubject_response.rb +32 -0
  15. data/lib/no_response/models/operations/addreviewsubject_response.rbi +20 -0
  16. data/lib/no_response/models/operations/aggregaterequests_response.rb +32 -0
  17. data/lib/no_response/models/operations/aggregaterequests_response.rbi +20 -0
  18. data/lib/no_response/models/operations/aggregatewebhooks_response.rb +32 -0
  19. data/lib/no_response/models/operations/aggregatewebhooks_response.rbi +20 -0
  20. data/lib/no_response/models/operations/cancelcustomerexport_request.rb +43 -0
  21. data/lib/no_response/models/operations/cancelcustomerexport_request.rbi +26 -0
  22. data/lib/no_response/models/operations/cancelcustomerexport_response.rb +32 -0
  23. data/lib/no_response/models/operations/cancelcustomerexport_response.rbi +20 -0
  24. data/lib/no_response/models/operations/cancelpolicyevaluation_request.rb +61 -0
  25. data/lib/no_response/models/operations/cancelpolicyevaluation_request.rbi +32 -0
  26. data/lib/no_response/models/operations/cancelpolicyevaluation_response.rb +32 -0
  27. data/lib/no_response/models/operations/cancelpolicyevaluation_response.rbi +20 -0
  28. data/lib/no_response/models/operations/changelists_request.rb +61 -0
  29. data/lib/no_response/models/operations/changelists_request.rbi +32 -0
  30. data/lib/no_response/models/operations/changelists_response.rb +32 -0
  31. data/lib/no_response/models/operations/changelists_response.rbi +20 -0
  32. data/lib/no_response/models/operations/commentreview_request.rb +57 -0
  33. data/lib/no_response/models/operations/commentreview_request.rbi +32 -0
  34. data/lib/no_response/models/operations/commentreview_response.rb +32 -0
  35. data/lib/no_response/models/operations/commentreview_response.rbi +20 -0
  36. data/lib/no_response/models/operations/configureauditstream_request.rb +52 -0
  37. data/lib/no_response/models/operations/configureauditstream_request.rbi +26 -0
  38. data/lib/no_response/models/operations/configureauditstream_response.rb +32 -0
  39. data/lib/no_response/models/operations/configureauditstream_response.rbi +20 -0
  40. data/lib/no_response/models/operations/createcustomerexport_request.rb +52 -0
  41. data/lib/no_response/models/operations/createcustomerexport_request.rbi +26 -0
  42. data/lib/no_response/models/operations/createcustomerexport_response.rb +32 -0
  43. data/lib/no_response/models/operations/createcustomerexport_response.rbi +20 -0
  44. data/lib/no_response/models/operations/createinvite_request.rb +37 -0
  45. data/lib/no_response/models/operations/createinvite_request.rbi +20 -0
  46. data/lib/no_response/models/operations/createinvite_response.rb +32 -0
  47. data/lib/no_response/models/operations/createinvite_response.rbi +20 -0
  48. data/lib/no_response/models/operations/createpolicyevaluation_request.rb +61 -0
  49. data/lib/no_response/models/operations/createpolicyevaluation_request.rbi +32 -0
  50. data/lib/no_response/models/operations/createpolicyevaluation_response.rb +32 -0
  51. data/lib/no_response/models/operations/createpolicyevaluation_response.rbi +20 -0
  52. data/lib/no_response/models/operations/createreview_request.rb +52 -0
  53. data/lib/no_response/models/operations/createreview_request.rbi +26 -0
  54. data/lib/no_response/models/operations/createreview_response.rb +32 -0
  55. data/lib/no_response/models/operations/createreview_response.rbi +20 -0
  56. data/lib/no_response/models/operations/createreviewview_request.rb +52 -0
  57. data/lib/no_response/models/operations/createreviewview_request.rbi +26 -0
  58. data/lib/no_response/models/operations/createreviewview_response.rb +32 -0
  59. data/lib/no_response/models/operations/createreviewview_response.rbi +20 -0
  60. data/lib/no_response/models/operations/deletereviewsubject_request.rb +62 -0
  61. data/lib/no_response/models/operations/deletereviewsubject_request.rbi +38 -0
  62. data/lib/no_response/models/operations/deletereviewsubject_response.rb +32 -0
  63. data/lib/no_response/models/operations/deletereviewsubject_response.rbi +20 -0
  64. data/lib/no_response/models/operations/deletereviewview_request.rb +57 -0
  65. data/lib/no_response/models/operations/deletereviewview_request.rbi +32 -0
  66. data/lib/no_response/models/operations/deletereviewview_response.rb +28 -0
  67. data/lib/no_response/models/operations/deletereviewview_response.rbi +14 -0
  68. data/lib/no_response/models/operations/downloadcustomerexportchunk_request.rb +45 -0
  69. data/lib/no_response/models/operations/downloadcustomerexportchunk_request.rbi +26 -0
  70. data/lib/no_response/models/operations/downloadcustomerexportchunk_response.rb +32 -0
  71. data/lib/no_response/models/operations/downloadcustomerexportchunk_response.rbi +20 -0
  72. data/lib/no_response/models/operations/environment.rb +15 -0
  73. data/lib/no_response/models/operations/environment.rbi +9 -0
  74. data/lib/no_response/models/operations/exportreview_request.rb +45 -0
  75. data/lib/no_response/models/operations/exportreview_request.rbi +26 -0
  76. data/lib/no_response/models/operations/exportreview_response.rb +32 -0
  77. data/lib/no_response/models/operations/exportreview_response.rbi +20 -0
  78. data/lib/no_response/models/operations/getauditretention_request.rb +41 -0
  79. data/lib/no_response/models/operations/getauditretention_request.rbi +20 -0
  80. data/lib/no_response/models/operations/getauditretention_response.rb +32 -0
  81. data/lib/no_response/models/operations/getauditretention_response.rbi +20 -0
  82. data/lib/no_response/models/operations/getcustomerexport_request.rb +37 -0
  83. data/lib/no_response/models/operations/getcustomerexport_request.rbi +20 -0
  84. data/lib/no_response/models/operations/getcustomerexport_response.rb +32 -0
  85. data/lib/no_response/models/operations/getcustomerexport_response.rbi +20 -0
  86. data/lib/no_response/models/operations/geterasurereceipt_request.rb +28 -0
  87. data/lib/no_response/models/operations/geterasurereceipt_request.rbi +14 -0
  88. data/lib/no_response/models/operations/geterasurereceipt_response.rb +32 -0
  89. data/lib/no_response/models/operations/geterasurereceipt_response.rbi +20 -0
  90. data/lib/no_response/models/operations/getlistchange_request.rb +45 -0
  91. data/lib/no_response/models/operations/getlistchange_request.rbi +26 -0
  92. data/lib/no_response/models/operations/getlistchange_response.rb +32 -0
  93. data/lib/no_response/models/operations/getlistchange_response.rbi +20 -0
  94. data/lib/no_response/models/operations/getpolicyevaluation_request.rb +51 -0
  95. data/lib/no_response/models/operations/getpolicyevaluation_request.rbi +26 -0
  96. data/lib/no_response/models/operations/getpolicyevaluation_response.rb +32 -0
  97. data/lib/no_response/models/operations/getpolicyevaluation_response.rbi +20 -0
  98. data/lib/no_response/models/operations/getpolicyevaluationresult_request.rb +51 -0
  99. data/lib/no_response/models/operations/getpolicyevaluationresult_request.rbi +26 -0
  100. data/lib/no_response/models/operations/getpolicyevaluationresult_response.rb +34 -0
  101. data/lib/no_response/models/operations/getpolicyevaluationresult_response.rbi +20 -0
  102. data/lib/no_response/models/operations/getreview_request.rb +45 -0
  103. data/lib/no_response/models/operations/getreview_request.rbi +26 -0
  104. data/lib/no_response/models/operations/getreview_response.rb +32 -0
  105. data/lib/no_response/models/operations/getreview_response.rbi +20 -0
  106. data/lib/no_response/models/operations/getusage_request.rb +49 -0
  107. data/lib/no_response/models/operations/getusage_request.rbi +26 -0
  108. data/lib/no_response/models/operations/getusage_response.rb +32 -0
  109. data/lib/no_response/models/operations/getusage_response.rbi +20 -0
  110. data/lib/no_response/models/operations/listaccountcredentials_response.rb +12 -0
  111. data/lib/no_response/models/operations/listaccountdecisions_request.rb +45 -0
  112. data/lib/no_response/models/operations/listaccountdecisions_request.rbi +26 -0
  113. data/lib/no_response/models/operations/listaccountdecisions_response.rb +44 -0
  114. data/lib/no_response/models/operations/listaccountdecisions_response.rbi +20 -0
  115. data/lib/no_response/models/operations/listaccountenforcements_request.rb +45 -0
  116. data/lib/no_response/models/operations/listaccountenforcements_request.rbi +26 -0
  117. data/lib/no_response/models/operations/listaccountenforcements_response.rb +46 -0
  118. data/lib/no_response/models/operations/listaccountenforcements_response.rbi +20 -0
  119. data/lib/no_response/models/operations/listaccountoutcomes_response.rb +12 -0
  120. data/lib/no_response/models/operations/listauditevents_request.rb +140 -0
  121. data/lib/no_response/models/operations/listauditevents_request.rbi +74 -0
  122. data/lib/no_response/models/operations/listauditevents_response.rb +44 -0
  123. data/lib/no_response/models/operations/listauditevents_response.rbi +20 -0
  124. data/lib/no_response/models/operations/listauditstreams_request.rb +41 -0
  125. data/lib/no_response/models/operations/listauditstreams_request.rbi +20 -0
  126. data/lib/no_response/models/operations/listauditstreams_response.rb +32 -0
  127. data/lib/no_response/models/operations/listauditstreams_response.rbi +20 -0
  128. data/lib/no_response/models/operations/listcustomerexports_request.rb +74 -0
  129. data/lib/no_response/models/operations/listcustomerexports_request.rbi +38 -0
  130. data/lib/no_response/models/operations/listcustomerexports_response.rb +44 -0
  131. data/lib/no_response/models/operations/listcustomerexports_response.rbi +20 -0
  132. data/lib/no_response/models/operations/listinvites_request.rb +33 -0
  133. data/lib/no_response/models/operations/listinvites_request.rbi +14 -0
  134. data/lib/no_response/models/operations/listinvites_response.rb +32 -0
  135. data/lib/no_response/models/operations/listinvites_response.rbi +20 -0
  136. data/lib/no_response/models/operations/listlistentries_request.rb +26 -2
  137. data/lib/no_response/models/operations/listlistentries_request.rbi +12 -0
  138. data/lib/no_response/models/operations/listlistentries_response.rb +12 -0
  139. data/lib/no_response/models/operations/listmembers_request.rb +33 -0
  140. data/lib/no_response/models/operations/listmembers_request.rbi +14 -0
  141. data/lib/no_response/models/operations/listmembers_response.rb +32 -0
  142. data/lib/no_response/models/operations/listmembers_response.rbi +20 -0
  143. data/lib/no_response/models/operations/listpolicyevaluations_request.rb +65 -0
  144. data/lib/no_response/models/operations/listpolicyevaluations_request.rbi +32 -0
  145. data/lib/no_response/models/operations/listpolicyevaluations_response.rb +44 -0
  146. data/lib/no_response/models/operations/listpolicyevaluations_response.rbi +20 -0
  147. data/lib/no_response/models/operations/listpolicyhistory_request.rb +65 -0
  148. data/lib/no_response/models/operations/listpolicyhistory_request.rbi +32 -0
  149. data/lib/no_response/models/operations/listpolicyhistory_response.rb +32 -0
  150. data/lib/no_response/models/operations/listpolicyhistory_response.rbi +20 -0
  151. data/lib/no_response/models/operations/listrequestdiagnostics_request.rb +10 -1
  152. data/lib/no_response/models/operations/listrequestdiagnostics_request.rbi +6 -0
  153. data/lib/no_response/models/operations/listrequestdiagnostics_response.rb +12 -0
  154. data/lib/no_response/models/operations/listreviewcomments_request.rb +70 -0
  155. data/lib/no_response/models/operations/listreviewcomments_request.rbi +38 -0
  156. data/lib/no_response/models/operations/listreviewcomments_response.rb +44 -0
  157. data/lib/no_response/models/operations/listreviewcomments_response.rbi +20 -0
  158. data/lib/no_response/models/operations/listreviewresolutions_request.rb +70 -0
  159. data/lib/no_response/models/operations/listreviewresolutions_request.rbi +38 -0
  160. data/lib/no_response/models/operations/listreviewresolutions_response.rb +32 -0
  161. data/lib/no_response/models/operations/listreviewresolutions_response.rbi +20 -0
  162. data/lib/no_response/models/operations/listreviews_request.rb +120 -0
  163. data/lib/no_response/models/operations/listreviews_request.rbi +62 -0
  164. data/lib/no_response/models/operations/listreviews_response.rb +44 -0
  165. data/lib/no_response/models/operations/listreviews_response.rbi +20 -0
  166. data/lib/no_response/models/operations/listreviewsubjects_request.rb +45 -0
  167. data/lib/no_response/models/operations/listreviewsubjects_request.rbi +26 -0
  168. data/lib/no_response/models/operations/listreviewsubjects_response.rb +32 -0
  169. data/lib/no_response/models/operations/listreviewsubjects_response.rbi +20 -0
  170. data/lib/no_response/models/operations/listreviewviews_request.rb +41 -0
  171. data/lib/no_response/models/operations/listreviewviews_request.rbi +20 -0
  172. data/lib/no_response/models/operations/listreviewviews_response.rb +32 -0
  173. data/lib/no_response/models/operations/listreviewviews_response.rbi +20 -0
  174. data/lib/no_response/models/operations/previewlist_request.rb +52 -0
  175. data/lib/no_response/models/operations/previewlist_request.rbi +26 -0
  176. data/lib/no_response/models/operations/previewlist_response.rb +32 -0
  177. data/lib/no_response/models/operations/previewlist_response.rbi +20 -0
  178. data/lib/no_response/models/operations/previewpolicy_request.rb +52 -0
  179. data/lib/no_response/models/operations/previewpolicy_request.rbi +26 -0
  180. data/lib/no_response/models/operations/previewpolicy_response.rb +32 -0
  181. data/lib/no_response/models/operations/previewpolicy_response.rbi +20 -0
  182. data/lib/no_response/models/operations/publishpolicyevaluation_request.rb +61 -0
  183. data/lib/no_response/models/operations/publishpolicyevaluation_request.rbi +32 -0
  184. data/lib/no_response/models/operations/publishpolicyevaluation_response.rb +32 -0
  185. data/lib/no_response/models/operations/publishpolicyevaluation_response.rbi +20 -0
  186. data/lib/no_response/models/operations/removeauditstream_request.rb +45 -0
  187. data/lib/no_response/models/operations/removeauditstream_request.rbi +26 -0
  188. data/lib/no_response/models/operations/removeauditstream_response.rb +32 -0
  189. data/lib/no_response/models/operations/removeauditstream_response.rbi +20 -0
  190. data/lib/no_response/models/operations/removemember_request.rb +37 -0
  191. data/lib/no_response/models/operations/removemember_request.rbi +20 -0
  192. data/lib/no_response/models/operations/removemember_response.rb +28 -0
  193. data/lib/no_response/models/operations/removemember_response.rbi +14 -0
  194. data/lib/no_response/models/operations/replayauditstream_request.rb +57 -0
  195. data/lib/no_response/models/operations/replayauditstream_request.rbi +32 -0
  196. data/lib/no_response/models/operations/replayauditstream_response.rb +32 -0
  197. data/lib/no_response/models/operations/replayauditstream_response.rbi +20 -0
  198. data/lib/no_response/models/operations/resendinvite_request.rb +41 -0
  199. data/lib/no_response/models/operations/resendinvite_request.rbi +26 -0
  200. data/lib/no_response/models/operations/resendinvite_response.rb +32 -0
  201. data/lib/no_response/models/operations/resendinvite_response.rbi +20 -0
  202. data/lib/no_response/models/operations/resolvereview_request.rb +57 -0
  203. data/lib/no_response/models/operations/resolvereview_request.rbi +32 -0
  204. data/lib/no_response/models/operations/resolvereview_response.rb +32 -0
  205. data/lib/no_response/models/operations/resolvereview_response.rbi +20 -0
  206. data/lib/no_response/models/operations/restorepolicy_request.rb +52 -0
  207. data/lib/no_response/models/operations/restorepolicy_request.rbi +26 -0
  208. data/lib/no_response/models/operations/restorepolicy_response.rb +32 -0
  209. data/lib/no_response/models/operations/restorepolicy_response.rbi +20 -0
  210. data/lib/no_response/models/operations/retrycustomerexport_request.rb +43 -0
  211. data/lib/no_response/models/operations/retrycustomerexport_request.rbi +26 -0
  212. data/lib/no_response/models/operations/retrycustomerexport_response.rb +32 -0
  213. data/lib/no_response/models/operations/retrycustomerexport_response.rbi +20 -0
  214. data/lib/no_response/models/operations/revokeinvite_request.rb +37 -0
  215. data/lib/no_response/models/operations/revokeinvite_request.rbi +20 -0
  216. data/lib/no_response/models/operations/revokeinvite_response.rb +28 -0
  217. data/lib/no_response/models/operations/revokeinvite_response.rbi +14 -0
  218. data/lib/no_response/models/operations/summarizeworkspaceoperations_request.rb +37 -0
  219. data/lib/no_response/models/operations/summarizeworkspaceoperations_request.rbi +20 -0
  220. data/lib/no_response/models/operations/summarizeworkspaceoperations_response.rb +34 -0
  221. data/lib/no_response/models/operations/summarizeworkspaceoperations_response.rbi +20 -0
  222. data/lib/no_response/models/operations/updateauditretention_request.rb +52 -0
  223. data/lib/no_response/models/operations/updateauditretention_request.rbi +26 -0
  224. data/lib/no_response/models/operations/updateauditretention_response.rb +32 -0
  225. data/lib/no_response/models/operations/updateauditretention_response.rbi +20 -0
  226. data/lib/no_response/models/operations/updatemember_request.rb +41 -0
  227. data/lib/no_response/models/operations/updatemember_request.rbi +26 -0
  228. data/lib/no_response/models/operations/updatemember_response.rb +32 -0
  229. data/lib/no_response/models/operations/updatemember_response.rbi +20 -0
  230. data/lib/no_response/models/operations/updatereview_request.rb +57 -0
  231. data/lib/no_response/models/operations/updatereview_request.rbi +32 -0
  232. data/lib/no_response/models/operations/updatereview_response.rb +32 -0
  233. data/lib/no_response/models/operations/updatereview_response.rbi +20 -0
  234. data/lib/no_response/models/operations/updatereviewview_request.rb +57 -0
  235. data/lib/no_response/models/operations/updatereviewview_request.rbi +32 -0
  236. data/lib/no_response/models/operations/updatereviewview_response.rb +32 -0
  237. data/lib/no_response/models/operations/updatereviewview_response.rbi +20 -0
  238. data/lib/no_response/models/operations.rb +121 -0
  239. data/lib/no_response/models/shared/accountdecisionlist.rb +56 -0
  240. data/lib/no_response/models/shared/accountdecisionlist.rbi +26 -0
  241. data/lib/no_response/models/shared/accountdeletion.rb +11 -2
  242. data/lib/no_response/models/shared/accountdeletion.rbi +6 -0
  243. data/lib/no_response/models/shared/accountenforcementlist.rb +52 -0
  244. data/lib/no_response/models/shared/accountenforcementlist.rbi +26 -0
  245. data/lib/no_response/models/shared/accountoutcomeactor.rb +50 -11
  246. data/lib/no_response/models/shared/accountoutcomeactor.rbi +20 -2
  247. data/lib/no_response/models/shared/accountoutcomeactortype.rb +19 -0
  248. data/lib/no_response/models/shared/accountoutcomeactortype.rbi +9 -0
  249. data/lib/no_response/models/shared/accountriskreason.rb +1 -1
  250. data/lib/no_response/models/shared/action.rb +19 -0
  251. data/lib/no_response/models/shared/{defaultdepth.rbi → action.rbi} +2 -2
  252. data/lib/no_response/models/shared/actor.rb +23 -0
  253. data/lib/no_response/models/shared/actor.rbi +9 -0
  254. data/lib/no_response/models/shared/aggregategroup.rb +6 -6
  255. data/lib/no_response/models/shared/aggregategrouplistmatch.rb +20 -0
  256. data/lib/no_response/models/shared/aggregategrouplistmatch.rbi +9 -0
  257. data/lib/no_response/models/shared/assessmentaggregate.rb +10 -0
  258. data/lib/no_response/models/shared/assessmentaggregate.rbi +6 -0
  259. data/lib/no_response/models/shared/assessmentaggregatecoverage.rb +133 -0
  260. data/lib/no_response/models/shared/assessmentaggregatecoverage.rbi +62 -0
  261. data/lib/no_response/models/shared/assessmentaggregaterequest.rb +132 -2
  262. data/lib/no_response/models/shared/assessmentaggregaterequest.rbi +60 -0
  263. data/lib/no_response/models/shared/assessmentdeletion.rb +11 -2
  264. data/lib/no_response/models/shared/assessmentdeletion.rbi +6 -0
  265. data/lib/no_response/models/shared/assessmentsearchrequest.rb +115 -0
  266. data/lib/no_response/models/shared/assessmentsearchrequest.rbi +54 -0
  267. data/lib/no_response/models/shared/auditevent.rb +163 -0
  268. data/lib/no_response/models/shared/auditevent.rbi +74 -0
  269. data/lib/no_response/models/shared/auditeventevent.rb +70 -0
  270. data/lib/no_response/models/shared/auditeventevent.rbi +38 -0
  271. data/lib/no_response/models/shared/auditeventlist.rb +52 -0
  272. data/lib/no_response/models/shared/auditeventlist.rbi +26 -0
  273. data/lib/no_response/models/shared/auditeventtarget.rb +47 -0
  274. data/lib/no_response/models/shared/auditeventtarget.rbi +20 -0
  275. data/lib/no_response/models/shared/auditeventtargettype.rb +26 -0
  276. data/lib/no_response/models/shared/auditeventtargettype.rbi +9 -0
  277. data/lib/no_response/models/shared/auditsettings.rb +74 -0
  278. data/lib/no_response/models/shared/auditsettings.rbi +32 -0
  279. data/lib/no_response/models/shared/auditsettingsenvironment.rb +19 -0
  280. data/lib/no_response/models/shared/auditsettingsenvironment.rbi +9 -0
  281. data/lib/no_response/models/shared/auditsettingsrequest.rb +32 -0
  282. data/lib/no_response/models/shared/auditsettingsrequest.rbi +14 -0
  283. data/lib/no_response/models/shared/auditstream.rb +111 -0
  284. data/lib/no_response/models/shared/auditstream.rbi +50 -0
  285. data/lib/no_response/models/shared/auditstreamlist.rb +32 -0
  286. data/lib/no_response/models/shared/auditstreamlist.rbi +14 -0
  287. data/lib/no_response/models/shared/auditstreamreplayrequest.rb +33 -0
  288. data/lib/no_response/models/shared/auditstreamreplayrequest.rbi +14 -0
  289. data/lib/no_response/models/shared/auditstreamrequest.rb +40 -0
  290. data/lib/no_response/models/shared/auditstreamrequest.rbi +20 -0
  291. data/lib/no_response/models/shared/band.rb +1 -1
  292. data/lib/no_response/models/shared/conclusion.rb +20 -0
  293. data/lib/no_response/models/shared/conclusion.rbi +9 -0
  294. data/lib/no_response/models/shared/conflicterrorcode.rb +10 -0
  295. data/lib/no_response/models/shared/cost.rb +48 -0
  296. data/lib/no_response/models/shared/cost.rbi +32 -0
  297. data/lib/no_response/models/shared/coverage.rb +40 -0
  298. data/lib/no_response/models/shared/coverage.rbi +20 -0
  299. data/lib/no_response/models/shared/customerexport.rb +209 -0
  300. data/lib/no_response/models/shared/customerexport.rbi +104 -0
  301. data/lib/no_response/models/shared/customerexportactionrequest.rb +23 -0
  302. data/lib/no_response/models/shared/customerexportactionrequest.rbi +9 -0
  303. data/lib/no_response/models/shared/customerexportchunk.rb +78 -0
  304. data/lib/no_response/models/shared/customerexportchunk.rbi +44 -0
  305. data/lib/no_response/models/shared/customerexportlist.rb +40 -0
  306. data/lib/no_response/models/shared/customerexportlist.rbi +20 -0
  307. data/lib/no_response/models/shared/customerexportrequest.rb +90 -0
  308. data/lib/no_response/models/shared/customerexportrequest.rbi +38 -0
  309. data/lib/no_response/models/shared/customerexportrequestfilter.rb +122 -0
  310. data/lib/no_response/models/shared/customerexportrequestfilter.rbi +56 -0
  311. data/lib/no_response/models/shared/customerexportrequestfilteroutcome.rb +19 -0
  312. data/lib/no_response/models/shared/customerexportrequestfilteroutcome.rbi +9 -0
  313. data/lib/no_response/models/shared/customerexportrequestkind.rb +19 -0
  314. data/lib/no_response/models/shared/customerexportrequestkind.rbi +9 -0
  315. data/lib/no_response/models/shared/customerexportstatus.rb +23 -0
  316. data/lib/no_response/models/shared/customerexportstatus.rbi +9 -0
  317. data/lib/no_response/models/shared/enforcements.rb +93 -0
  318. data/lib/no_response/models/shared/enforcements.rbi +44 -0
  319. data/lib/no_response/models/shared/environment.rb +6 -2
  320. data/lib/no_response/models/shared/erasurereceipt.rb +118 -0
  321. data/lib/no_response/models/shared/erasurereceipt.rbi +56 -0
  322. data/lib/no_response/models/shared/erasurereceiptkind.rb +20 -0
  323. data/lib/no_response/models/shared/erasurereceiptkind.rbi +9 -0
  324. data/lib/no_response/models/shared/erasurereceipttarget.rb +67 -0
  325. data/lib/no_response/models/shared/erasurereceipttarget.rbi +26 -0
  326. data/lib/no_response/models/shared/erasurereceipttargetname.rb +21 -0
  327. data/lib/no_response/models/shared/erasurereceipttargetname.rbi +9 -0
  328. data/lib/no_response/models/shared/erasurereceipttargetstatus.rb +19 -0
  329. data/lib/no_response/models/shared/erasurereceipttargetstatus.rbi +9 -0
  330. data/lib/no_response/models/shared/exclusion.rb +1 -0
  331. data/lib/no_response/models/shared/export.rb +73 -0
  332. data/lib/no_response/models/shared/export.rbi +38 -0
  333. data/lib/no_response/models/shared/filter.rb +83 -0
  334. data/lib/no_response/models/shared/filter.rbi +38 -0
  335. data/lib/no_response/models/shared/flowchange.rb +4 -4
  336. data/lib/no_response/models/shared/flowsettings.rb +4 -4
  337. data/lib/no_response/models/shared/from.rb +22 -0
  338. data/lib/no_response/models/shared/from.rbi +9 -0
  339. data/lib/no_response/models/shared/impact.rb +1 -1
  340. data/lib/no_response/models/shared/invite.rb +152 -0
  341. data/lib/no_response/models/shared/invite.rbi +80 -0
  342. data/lib/no_response/models/shared/invite_denied_action.rb +20 -0
  343. data/lib/no_response/models/shared/invite_denied_action.rbi +9 -0
  344. data/lib/no_response/models/shared/invite_environment.rb +19 -0
  345. data/lib/no_response/models/shared/invite_environment.rbi +9 -0
  346. data/lib/no_response/models/shared/invitelist.rb +32 -0
  347. data/lib/no_response/models/shared/invitelist.rbi +14 -0
  348. data/lib/no_response/models/shared/inviterequest.rb +80 -0
  349. data/lib/no_response/models/shared/inviterequest.rbi +38 -0
  350. data/lib/no_response/models/shared/inviterequest_denied_action.rb +17 -0
  351. data/lib/no_response/models/shared/inviterequest_denied_action.rbi +9 -0
  352. data/lib/no_response/models/shared/inviterequest_environment.rb +16 -0
  353. data/lib/no_response/models/shared/inviterequest_environment.rbi +9 -0
  354. data/lib/no_response/models/shared/inviteresendrequest.rb +23 -0
  355. data/lib/no_response/models/shared/inviteresendrequest.rbi +9 -0
  356. data/lib/no_response/models/shared/key.rb +68 -3
  357. data/lib/no_response/models/shared/key.rbi +36 -0
  358. data/lib/no_response/models/shared/key_scope.rb +10 -0
  359. data/lib/no_response/models/shared/keyactor.rb +41 -0
  360. data/lib/no_response/models/shared/keyactor.rbi +20 -0
  361. data/lib/no_response/models/shared/keykind.rb +19 -0
  362. data/lib/no_response/models/shared/keykind.rbi +9 -0
  363. data/lib/no_response/models/shared/keyrequest.rb +57 -3
  364. data/lib/no_response/models/shared/keyrequest.rbi +30 -0
  365. data/lib/no_response/models/shared/keyrequest_scope.rb +10 -0
  366. data/lib/no_response/models/shared/listbulkrequest.rb +42 -0
  367. data/lib/no_response/models/shared/listbulkrequest.rbi +20 -0
  368. data/lib/no_response/models/shared/listchange.rb +98 -0
  369. data/lib/no_response/models/shared/listchange.rbi +50 -0
  370. data/lib/no_response/models/shared/listchangestate.rb +19 -0
  371. data/lib/no_response/models/shared/listchangestate.rbi +9 -0
  372. data/lib/no_response/models/shared/listentry.rb +22 -2
  373. data/lib/no_response/models/shared/listentry.rbi +6 -0
  374. data/lib/no_response/models/shared/listentrylist.rb +11 -3
  375. data/lib/no_response/models/shared/listentrylist.rbi +6 -0
  376. data/lib/no_response/models/shared/listentryrequest.rb +11 -2
  377. data/lib/no_response/models/shared/listentryrequest.rbi +6 -0
  378. data/lib/no_response/models/shared/listimpact.rb +154 -0
  379. data/lib/no_response/models/shared/listimpact.rbi +68 -0
  380. data/lib/no_response/models/shared/listimpactkind.rb +19 -0
  381. data/lib/no_response/models/shared/listimpactkind.rbi +9 -0
  382. data/lib/no_response/models/shared/listimpacttransition.rb +67 -0
  383. data/lib/no_response/models/shared/listimpacttransition.rbi +26 -0
  384. data/lib/no_response/models/shared/listimpacttransitionfrom.rb +20 -0
  385. data/lib/no_response/models/shared/listimpacttransitionfrom.rbi +9 -0
  386. data/lib/no_response/models/shared/listmatch.rb +4 -6
  387. data/lib/no_response/models/shared/listpreviewrequest.rb +41 -0
  388. data/lib/no_response/models/shared/listpreviewrequest.rbi +20 -0
  389. data/lib/no_response/models/shared/member.rb +158 -0
  390. data/lib/no_response/models/shared/member.rbi +80 -0
  391. data/lib/no_response/models/shared/member_denied_action.rb +20 -0
  392. data/lib/no_response/models/shared/member_denied_action.rbi +9 -0
  393. data/lib/no_response/models/shared/member_environment.rb +19 -0
  394. data/lib/no_response/models/shared/member_environment.rbi +9 -0
  395. data/lib/no_response/models/shared/memberlist.rb +32 -0
  396. data/lib/no_response/models/shared/memberlist.rbi +14 -0
  397. data/lib/no_response/models/shared/memberstatus.rb +18 -0
  398. data/lib/no_response/models/shared/memberstatus.rbi +9 -0
  399. data/lib/no_response/models/shared/memberupdaterequest.rb +62 -0
  400. data/lib/no_response/models/shared/memberupdaterequest.rbi +26 -0
  401. data/lib/no_response/models/shared/memberupdaterequest_denied_action.rb +17 -0
  402. data/lib/no_response/models/shared/memberupdaterequest_denied_action.rbi +9 -0
  403. data/lib/no_response/models/shared/memberupdaterequest_environment.rb +16 -0
  404. data/lib/no_response/models/shared/memberupdaterequest_environment.rbi +9 -0
  405. data/lib/no_response/models/shared/metric.rb +20 -0
  406. data/lib/no_response/models/shared/metric.rbi +9 -0
  407. data/lib/no_response/models/shared/operationalaggregate.rb +175 -0
  408. data/lib/no_response/models/shared/operationalaggregate.rbi +86 -0
  409. data/lib/no_response/models/shared/operationalaggregatebucket.rb +149 -0
  410. data/lib/no_response/models/shared/operationalaggregatebucket.rbi +80 -0
  411. data/lib/no_response/models/shared/operationalaggregatequeue.rb +64 -0
  412. data/lib/no_response/models/shared/operationalaggregatequeue.rbi +32 -0
  413. data/lib/no_response/models/shared/operationalaggregatetotals.rb +139 -0
  414. data/lib/no_response/models/shared/operationalaggregatetotals.rbi +74 -0
  415. data/lib/no_response/models/shared/outcomes.rb +93 -0
  416. data/lib/no_response/models/shared/outcomes.rbi +44 -0
  417. data/lib/no_response/models/shared/outcomesbyoutcome.rb +89 -0
  418. data/lib/no_response/models/shared/outcomesbyoutcome.rbi +44 -0
  419. data/lib/no_response/models/shared/ownertype.rb +19 -0
  420. data/lib/no_response/models/shared/ownertype.rbi +9 -0
  421. data/lib/no_response/models/shared/policyevaluation.rb +256 -0
  422. data/lib/no_response/models/shared/policyevaluation.rbi +134 -0
  423. data/lib/no_response/models/shared/policyevaluationcancelrequest.rb +23 -0
  424. data/lib/no_response/models/shared/policyevaluationcancelrequest.rbi +9 -0
  425. data/lib/no_response/models/shared/policyevaluationlist.rb +40 -0
  426. data/lib/no_response/models/shared/policyevaluationlist.rbi +20 -0
  427. data/lib/no_response/models/shared/policyevaluationpublishrequest.rb +89 -0
  428. data/lib/no_response/models/shared/policyevaluationpublishrequest.rbi +44 -0
  429. data/lib/no_response/models/shared/policyevaluationrequest.rb +101 -0
  430. data/lib/no_response/models/shared/policyevaluationrequest.rbi +56 -0
  431. data/lib/no_response/models/shared/policyevaluationrequestcosts.rb +40 -0
  432. data/lib/no_response/models/shared/policyevaluationrequestcosts.rbi +20 -0
  433. data/lib/no_response/models/shared/policyevaluationrequestlimits.rb +59 -0
  434. data/lib/no_response/models/shared/policyevaluationrequestlimits.rbi +32 -0
  435. data/lib/no_response/models/shared/policyevaluationresult.rb +40 -0
  436. data/lib/no_response/models/shared/policyevaluationresult.rbi +20 -0
  437. data/lib/no_response/models/shared/policyevaluationstatus.rb +22 -0
  438. data/lib/no_response/models/shared/policyevaluationstatus.rbi +9 -0
  439. data/lib/no_response/models/shared/policyhistory.rb +64 -0
  440. data/lib/no_response/models/shared/policyhistory.rbi +32 -0
  441. data/lib/no_response/models/shared/policyhistoryitem.rb +74 -0
  442. data/lib/no_response/models/shared/policyhistoryitem.rbi +38 -0
  443. data/lib/no_response/models/shared/policypreview.rb +115 -0
  444. data/lib/no_response/models/shared/policypreview.rbi +62 -0
  445. data/lib/no_response/models/shared/policypreviewcoverage.rb +108 -0
  446. data/lib/no_response/models/shared/policypreviewcoverage.rbi +50 -0
  447. data/lib/no_response/models/shared/policypreviewrequest.rb +65 -0
  448. data/lib/no_response/models/shared/policypreviewrequest.rbi +38 -0
  449. data/lib/no_response/models/shared/policypreviewrequestflows.rb +55 -0
  450. data/lib/no_response/models/shared/policypreviewrequestflows.rbi +26 -0
  451. data/lib/no_response/models/shared/policypreviewrequestflowsaccountcreation.rb +48 -0
  452. data/lib/no_response/models/shared/policypreviewrequestflowsaccountcreation.rbi +26 -0
  453. data/lib/no_response/models/shared/policypreviewrequestflowslogin.rb +64 -0
  454. data/lib/no_response/models/shared/policypreviewrequestflowslogin.rbi +32 -0
  455. data/lib/no_response/models/shared/policypreviewrequestflowspurchase.rb +64 -0
  456. data/lib/no_response/models/shared/policypreviewrequestflowspurchase.rbi +32 -0
  457. data/lib/no_response/models/shared/policypreviewtransition.rb +60 -0
  458. data/lib/no_response/models/shared/policypreviewtransition.rbi +26 -0
  459. data/lib/no_response/models/shared/policyrestorerequest.rb +48 -0
  460. data/lib/no_response/models/shared/policyrestorerequest.rbi +26 -0
  461. data/lib/no_response/models/shared/population.rb +19 -0
  462. data/lib/no_response/models/shared/population.rbi +9 -0
  463. data/lib/no_response/models/shared/priority.rb +21 -0
  464. data/lib/no_response/models/shared/priority.rbi +9 -0
  465. data/lib/no_response/models/shared/publication.rb +133 -0
  466. data/lib/no_response/models/shared/publication.rbi +68 -0
  467. data/lib/no_response/models/shared/ratelimiterrorcode.rb +2 -0
  468. data/lib/no_response/models/shared/report.rb +99 -0
  469. data/lib/no_response/models/shared/report.rbi +44 -0
  470. data/lib/no_response/models/shared/report_scope.rb +23 -0
  471. data/lib/no_response/models/shared/report_scope.rbi +9 -0
  472. data/lib/no_response/models/shared/requestaggregaterequest.rb +79 -0
  473. data/lib/no_response/models/shared/requestaggregaterequest.rbi +44 -0
  474. data/lib/no_response/models/shared/requestaggregaterequestbucket.rb +19 -0
  475. data/lib/no_response/models/shared/requestaggregaterequestbucket.rbi +9 -0
  476. data/lib/no_response/models/shared/requestdiagnostic.rb +12 -2
  477. data/lib/no_response/models/shared/requestdiagnostic.rbi +6 -0
  478. data/lib/no_response/models/shared/resolution.rb +111 -0
  479. data/lib/no_response/models/shared/resolution.rbi +56 -0
  480. data/lib/no_response/models/shared/resultstatus.rb +19 -0
  481. data/lib/no_response/models/shared/resultstatus.rbi +9 -0
  482. data/lib/no_response/models/shared/review.rb +187 -0
  483. data/lib/no_response/models/shared/review.rbi +98 -0
  484. data/lib/no_response/models/shared/reviewcomment.rb +59 -0
  485. data/lib/no_response/models/shared/reviewcomment.rbi +38 -0
  486. data/lib/no_response/models/shared/reviewcommentlist.rb +40 -0
  487. data/lib/no_response/models/shared/reviewcommentlist.rbi +20 -0
  488. data/lib/no_response/models/shared/reviewcommentrequest.rb +36 -0
  489. data/lib/no_response/models/shared/reviewcommentrequest.rbi +20 -0
  490. data/lib/no_response/models/shared/reviewcreaterequest.rb +57 -0
  491. data/lib/no_response/models/shared/reviewcreaterequest.rbi +26 -0
  492. data/lib/no_response/models/shared/reviewlist.rb +40 -0
  493. data/lib/no_response/models/shared/reviewlist.rbi +20 -0
  494. data/lib/no_response/models/shared/reviewresolutionlist.rb +40 -0
  495. data/lib/no_response/models/shared/reviewresolutionlist.rbi +20 -0
  496. data/lib/no_response/models/shared/reviewresolverequest.rb +66 -0
  497. data/lib/no_response/models/shared/reviewresolverequest.rbi +32 -0
  498. data/lib/no_response/models/shared/reviews.rb +119 -0
  499. data/lib/no_response/models/shared/reviews.rbi +62 -0
  500. data/lib/no_response/models/shared/reviewsconclusions.rb +50 -0
  501. data/lib/no_response/models/shared/reviewsconclusions.rbi +26 -0
  502. data/lib/no_response/models/shared/reviewstatus.rb +20 -0
  503. data/lib/no_response/models/shared/reviewstatus.rbi +9 -0
  504. data/lib/no_response/models/shared/reviewsubject.rb +131 -0
  505. data/lib/no_response/models/shared/reviewsubject.rbi +68 -0
  506. data/lib/no_response/models/shared/reviewsubjectchange.rb +40 -0
  507. data/lib/no_response/models/shared/reviewsubjectchange.rbi +20 -0
  508. data/lib/no_response/models/shared/reviewsubjectkind.rb +20 -0
  509. data/lib/no_response/models/shared/reviewsubjectkind.rbi +9 -0
  510. data/lib/no_response/models/shared/reviewsubjectlist.rb +40 -0
  511. data/lib/no_response/models/shared/reviewsubjectlist.rbi +20 -0
  512. data/lib/no_response/models/shared/reviewsubjectrequest.rb +105 -0
  513. data/lib/no_response/models/shared/reviewsubjectrequest.rbi +50 -0
  514. data/lib/no_response/models/shared/reviewupdaterequest.rb +74 -0
  515. data/lib/no_response/models/shared/reviewupdaterequest.rbi +32 -0
  516. data/lib/no_response/models/shared/reviewupdaterequeststatus.rb +16 -0
  517. data/lib/no_response/models/shared/reviewupdaterequeststatus.rbi +9 -0
  518. data/lib/no_response/models/shared/reviewview.rb +127 -0
  519. data/lib/no_response/models/shared/reviewview.rbi +68 -0
  520. data/lib/no_response/models/shared/reviewviewdeleterequest.rb +32 -0
  521. data/lib/no_response/models/shared/reviewviewdeleterequest.rbi +14 -0
  522. data/lib/no_response/models/shared/reviewviewlist.rb +32 -0
  523. data/lib/no_response/models/shared/reviewviewlist.rbi +14 -0
  524. data/lib/no_response/models/shared/reviewviewrequest.rb +60 -0
  525. data/lib/no_response/models/shared/reviewviewrequest.rbi +32 -0
  526. data/lib/no_response/models/shared/risk.rb +1 -1
  527. data/lib/no_response/models/shared/riskreason.rb +1 -1
  528. data/lib/no_response/models/shared/role.rb +24 -0
  529. data/lib/no_response/models/shared/role.rbi +9 -0
  530. data/lib/no_response/models/shared/settings.rb +1 -1
  531. data/lib/no_response/models/shared/settingsrequest.rb +27 -3
  532. data/lib/no_response/models/shared/settingsrequest.rbi +12 -0
  533. data/lib/no_response/models/shared/source.rb +19 -0
  534. data/lib/no_response/models/shared/source.rbi +9 -0
  535. data/lib/no_response/models/shared/thresholds.rb +48 -0
  536. data/lib/no_response/models/shared/thresholds.rbi +26 -0
  537. data/lib/no_response/models/shared/usage.rb +51 -0
  538. data/lib/no_response/models/shared/usage.rbi +32 -0
  539. data/lib/no_response/models/shared/usagecount.rb +100 -0
  540. data/lib/no_response/models/shared/usagecount.rbi +44 -0
  541. data/lib/no_response/models/shared/{defaultdepth.rb → usagecountdepth.rb} +2 -2
  542. data/lib/no_response/models/shared/usagecountdepth.rbi +9 -0
  543. data/lib/no_response/models/shared/usagecountflow.rb +20 -0
  544. data/lib/no_response/models/shared/usagecountflow.rbi +9 -0
  545. data/lib/no_response/models/shared/useractor.rb +65 -0
  546. data/lib/no_response/models/shared/useractor.rbi +32 -0
  547. data/lib/no_response/models/shared/webhookaggregaterequest.rb +70 -0
  548. data/lib/no_response/models/shared/webhookaggregaterequest.rbi +38 -0
  549. data/lib/no_response/models/shared/webhookdeliveryattempt.rb +1 -1
  550. data/lib/no_response/models/shared/webhookreplay.rb +1 -1
  551. data/lib/no_response/models/shared/workspacedeleted.rb +7 -4
  552. data/lib/no_response/models/shared/workspaceoperationssummary.rb +166 -0
  553. data/lib/no_response/models/shared/workspaceoperationssummary.rbi +86 -0
  554. data/lib/no_response/models/shared/workspaceoperationssummaryrequest.rb +46 -0
  555. data/lib/no_response/models/shared/workspaceoperationssummaryrequest.rbi +26 -0
  556. data/lib/no_response/models/shared.rb +139 -1
  557. data/lib/no_response/noresponseclient.rb +19 -1
  558. data/lib/no_response/operations.rb +343 -0
  559. data/lib/no_response/requests.rb +323 -0
  560. data/lib/no_response/reviews.rb +4806 -0
  561. data/lib/no_response/sdk_hooks/idempotency_key_hook.rb +1 -1
  562. data/lib/no_response/sdkconfiguration.rb +2 -2
  563. data/lib/no_response/settings.rb +903 -2
  564. data/lib/no_response/usage.rb +334 -0
  565. data/lib/no_response/webhook_verification.rb +4 -2
  566. data/lib/no_response/webhookendpoints.rb +293 -0
  567. data/lib/noresponse.rb +9 -0
  568. metadata +501 -4
@@ -0,0 +1,4806 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ require "faraday"
5
+ require "faraday/multipart"
6
+ require "faraday/retry"
7
+ require "sorbet-runtime"
8
+ require "janeway"
9
+
10
+ require_relative "sdk_hooks/hooks"
11
+ require_relative "utils/retries"
12
+
13
+ module NoResponse
14
+ extend T::Sig
15
+
16
+ class Reviews
17
+ extend T::Sig
18
+
19
+ # Collaborative review cases, comments and linked subjects.
20
+
21
+ sig { params(sdk_config: SDKConfiguration).void }
22
+ def initialize(sdk_config)
23
+ @sdk_configuration = sdk_config
24
+ end
25
+
26
+ sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
27
+ def get_url(base_url:, url_variables: nil)
28
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
29
+
30
+ if base_url.nil?
31
+ base_url = sd_base_url
32
+ end
33
+
34
+ if url_variables.nil?
35
+ url_variables = sd_options
36
+ end
37
+
38
+ return Utils.template_url(base_url, url_variables)
39
+ end
40
+
41
+ sig {
42
+ params(
43
+ request: Models::Operations::ListReviewsRequest,
44
+ retries: T.nilable(Utils::RetryConfig),
45
+ timeout_ms: T.nilable(Integer),
46
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
47
+ )
48
+ .returns(Models::Operations::ListReviewsResponse)
49
+ }
50
+ def list(request:, retries: nil, timeout_ms: nil, http_headers: nil)
51
+ # list - List retained account reviews.
52
+ # List retained investigation reviews using filters and an authenticated cursor.
53
+ url, params = @sdk_configuration.get_server_details
54
+ base_url = Utils.template_url(url, params)
55
+ url = Utils.generate_url(
56
+ Models::Operations::ListReviewsRequest,
57
+ base_url,
58
+ "/v1/workspaces/{workspace_id}/reviews/{environment}",
59
+ request
60
+ )
61
+ headers = {}
62
+ headers = T.cast(headers, T::Hash[String, String])
63
+ query_params = Utils.get_query_params(Models::Operations::ListReviewsRequest, request, nil)
64
+ headers["Accept"] = "application/json"
65
+ headers["user-agent"] = @sdk_configuration.user_agent
66
+ retries ||= @sdk_configuration.retry_config
67
+ retries ||= Utils::RetryConfig.new(
68
+ backoff: Utils::BackoffStrategy.new(
69
+ exponent: 2.0,
70
+ initial_interval: 500,
71
+ max_elapsed_time: 30_000,
72
+ max_interval: 8000
73
+ ),
74
+ retry_connection_errors: true,
75
+ strategy: "backoff"
76
+ )
77
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
78
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
79
+
80
+ security = @sdk_configuration.security_source&.call
81
+
82
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
83
+ timeout ||= @sdk_configuration.timeout
84
+
85
+ connection = @sdk_configuration.client.dup
86
+ connection.use(Utils::RetryMiddleware, retry_options)
87
+
88
+ hook_ctx = SDKHooks::HookContext.new(
89
+ config: @sdk_configuration,
90
+ base_url: base_url,
91
+ oauth2_scopes: nil,
92
+ operation_id: "listReviews",
93
+ security_source: @sdk_configuration.security_source
94
+ )
95
+
96
+ error = T.let(nil, T.nilable(StandardError))
97
+ http_response = T.let(nil, T.nilable(Faraday::Response))
98
+
99
+ begin
100
+ http_response = T.must(connection).get(url) do |req|
101
+ req.headers.merge!(headers)
102
+ req.options.timeout = timeout unless timeout.nil?
103
+ req.params = query_params
104
+ Utils.configure_request_security(req, security)
105
+ http_headers&.each do |key, value|
106
+ req.headers[key.to_s] = value
107
+ end
108
+
109
+ @sdk_configuration.hooks.before_request(
110
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
111
+ hook_ctx: hook_ctx
112
+ ),
113
+ request: req
114
+ )
115
+ end
116
+
117
+ rescue StandardError => e
118
+ error = e
119
+ ensure
120
+ if http_response.nil? || Utils.error_status?(http_response.status)
121
+ http_response = @sdk_configuration.hooks.after_error(
122
+ error: error,
123
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
124
+ hook_ctx: hook_ctx
125
+ ),
126
+ response: http_response
127
+ )
128
+ else
129
+ http_response = @sdk_configuration.hooks.after_success(
130
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
131
+ hook_ctx: hook_ctx
132
+ ),
133
+ response: http_response
134
+ )
135
+ end
136
+
137
+ if http_response.nil?
138
+ raise error if !error.nil?
139
+ raise "no response"
140
+ end
141
+ end
142
+
143
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
144
+ if Utils.match_status_code(http_response.status, ["200"])
145
+ if Utils.match_content_type(content_type, "application/json")
146
+ @sdk_configuration.hooks.after_success(
147
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
148
+ hook_ctx: hook_ctx
149
+ ),
150
+ response: http_response
151
+ )
152
+ response_data = http_response.env.response_body
153
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewList)
154
+ result = obj
155
+ response = Models::Operations::ListReviewsResponse.new(
156
+ result: result,
157
+ headers: http_response.headers
158
+ )
159
+ sdk = self
160
+
161
+ response.next_page = proc do
162
+ next_cursor = Janeway.enum_for("$.next_cursor", JSON.parse(response_data)).search
163
+ if next_cursor.nil?
164
+ next nil
165
+ else
166
+ next_cursor = next_cursor[0]
167
+ if next_cursor.nil?
168
+ next nil
169
+ end
170
+ end
171
+
172
+ sdk.list(
173
+ request: Models::Operations::ListReviewsRequest.new(
174
+ workspace_id: request.workspace_id,
175
+ environment: request.environment,
176
+ limit: request.limit,
177
+ cursor: next_cursor,
178
+ status: request.status,
179
+ priority: request.priority,
180
+ assignee: request.assignee,
181
+ unassigned: request.unassigned,
182
+ assignee_principal_id: request.assignee_principal_id
183
+ ),
184
+ http_headers: http_headers
185
+ )
186
+ end
187
+
188
+ return response
189
+ else
190
+ raise(
191
+ ::NoResponse::Models::Errors::APIStatusError.new(
192
+ status_code: http_response.status,
193
+ body: http_response.env.response_body,
194
+ raw_response: http_response
195
+ ),
196
+ "Unknown content type received"
197
+ )
198
+ end
199
+ elsif Utils.match_status_code(http_response.status, ["400"])
200
+ if Utils.match_content_type(content_type, "application/problem+json")
201
+ @sdk_configuration.hooks.after_success(
202
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
203
+ hook_ctx: hook_ctx
204
+ ),
205
+ response: http_response
206
+ )
207
+ response_data = http_response.env.response_body
208
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
209
+ raise obj
210
+ else
211
+ raise(
212
+ ::NoResponse::Models::Errors::APIStatusError.new(
213
+ status_code: http_response.status,
214
+ body: http_response.env.response_body,
215
+ raw_response: http_response
216
+ ),
217
+ "Unknown content type received"
218
+ )
219
+ end
220
+ elsif Utils.match_status_code(http_response.status, ["401"])
221
+ if Utils.match_content_type(content_type, "application/problem+json")
222
+ @sdk_configuration.hooks.after_success(
223
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
224
+ hook_ctx: hook_ctx
225
+ ),
226
+ response: http_response
227
+ )
228
+ response_data = http_response.env.response_body
229
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
230
+ raise obj
231
+ else
232
+ raise(
233
+ ::NoResponse::Models::Errors::APIStatusError.new(
234
+ status_code: http_response.status,
235
+ body: http_response.env.response_body,
236
+ raw_response: http_response
237
+ ),
238
+ "Unknown content type received"
239
+ )
240
+ end
241
+ elsif Utils.match_status_code(http_response.status, ["403"])
242
+ if Utils.match_content_type(content_type, "application/problem+json")
243
+ @sdk_configuration.hooks.after_success(
244
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
245
+ hook_ctx: hook_ctx
246
+ ),
247
+ response: http_response
248
+ )
249
+ response_data = http_response.env.response_body
250
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
251
+ raise obj
252
+ else
253
+ raise(
254
+ ::NoResponse::Models::Errors::APIStatusError.new(
255
+ status_code: http_response.status,
256
+ body: http_response.env.response_body,
257
+ raw_response: http_response
258
+ ),
259
+ "Unknown content type received"
260
+ )
261
+ end
262
+ elsif Utils.match_status_code(http_response.status, ["404"])
263
+ if Utils.match_content_type(content_type, "application/problem+json")
264
+ @sdk_configuration.hooks.after_success(
265
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
266
+ hook_ctx: hook_ctx
267
+ ),
268
+ response: http_response
269
+ )
270
+ response_data = http_response.env.response_body
271
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
272
+ raise obj
273
+ else
274
+ raise(
275
+ ::NoResponse::Models::Errors::APIStatusError.new(
276
+ status_code: http_response.status,
277
+ body: http_response.env.response_body,
278
+ raw_response: http_response
279
+ ),
280
+ "Unknown content type received"
281
+ )
282
+ end
283
+ elsif Utils.match_status_code(http_response.status, ["409"])
284
+ if Utils.match_content_type(content_type, "application/problem+json")
285
+ @sdk_configuration.hooks.after_success(
286
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
287
+ hook_ctx: hook_ctx
288
+ ),
289
+ response: http_response
290
+ )
291
+ response_data = http_response.env.response_body
292
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
293
+ raise obj
294
+ else
295
+ raise(
296
+ ::NoResponse::Models::Errors::APIStatusError.new(
297
+ status_code: http_response.status,
298
+ body: http_response.env.response_body,
299
+ raw_response: http_response
300
+ ),
301
+ "Unknown content type received"
302
+ )
303
+ end
304
+ elsif Utils.match_status_code(http_response.status, ["429"])
305
+ if Utils.match_content_type(content_type, "application/problem+json")
306
+ @sdk_configuration.hooks.after_success(
307
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
308
+ hook_ctx: hook_ctx
309
+ ),
310
+ response: http_response
311
+ )
312
+ response_data = http_response.env.response_body
313
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
314
+ raise obj
315
+ else
316
+ raise(
317
+ ::NoResponse::Models::Errors::APIStatusError.new(
318
+ status_code: http_response.status,
319
+ body: http_response.env.response_body,
320
+ raw_response: http_response
321
+ ),
322
+ "Unknown content type received"
323
+ )
324
+ end
325
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
326
+ raise(
327
+ ::NoResponse::Models::Errors::APIStatusError.new(
328
+ status_code: http_response.status,
329
+ body: http_response.env.response_body,
330
+ raw_response: http_response
331
+ ),
332
+ "API error occurred"
333
+ )
334
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
335
+ raise(
336
+ ::NoResponse::Models::Errors::APIStatusError.new(
337
+ status_code: http_response.status,
338
+ body: http_response.env.response_body,
339
+ raw_response: http_response
340
+ ),
341
+ "API error occurred"
342
+ )
343
+ else
344
+ raise(
345
+ ::NoResponse::Models::Errors::APIStatusError.new(
346
+ status_code: http_response.status,
347
+ body: http_response.env.response_body,
348
+ raw_response: http_response
349
+ ),
350
+ "Unknown status code received"
351
+ )
352
+
353
+ end
354
+ end
355
+
356
+ sig {
357
+ params(
358
+ body: Models::Shared::ReviewCreateRequest,
359
+ workspace_id: ::String,
360
+ environment: Models::Shared::KeyEnvironment,
361
+ timeout_ms: T.nilable(Integer),
362
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
363
+ )
364
+ .returns(Models::Operations::CreateReviewResponse)
365
+ }
366
+ def create(body:, workspace_id:, environment:, timeout_ms: nil, http_headers: nil)
367
+ # create - Open a review for a retained account.
368
+ # Open a review for one account. An account can have one active review in its environment.
369
+ request = Models::Operations::CreateReviewRequest.new(
370
+ workspace_id: workspace_id,
371
+ environment: environment,
372
+ body: body
373
+ )
374
+ url, params = @sdk_configuration.get_server_details
375
+ base_url = Utils.template_url(url, params)
376
+ url = Utils.generate_url(
377
+ Models::Operations::CreateReviewRequest,
378
+ base_url,
379
+ "/v1/workspaces/{workspace_id}/reviews/{environment}",
380
+ request
381
+ )
382
+ headers = {}
383
+ headers = T.cast(headers, T::Hash[String, String])
384
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
385
+ headers["content-type"] = req_content_type
386
+ raise StandardError, "request body is required" if data.nil? && form.nil?
387
+
388
+ if form && !form.empty?
389
+ body = Utils.encode_form(form)
390
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
391
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
392
+ else
393
+ body = data
394
+ end
395
+
396
+ headers["Accept"] = "application/json"
397
+ headers["user-agent"] = @sdk_configuration.user_agent
398
+
399
+ security = @sdk_configuration.security_source&.call
400
+
401
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
402
+ timeout ||= @sdk_configuration.timeout
403
+
404
+ connection = @sdk_configuration.client
405
+
406
+ hook_ctx = SDKHooks::HookContext.new(
407
+ config: @sdk_configuration,
408
+ base_url: base_url,
409
+ oauth2_scopes: nil,
410
+ operation_id: "createReview",
411
+ security_source: @sdk_configuration.security_source
412
+ )
413
+
414
+ error = T.let(nil, T.nilable(StandardError))
415
+ http_response = T.let(nil, T.nilable(Faraday::Response))
416
+
417
+ begin
418
+ http_response = T.must(connection).post(url) do |req|
419
+ req.body = body
420
+ req.headers.merge!(headers)
421
+ req.options.timeout = timeout unless timeout.nil?
422
+ Utils.configure_request_security(req, security)
423
+ http_headers&.each do |key, value|
424
+ req.headers[key.to_s] = value
425
+ end
426
+
427
+ @sdk_configuration.hooks.before_request(
428
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
429
+ hook_ctx: hook_ctx
430
+ ),
431
+ request: req
432
+ )
433
+ end
434
+
435
+ rescue StandardError => e
436
+ error = e
437
+ ensure
438
+ if http_response.nil? || Utils.error_status?(http_response.status)
439
+ http_response = @sdk_configuration.hooks.after_error(
440
+ error: error,
441
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
442
+ hook_ctx: hook_ctx
443
+ ),
444
+ response: http_response
445
+ )
446
+ else
447
+ http_response = @sdk_configuration.hooks.after_success(
448
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
449
+ hook_ctx: hook_ctx
450
+ ),
451
+ response: http_response
452
+ )
453
+ end
454
+
455
+ if http_response.nil?
456
+ raise error if !error.nil?
457
+ raise "no response"
458
+ end
459
+ end
460
+
461
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
462
+ if Utils.match_status_code(http_response.status, ["201"])
463
+ if Utils.match_content_type(content_type, "application/json")
464
+ @sdk_configuration.hooks.after_success(
465
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
466
+ hook_ctx: hook_ctx
467
+ ),
468
+ response: http_response
469
+ )
470
+ response_data = http_response.env.response_body
471
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::Review)
472
+ result = obj
473
+ response = Models::Operations::CreateReviewResponse.new(
474
+ result: result,
475
+ headers: http_response.headers
476
+ )
477
+
478
+ return response
479
+ else
480
+ raise(
481
+ ::NoResponse::Models::Errors::APIStatusError.new(
482
+ status_code: http_response.status,
483
+ body: http_response.env.response_body,
484
+ raw_response: http_response
485
+ ),
486
+ "Unknown content type received"
487
+ )
488
+ end
489
+ elsif Utils.match_status_code(http_response.status, ["400"])
490
+ if Utils.match_content_type(content_type, "application/problem+json")
491
+ @sdk_configuration.hooks.after_success(
492
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
493
+ hook_ctx: hook_ctx
494
+ ),
495
+ response: http_response
496
+ )
497
+ response_data = http_response.env.response_body
498
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
499
+ raise obj
500
+ else
501
+ raise(
502
+ ::NoResponse::Models::Errors::APIStatusError.new(
503
+ status_code: http_response.status,
504
+ body: http_response.env.response_body,
505
+ raw_response: http_response
506
+ ),
507
+ "Unknown content type received"
508
+ )
509
+ end
510
+ elsif Utils.match_status_code(http_response.status, ["401"])
511
+ if Utils.match_content_type(content_type, "application/problem+json")
512
+ @sdk_configuration.hooks.after_success(
513
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
514
+ hook_ctx: hook_ctx
515
+ ),
516
+ response: http_response
517
+ )
518
+ response_data = http_response.env.response_body
519
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
520
+ raise obj
521
+ else
522
+ raise(
523
+ ::NoResponse::Models::Errors::APIStatusError.new(
524
+ status_code: http_response.status,
525
+ body: http_response.env.response_body,
526
+ raw_response: http_response
527
+ ),
528
+ "Unknown content type received"
529
+ )
530
+ end
531
+ elsif Utils.match_status_code(http_response.status, ["403"])
532
+ if Utils.match_content_type(content_type, "application/problem+json")
533
+ @sdk_configuration.hooks.after_success(
534
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
535
+ hook_ctx: hook_ctx
536
+ ),
537
+ response: http_response
538
+ )
539
+ response_data = http_response.env.response_body
540
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
541
+ raise obj
542
+ else
543
+ raise(
544
+ ::NoResponse::Models::Errors::APIStatusError.new(
545
+ status_code: http_response.status,
546
+ body: http_response.env.response_body,
547
+ raw_response: http_response
548
+ ),
549
+ "Unknown content type received"
550
+ )
551
+ end
552
+ elsif Utils.match_status_code(http_response.status, ["404"])
553
+ if Utils.match_content_type(content_type, "application/problem+json")
554
+ @sdk_configuration.hooks.after_success(
555
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
556
+ hook_ctx: hook_ctx
557
+ ),
558
+ response: http_response
559
+ )
560
+ response_data = http_response.env.response_body
561
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
562
+ raise obj
563
+ else
564
+ raise(
565
+ ::NoResponse::Models::Errors::APIStatusError.new(
566
+ status_code: http_response.status,
567
+ body: http_response.env.response_body,
568
+ raw_response: http_response
569
+ ),
570
+ "Unknown content type received"
571
+ )
572
+ end
573
+ elsif Utils.match_status_code(http_response.status, ["409"])
574
+ if Utils.match_content_type(content_type, "application/problem+json")
575
+ @sdk_configuration.hooks.after_success(
576
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
577
+ hook_ctx: hook_ctx
578
+ ),
579
+ response: http_response
580
+ )
581
+ response_data = http_response.env.response_body
582
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
583
+ raise obj
584
+ else
585
+ raise(
586
+ ::NoResponse::Models::Errors::APIStatusError.new(
587
+ status_code: http_response.status,
588
+ body: http_response.env.response_body,
589
+ raw_response: http_response
590
+ ),
591
+ "Unknown content type received"
592
+ )
593
+ end
594
+ elsif Utils.match_status_code(http_response.status, ["429"])
595
+ if Utils.match_content_type(content_type, "application/problem+json")
596
+ @sdk_configuration.hooks.after_success(
597
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
598
+ hook_ctx: hook_ctx
599
+ ),
600
+ response: http_response
601
+ )
602
+ response_data = http_response.env.response_body
603
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
604
+ raise obj
605
+ else
606
+ raise(
607
+ ::NoResponse::Models::Errors::APIStatusError.new(
608
+ status_code: http_response.status,
609
+ body: http_response.env.response_body,
610
+ raw_response: http_response
611
+ ),
612
+ "Unknown content type received"
613
+ )
614
+ end
615
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
616
+ raise(
617
+ ::NoResponse::Models::Errors::APIStatusError.new(
618
+ status_code: http_response.status,
619
+ body: http_response.env.response_body,
620
+ raw_response: http_response
621
+ ),
622
+ "API error occurred"
623
+ )
624
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
625
+ raise(
626
+ ::NoResponse::Models::Errors::APIStatusError.new(
627
+ status_code: http_response.status,
628
+ body: http_response.env.response_body,
629
+ raw_response: http_response
630
+ ),
631
+ "API error occurred"
632
+ )
633
+ else
634
+ raise(
635
+ ::NoResponse::Models::Errors::APIStatusError.new(
636
+ status_code: http_response.status,
637
+ body: http_response.env.response_body,
638
+ raw_response: http_response
639
+ ),
640
+ "Unknown status code received"
641
+ )
642
+
643
+ end
644
+ end
645
+
646
+ sig {
647
+ params(
648
+ workspace_id: ::String,
649
+ environment: Models::Shared::KeyEnvironment,
650
+ review_id: ::String,
651
+ retries: T.nilable(Utils::RetryConfig),
652
+ timeout_ms: T.nilable(Integer),
653
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
654
+ )
655
+ .returns(Models::Operations::GetReviewResponse)
656
+ }
657
+ def get(workspace_id:, environment:, review_id:, retries: nil, timeout_ms: nil, http_headers: nil)
658
+ # get - Read an account review.
659
+ # Read a retained review and its current version.
660
+ request = Models::Operations::GetReviewRequest.new(
661
+ workspace_id: workspace_id,
662
+ environment: environment,
663
+ review_id: review_id
664
+ )
665
+ url, params = @sdk_configuration.get_server_details
666
+ base_url = Utils.template_url(url, params)
667
+ url = Utils.generate_url(
668
+ Models::Operations::GetReviewRequest,
669
+ base_url,
670
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}",
671
+ request
672
+ )
673
+ headers = {}
674
+ headers = T.cast(headers, T::Hash[String, String])
675
+ headers["Accept"] = "application/json"
676
+ headers["user-agent"] = @sdk_configuration.user_agent
677
+ retries ||= @sdk_configuration.retry_config
678
+ retries ||= Utils::RetryConfig.new(
679
+ backoff: Utils::BackoffStrategy.new(
680
+ exponent: 2.0,
681
+ initial_interval: 500,
682
+ max_elapsed_time: 30_000,
683
+ max_interval: 8000
684
+ ),
685
+ retry_connection_errors: true,
686
+ strategy: "backoff"
687
+ )
688
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
689
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
690
+
691
+ security = @sdk_configuration.security_source&.call
692
+
693
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
694
+ timeout ||= @sdk_configuration.timeout
695
+
696
+ connection = @sdk_configuration.client.dup
697
+ connection.use(Utils::RetryMiddleware, retry_options)
698
+
699
+ hook_ctx = SDKHooks::HookContext.new(
700
+ config: @sdk_configuration,
701
+ base_url: base_url,
702
+ oauth2_scopes: nil,
703
+ operation_id: "getReview",
704
+ security_source: @sdk_configuration.security_source
705
+ )
706
+
707
+ error = T.let(nil, T.nilable(StandardError))
708
+ http_response = T.let(nil, T.nilable(Faraday::Response))
709
+
710
+ begin
711
+ http_response = T.must(connection).get(url) do |req|
712
+ req.headers.merge!(headers)
713
+ req.options.timeout = timeout unless timeout.nil?
714
+ Utils.configure_request_security(req, security)
715
+ http_headers&.each do |key, value|
716
+ req.headers[key.to_s] = value
717
+ end
718
+
719
+ @sdk_configuration.hooks.before_request(
720
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
721
+ hook_ctx: hook_ctx
722
+ ),
723
+ request: req
724
+ )
725
+ end
726
+
727
+ rescue StandardError => e
728
+ error = e
729
+ ensure
730
+ if http_response.nil? || Utils.error_status?(http_response.status)
731
+ http_response = @sdk_configuration.hooks.after_error(
732
+ error: error,
733
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
734
+ hook_ctx: hook_ctx
735
+ ),
736
+ response: http_response
737
+ )
738
+ else
739
+ http_response = @sdk_configuration.hooks.after_success(
740
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
741
+ hook_ctx: hook_ctx
742
+ ),
743
+ response: http_response
744
+ )
745
+ end
746
+
747
+ if http_response.nil?
748
+ raise error if !error.nil?
749
+ raise "no response"
750
+ end
751
+ end
752
+
753
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
754
+ if Utils.match_status_code(http_response.status, ["200"])
755
+ if Utils.match_content_type(content_type, "application/json")
756
+ @sdk_configuration.hooks.after_success(
757
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
758
+ hook_ctx: hook_ctx
759
+ ),
760
+ response: http_response
761
+ )
762
+ response_data = http_response.env.response_body
763
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::Review)
764
+ result = obj
765
+ response = Models::Operations::GetReviewResponse.new(
766
+ result: result,
767
+ headers: http_response.headers
768
+ )
769
+
770
+ return response
771
+ else
772
+ raise(
773
+ ::NoResponse::Models::Errors::APIStatusError.new(
774
+ status_code: http_response.status,
775
+ body: http_response.env.response_body,
776
+ raw_response: http_response
777
+ ),
778
+ "Unknown content type received"
779
+ )
780
+ end
781
+ elsif Utils.match_status_code(http_response.status, ["400"])
782
+ if Utils.match_content_type(content_type, "application/problem+json")
783
+ @sdk_configuration.hooks.after_success(
784
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
785
+ hook_ctx: hook_ctx
786
+ ),
787
+ response: http_response
788
+ )
789
+ response_data = http_response.env.response_body
790
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
791
+ raise obj
792
+ else
793
+ raise(
794
+ ::NoResponse::Models::Errors::APIStatusError.new(
795
+ status_code: http_response.status,
796
+ body: http_response.env.response_body,
797
+ raw_response: http_response
798
+ ),
799
+ "Unknown content type received"
800
+ )
801
+ end
802
+ elsif Utils.match_status_code(http_response.status, ["401"])
803
+ if Utils.match_content_type(content_type, "application/problem+json")
804
+ @sdk_configuration.hooks.after_success(
805
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
806
+ hook_ctx: hook_ctx
807
+ ),
808
+ response: http_response
809
+ )
810
+ response_data = http_response.env.response_body
811
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
812
+ raise obj
813
+ else
814
+ raise(
815
+ ::NoResponse::Models::Errors::APIStatusError.new(
816
+ status_code: http_response.status,
817
+ body: http_response.env.response_body,
818
+ raw_response: http_response
819
+ ),
820
+ "Unknown content type received"
821
+ )
822
+ end
823
+ elsif Utils.match_status_code(http_response.status, ["403"])
824
+ if Utils.match_content_type(content_type, "application/problem+json")
825
+ @sdk_configuration.hooks.after_success(
826
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
827
+ hook_ctx: hook_ctx
828
+ ),
829
+ response: http_response
830
+ )
831
+ response_data = http_response.env.response_body
832
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
833
+ raise obj
834
+ else
835
+ raise(
836
+ ::NoResponse::Models::Errors::APIStatusError.new(
837
+ status_code: http_response.status,
838
+ body: http_response.env.response_body,
839
+ raw_response: http_response
840
+ ),
841
+ "Unknown content type received"
842
+ )
843
+ end
844
+ elsif Utils.match_status_code(http_response.status, ["404"])
845
+ if Utils.match_content_type(content_type, "application/problem+json")
846
+ @sdk_configuration.hooks.after_success(
847
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
848
+ hook_ctx: hook_ctx
849
+ ),
850
+ response: http_response
851
+ )
852
+ response_data = http_response.env.response_body
853
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
854
+ raise obj
855
+ else
856
+ raise(
857
+ ::NoResponse::Models::Errors::APIStatusError.new(
858
+ status_code: http_response.status,
859
+ body: http_response.env.response_body,
860
+ raw_response: http_response
861
+ ),
862
+ "Unknown content type received"
863
+ )
864
+ end
865
+ elsif Utils.match_status_code(http_response.status, ["409"])
866
+ if Utils.match_content_type(content_type, "application/problem+json")
867
+ @sdk_configuration.hooks.after_success(
868
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
869
+ hook_ctx: hook_ctx
870
+ ),
871
+ response: http_response
872
+ )
873
+ response_data = http_response.env.response_body
874
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
875
+ raise obj
876
+ else
877
+ raise(
878
+ ::NoResponse::Models::Errors::APIStatusError.new(
879
+ status_code: http_response.status,
880
+ body: http_response.env.response_body,
881
+ raw_response: http_response
882
+ ),
883
+ "Unknown content type received"
884
+ )
885
+ end
886
+ elsif Utils.match_status_code(http_response.status, ["429"])
887
+ if Utils.match_content_type(content_type, "application/problem+json")
888
+ @sdk_configuration.hooks.after_success(
889
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
890
+ hook_ctx: hook_ctx
891
+ ),
892
+ response: http_response
893
+ )
894
+ response_data = http_response.env.response_body
895
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
896
+ raise obj
897
+ else
898
+ raise(
899
+ ::NoResponse::Models::Errors::APIStatusError.new(
900
+ status_code: http_response.status,
901
+ body: http_response.env.response_body,
902
+ raw_response: http_response
903
+ ),
904
+ "Unknown content type received"
905
+ )
906
+ end
907
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
908
+ raise(
909
+ ::NoResponse::Models::Errors::APIStatusError.new(
910
+ status_code: http_response.status,
911
+ body: http_response.env.response_body,
912
+ raw_response: http_response
913
+ ),
914
+ "API error occurred"
915
+ )
916
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
917
+ raise(
918
+ ::NoResponse::Models::Errors::APIStatusError.new(
919
+ status_code: http_response.status,
920
+ body: http_response.env.response_body,
921
+ raw_response: http_response
922
+ ),
923
+ "API error occurred"
924
+ )
925
+ else
926
+ raise(
927
+ ::NoResponse::Models::Errors::APIStatusError.new(
928
+ status_code: http_response.status,
929
+ body: http_response.env.response_body,
930
+ raw_response: http_response
931
+ ),
932
+ "Unknown status code received"
933
+ )
934
+
935
+ end
936
+ end
937
+
938
+ sig {
939
+ params(
940
+ body: Models::Shared::ReviewUpdateRequest,
941
+ workspace_id: ::String,
942
+ environment: Models::Shared::KeyEnvironment,
943
+ review_id: ::String,
944
+ timeout_ms: T.nilable(Integer),
945
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
946
+ )
947
+ .returns(Models::Operations::UpdateReviewResponse)
948
+ }
949
+ def update(body:, workspace_id:, environment:, review_id:, timeout_ms: nil, http_headers: nil)
950
+ # update - Assign, prioritize or reopen a guarded review.
951
+ # Change review status, priority or assignment after checking the expected version.
952
+ request = Models::Operations::UpdateReviewRequest.new(
953
+ workspace_id: workspace_id,
954
+ environment: environment,
955
+ review_id: review_id,
956
+ body: body
957
+ )
958
+ url, params = @sdk_configuration.get_server_details
959
+ base_url = Utils.template_url(url, params)
960
+ url = Utils.generate_url(
961
+ Models::Operations::UpdateReviewRequest,
962
+ base_url,
963
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}",
964
+ request
965
+ )
966
+ headers = {}
967
+ headers = T.cast(headers, T::Hash[String, String])
968
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
969
+ headers["content-type"] = req_content_type
970
+ raise StandardError, "request body is required" if data.nil? && form.nil?
971
+
972
+ if form && !form.empty?
973
+ body = Utils.encode_form(form)
974
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
975
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
976
+ else
977
+ body = data
978
+ end
979
+
980
+ headers["Accept"] = "application/json"
981
+ headers["user-agent"] = @sdk_configuration.user_agent
982
+
983
+ security = @sdk_configuration.security_source&.call
984
+
985
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
986
+ timeout ||= @sdk_configuration.timeout
987
+
988
+ connection = @sdk_configuration.client
989
+
990
+ hook_ctx = SDKHooks::HookContext.new(
991
+ config: @sdk_configuration,
992
+ base_url: base_url,
993
+ oauth2_scopes: nil,
994
+ operation_id: "updateReview",
995
+ security_source: @sdk_configuration.security_source
996
+ )
997
+
998
+ error = T.let(nil, T.nilable(StandardError))
999
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1000
+
1001
+ begin
1002
+ http_response = T.must(connection).patch(url) do |req|
1003
+ req.body = body
1004
+ req.headers.merge!(headers)
1005
+ req.options.timeout = timeout unless timeout.nil?
1006
+ Utils.configure_request_security(req, security)
1007
+ http_headers&.each do |key, value|
1008
+ req.headers[key.to_s] = value
1009
+ end
1010
+
1011
+ @sdk_configuration.hooks.before_request(
1012
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1013
+ hook_ctx: hook_ctx
1014
+ ),
1015
+ request: req
1016
+ )
1017
+ end
1018
+
1019
+ rescue StandardError => e
1020
+ error = e
1021
+ ensure
1022
+ if http_response.nil? || Utils.error_status?(http_response.status)
1023
+ http_response = @sdk_configuration.hooks.after_error(
1024
+ error: error,
1025
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1026
+ hook_ctx: hook_ctx
1027
+ ),
1028
+ response: http_response
1029
+ )
1030
+ else
1031
+ http_response = @sdk_configuration.hooks.after_success(
1032
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1033
+ hook_ctx: hook_ctx
1034
+ ),
1035
+ response: http_response
1036
+ )
1037
+ end
1038
+
1039
+ if http_response.nil?
1040
+ raise error if !error.nil?
1041
+ raise "no response"
1042
+ end
1043
+ end
1044
+
1045
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
1046
+ if Utils.match_status_code(http_response.status, ["200"])
1047
+ if Utils.match_content_type(content_type, "application/json")
1048
+ @sdk_configuration.hooks.after_success(
1049
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1050
+ hook_ctx: hook_ctx
1051
+ ),
1052
+ response: http_response
1053
+ )
1054
+ response_data = http_response.env.response_body
1055
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::Review)
1056
+ result = obj
1057
+ response = Models::Operations::UpdateReviewResponse.new(
1058
+ result: result,
1059
+ headers: http_response.headers
1060
+ )
1061
+
1062
+ return response
1063
+ else
1064
+ raise(
1065
+ ::NoResponse::Models::Errors::APIStatusError.new(
1066
+ status_code: http_response.status,
1067
+ body: http_response.env.response_body,
1068
+ raw_response: http_response
1069
+ ),
1070
+ "Unknown content type received"
1071
+ )
1072
+ end
1073
+ elsif Utils.match_status_code(http_response.status, ["400"])
1074
+ if Utils.match_content_type(content_type, "application/problem+json")
1075
+ @sdk_configuration.hooks.after_success(
1076
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1077
+ hook_ctx: hook_ctx
1078
+ ),
1079
+ response: http_response
1080
+ )
1081
+ response_data = http_response.env.response_body
1082
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
1083
+ raise obj
1084
+ else
1085
+ raise(
1086
+ ::NoResponse::Models::Errors::APIStatusError.new(
1087
+ status_code: http_response.status,
1088
+ body: http_response.env.response_body,
1089
+ raw_response: http_response
1090
+ ),
1091
+ "Unknown content type received"
1092
+ )
1093
+ end
1094
+ elsif Utils.match_status_code(http_response.status, ["401"])
1095
+ if Utils.match_content_type(content_type, "application/problem+json")
1096
+ @sdk_configuration.hooks.after_success(
1097
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1098
+ hook_ctx: hook_ctx
1099
+ ),
1100
+ response: http_response
1101
+ )
1102
+ response_data = http_response.env.response_body
1103
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
1104
+ raise obj
1105
+ else
1106
+ raise(
1107
+ ::NoResponse::Models::Errors::APIStatusError.new(
1108
+ status_code: http_response.status,
1109
+ body: http_response.env.response_body,
1110
+ raw_response: http_response
1111
+ ),
1112
+ "Unknown content type received"
1113
+ )
1114
+ end
1115
+ elsif Utils.match_status_code(http_response.status, ["403"])
1116
+ if Utils.match_content_type(content_type, "application/problem+json")
1117
+ @sdk_configuration.hooks.after_success(
1118
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1119
+ hook_ctx: hook_ctx
1120
+ ),
1121
+ response: http_response
1122
+ )
1123
+ response_data = http_response.env.response_body
1124
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
1125
+ raise obj
1126
+ else
1127
+ raise(
1128
+ ::NoResponse::Models::Errors::APIStatusError.new(
1129
+ status_code: http_response.status,
1130
+ body: http_response.env.response_body,
1131
+ raw_response: http_response
1132
+ ),
1133
+ "Unknown content type received"
1134
+ )
1135
+ end
1136
+ elsif Utils.match_status_code(http_response.status, ["404"])
1137
+ if Utils.match_content_type(content_type, "application/problem+json")
1138
+ @sdk_configuration.hooks.after_success(
1139
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1140
+ hook_ctx: hook_ctx
1141
+ ),
1142
+ response: http_response
1143
+ )
1144
+ response_data = http_response.env.response_body
1145
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
1146
+ raise obj
1147
+ else
1148
+ raise(
1149
+ ::NoResponse::Models::Errors::APIStatusError.new(
1150
+ status_code: http_response.status,
1151
+ body: http_response.env.response_body,
1152
+ raw_response: http_response
1153
+ ),
1154
+ "Unknown content type received"
1155
+ )
1156
+ end
1157
+ elsif Utils.match_status_code(http_response.status, ["409"])
1158
+ if Utils.match_content_type(content_type, "application/problem+json")
1159
+ @sdk_configuration.hooks.after_success(
1160
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1161
+ hook_ctx: hook_ctx
1162
+ ),
1163
+ response: http_response
1164
+ )
1165
+ response_data = http_response.env.response_body
1166
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
1167
+ raise obj
1168
+ else
1169
+ raise(
1170
+ ::NoResponse::Models::Errors::APIStatusError.new(
1171
+ status_code: http_response.status,
1172
+ body: http_response.env.response_body,
1173
+ raw_response: http_response
1174
+ ),
1175
+ "Unknown content type received"
1176
+ )
1177
+ end
1178
+ elsif Utils.match_status_code(http_response.status, ["429"])
1179
+ if Utils.match_content_type(content_type, "application/problem+json")
1180
+ @sdk_configuration.hooks.after_success(
1181
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1182
+ hook_ctx: hook_ctx
1183
+ ),
1184
+ response: http_response
1185
+ )
1186
+ response_data = http_response.env.response_body
1187
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
1188
+ raise obj
1189
+ else
1190
+ raise(
1191
+ ::NoResponse::Models::Errors::APIStatusError.new(
1192
+ status_code: http_response.status,
1193
+ body: http_response.env.response_body,
1194
+ raw_response: http_response
1195
+ ),
1196
+ "Unknown content type received"
1197
+ )
1198
+ end
1199
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
1200
+ raise(
1201
+ ::NoResponse::Models::Errors::APIStatusError.new(
1202
+ status_code: http_response.status,
1203
+ body: http_response.env.response_body,
1204
+ raw_response: http_response
1205
+ ),
1206
+ "API error occurred"
1207
+ )
1208
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
1209
+ raise(
1210
+ ::NoResponse::Models::Errors::APIStatusError.new(
1211
+ status_code: http_response.status,
1212
+ body: http_response.env.response_body,
1213
+ raw_response: http_response
1214
+ ),
1215
+ "API error occurred"
1216
+ )
1217
+ else
1218
+ raise(
1219
+ ::NoResponse::Models::Errors::APIStatusError.new(
1220
+ status_code: http_response.status,
1221
+ body: http_response.env.response_body,
1222
+ raw_response: http_response
1223
+ ),
1224
+ "Unknown status code received"
1225
+ )
1226
+
1227
+ end
1228
+ end
1229
+
1230
+ sig {
1231
+ params(
1232
+ body: Models::Shared::ReviewResolveRequest,
1233
+ workspace_id: ::String,
1234
+ environment: Models::Shared::KeyEnvironment,
1235
+ review_id: ::String,
1236
+ timeout_ms: T.nilable(Integer),
1237
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
1238
+ )
1239
+ .returns(Models::Operations::ResolveReviewResponse)
1240
+ }
1241
+ def resolve(body:, workspace_id:, environment:, review_id:, timeout_ms: nil, http_headers: nil)
1242
+ # resolve - Resolve a review against an exact account risk version.
1243
+ # Resolve a review against the exact current review and account decision versions. A resolution does not report a factual outcome or execute enforcement.
1244
+ request = Models::Operations::ResolveReviewRequest.new(
1245
+ workspace_id: workspace_id,
1246
+ environment: environment,
1247
+ review_id: review_id,
1248
+ body: body
1249
+ )
1250
+ url, params = @sdk_configuration.get_server_details
1251
+ base_url = Utils.template_url(url, params)
1252
+ url = Utils.generate_url(
1253
+ Models::Operations::ResolveReviewRequest,
1254
+ base_url,
1255
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/resolve",
1256
+ request
1257
+ )
1258
+ headers = {}
1259
+ headers = T.cast(headers, T::Hash[String, String])
1260
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
1261
+ headers["content-type"] = req_content_type
1262
+ raise StandardError, "request body is required" if data.nil? && form.nil?
1263
+
1264
+ if form && !form.empty?
1265
+ body = Utils.encode_form(form)
1266
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
1267
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
1268
+ else
1269
+ body = data
1270
+ end
1271
+
1272
+ headers["Accept"] = "application/json"
1273
+ headers["user-agent"] = @sdk_configuration.user_agent
1274
+
1275
+ security = @sdk_configuration.security_source&.call
1276
+
1277
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1278
+ timeout ||= @sdk_configuration.timeout
1279
+
1280
+ connection = @sdk_configuration.client
1281
+
1282
+ hook_ctx = SDKHooks::HookContext.new(
1283
+ config: @sdk_configuration,
1284
+ base_url: base_url,
1285
+ oauth2_scopes: nil,
1286
+ operation_id: "resolveReview",
1287
+ security_source: @sdk_configuration.security_source
1288
+ )
1289
+
1290
+ error = T.let(nil, T.nilable(StandardError))
1291
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1292
+
1293
+ begin
1294
+ http_response = T.must(connection).post(url) do |req|
1295
+ req.body = body
1296
+ req.headers.merge!(headers)
1297
+ req.options.timeout = timeout unless timeout.nil?
1298
+ Utils.configure_request_security(req, security)
1299
+ http_headers&.each do |key, value|
1300
+ req.headers[key.to_s] = value
1301
+ end
1302
+
1303
+ @sdk_configuration.hooks.before_request(
1304
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1305
+ hook_ctx: hook_ctx
1306
+ ),
1307
+ request: req
1308
+ )
1309
+ end
1310
+
1311
+ rescue StandardError => e
1312
+ error = e
1313
+ ensure
1314
+ if http_response.nil? || Utils.error_status?(http_response.status)
1315
+ http_response = @sdk_configuration.hooks.after_error(
1316
+ error: error,
1317
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1318
+ hook_ctx: hook_ctx
1319
+ ),
1320
+ response: http_response
1321
+ )
1322
+ else
1323
+ http_response = @sdk_configuration.hooks.after_success(
1324
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1325
+ hook_ctx: hook_ctx
1326
+ ),
1327
+ response: http_response
1328
+ )
1329
+ end
1330
+
1331
+ if http_response.nil?
1332
+ raise error if !error.nil?
1333
+ raise "no response"
1334
+ end
1335
+ end
1336
+
1337
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
1338
+ if Utils.match_status_code(http_response.status, ["200"])
1339
+ if Utils.match_content_type(content_type, "application/json")
1340
+ @sdk_configuration.hooks.after_success(
1341
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1342
+ hook_ctx: hook_ctx
1343
+ ),
1344
+ response: http_response
1345
+ )
1346
+ response_data = http_response.env.response_body
1347
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::Review)
1348
+ result = obj
1349
+ response = Models::Operations::ResolveReviewResponse.new(
1350
+ result: result,
1351
+ headers: http_response.headers
1352
+ )
1353
+
1354
+ return response
1355
+ else
1356
+ raise(
1357
+ ::NoResponse::Models::Errors::APIStatusError.new(
1358
+ status_code: http_response.status,
1359
+ body: http_response.env.response_body,
1360
+ raw_response: http_response
1361
+ ),
1362
+ "Unknown content type received"
1363
+ )
1364
+ end
1365
+ elsif Utils.match_status_code(http_response.status, ["400"])
1366
+ if Utils.match_content_type(content_type, "application/problem+json")
1367
+ @sdk_configuration.hooks.after_success(
1368
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1369
+ hook_ctx: hook_ctx
1370
+ ),
1371
+ response: http_response
1372
+ )
1373
+ response_data = http_response.env.response_body
1374
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
1375
+ raise obj
1376
+ else
1377
+ raise(
1378
+ ::NoResponse::Models::Errors::APIStatusError.new(
1379
+ status_code: http_response.status,
1380
+ body: http_response.env.response_body,
1381
+ raw_response: http_response
1382
+ ),
1383
+ "Unknown content type received"
1384
+ )
1385
+ end
1386
+ elsif Utils.match_status_code(http_response.status, ["401"])
1387
+ if Utils.match_content_type(content_type, "application/problem+json")
1388
+ @sdk_configuration.hooks.after_success(
1389
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1390
+ hook_ctx: hook_ctx
1391
+ ),
1392
+ response: http_response
1393
+ )
1394
+ response_data = http_response.env.response_body
1395
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
1396
+ raise obj
1397
+ else
1398
+ raise(
1399
+ ::NoResponse::Models::Errors::APIStatusError.new(
1400
+ status_code: http_response.status,
1401
+ body: http_response.env.response_body,
1402
+ raw_response: http_response
1403
+ ),
1404
+ "Unknown content type received"
1405
+ )
1406
+ end
1407
+ elsif Utils.match_status_code(http_response.status, ["403"])
1408
+ if Utils.match_content_type(content_type, "application/problem+json")
1409
+ @sdk_configuration.hooks.after_success(
1410
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1411
+ hook_ctx: hook_ctx
1412
+ ),
1413
+ response: http_response
1414
+ )
1415
+ response_data = http_response.env.response_body
1416
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
1417
+ raise obj
1418
+ else
1419
+ raise(
1420
+ ::NoResponse::Models::Errors::APIStatusError.new(
1421
+ status_code: http_response.status,
1422
+ body: http_response.env.response_body,
1423
+ raw_response: http_response
1424
+ ),
1425
+ "Unknown content type received"
1426
+ )
1427
+ end
1428
+ elsif Utils.match_status_code(http_response.status, ["404"])
1429
+ if Utils.match_content_type(content_type, "application/problem+json")
1430
+ @sdk_configuration.hooks.after_success(
1431
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1432
+ hook_ctx: hook_ctx
1433
+ ),
1434
+ response: http_response
1435
+ )
1436
+ response_data = http_response.env.response_body
1437
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
1438
+ raise obj
1439
+ else
1440
+ raise(
1441
+ ::NoResponse::Models::Errors::APIStatusError.new(
1442
+ status_code: http_response.status,
1443
+ body: http_response.env.response_body,
1444
+ raw_response: http_response
1445
+ ),
1446
+ "Unknown content type received"
1447
+ )
1448
+ end
1449
+ elsif Utils.match_status_code(http_response.status, ["409"])
1450
+ if Utils.match_content_type(content_type, "application/problem+json")
1451
+ @sdk_configuration.hooks.after_success(
1452
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1453
+ hook_ctx: hook_ctx
1454
+ ),
1455
+ response: http_response
1456
+ )
1457
+ response_data = http_response.env.response_body
1458
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
1459
+ raise obj
1460
+ else
1461
+ raise(
1462
+ ::NoResponse::Models::Errors::APIStatusError.new(
1463
+ status_code: http_response.status,
1464
+ body: http_response.env.response_body,
1465
+ raw_response: http_response
1466
+ ),
1467
+ "Unknown content type received"
1468
+ )
1469
+ end
1470
+ elsif Utils.match_status_code(http_response.status, ["429"])
1471
+ if Utils.match_content_type(content_type, "application/problem+json")
1472
+ @sdk_configuration.hooks.after_success(
1473
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1474
+ hook_ctx: hook_ctx
1475
+ ),
1476
+ response: http_response
1477
+ )
1478
+ response_data = http_response.env.response_body
1479
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
1480
+ raise obj
1481
+ else
1482
+ raise(
1483
+ ::NoResponse::Models::Errors::APIStatusError.new(
1484
+ status_code: http_response.status,
1485
+ body: http_response.env.response_body,
1486
+ raw_response: http_response
1487
+ ),
1488
+ "Unknown content type received"
1489
+ )
1490
+ end
1491
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
1492
+ raise(
1493
+ ::NoResponse::Models::Errors::APIStatusError.new(
1494
+ status_code: http_response.status,
1495
+ body: http_response.env.response_body,
1496
+ raw_response: http_response
1497
+ ),
1498
+ "API error occurred"
1499
+ )
1500
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
1501
+ raise(
1502
+ ::NoResponse::Models::Errors::APIStatusError.new(
1503
+ status_code: http_response.status,
1504
+ body: http_response.env.response_body,
1505
+ raw_response: http_response
1506
+ ),
1507
+ "API error occurred"
1508
+ )
1509
+ else
1510
+ raise(
1511
+ ::NoResponse::Models::Errors::APIStatusError.new(
1512
+ status_code: http_response.status,
1513
+ body: http_response.env.response_body,
1514
+ raw_response: http_response
1515
+ ),
1516
+ "Unknown status code received"
1517
+ )
1518
+
1519
+ end
1520
+ end
1521
+
1522
+ sig {
1523
+ params(
1524
+ workspace_id: ::String,
1525
+ environment: Models::Shared::KeyEnvironment,
1526
+ review_id: ::String,
1527
+ limit: T.nilable(::Integer),
1528
+ cursor: T.nilable(::String),
1529
+ retries: T.nilable(Utils::RetryConfig),
1530
+ timeout_ms: T.nilable(Integer),
1531
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
1532
+ )
1533
+ .returns(Models::Operations::ListReviewCommentsResponse)
1534
+ }
1535
+ def list_comments(
1536
+ workspace_id:,
1537
+ environment:,
1538
+ review_id:,
1539
+ limit: nil,
1540
+ cursor: nil,
1541
+ retries: nil,
1542
+ timeout_ms: nil,
1543
+ http_headers: nil
1544
+ )
1545
+ # list_comments - Read retained review comments.
1546
+ # Page through retained review comments.
1547
+ request = Models::Operations::ListReviewCommentsRequest.new(
1548
+ workspace_id: workspace_id,
1549
+ environment: environment,
1550
+ review_id: review_id,
1551
+ limit: limit,
1552
+ cursor: cursor
1553
+ )
1554
+ url, params = @sdk_configuration.get_server_details
1555
+ base_url = Utils.template_url(url, params)
1556
+ url = Utils.generate_url(
1557
+ Models::Operations::ListReviewCommentsRequest,
1558
+ base_url,
1559
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/comments",
1560
+ request
1561
+ )
1562
+ headers = {}
1563
+ headers = T.cast(headers, T::Hash[String, String])
1564
+ query_params = Utils.get_query_params(Models::Operations::ListReviewCommentsRequest, request, nil)
1565
+ headers["Accept"] = "application/json"
1566
+ headers["user-agent"] = @sdk_configuration.user_agent
1567
+ retries ||= @sdk_configuration.retry_config
1568
+ retries ||= Utils::RetryConfig.new(
1569
+ backoff: Utils::BackoffStrategy.new(
1570
+ exponent: 2.0,
1571
+ initial_interval: 500,
1572
+ max_elapsed_time: 30_000,
1573
+ max_interval: 8000
1574
+ ),
1575
+ retry_connection_errors: true,
1576
+ strategy: "backoff"
1577
+ )
1578
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
1579
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
1580
+
1581
+ security = @sdk_configuration.security_source&.call
1582
+
1583
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1584
+ timeout ||= @sdk_configuration.timeout
1585
+
1586
+ connection = @sdk_configuration.client.dup
1587
+ connection.use(Utils::RetryMiddleware, retry_options)
1588
+
1589
+ hook_ctx = SDKHooks::HookContext.new(
1590
+ config: @sdk_configuration,
1591
+ base_url: base_url,
1592
+ oauth2_scopes: nil,
1593
+ operation_id: "listReviewComments",
1594
+ security_source: @sdk_configuration.security_source
1595
+ )
1596
+
1597
+ error = T.let(nil, T.nilable(StandardError))
1598
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1599
+
1600
+ begin
1601
+ http_response = T.must(connection).get(url) do |req|
1602
+ req.headers.merge!(headers)
1603
+ req.options.timeout = timeout unless timeout.nil?
1604
+ req.params = query_params
1605
+ Utils.configure_request_security(req, security)
1606
+ http_headers&.each do |key, value|
1607
+ req.headers[key.to_s] = value
1608
+ end
1609
+
1610
+ @sdk_configuration.hooks.before_request(
1611
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1612
+ hook_ctx: hook_ctx
1613
+ ),
1614
+ request: req
1615
+ )
1616
+ end
1617
+
1618
+ rescue StandardError => e
1619
+ error = e
1620
+ ensure
1621
+ if http_response.nil? || Utils.error_status?(http_response.status)
1622
+ http_response = @sdk_configuration.hooks.after_error(
1623
+ error: error,
1624
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1625
+ hook_ctx: hook_ctx
1626
+ ),
1627
+ response: http_response
1628
+ )
1629
+ else
1630
+ http_response = @sdk_configuration.hooks.after_success(
1631
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1632
+ hook_ctx: hook_ctx
1633
+ ),
1634
+ response: http_response
1635
+ )
1636
+ end
1637
+
1638
+ if http_response.nil?
1639
+ raise error if !error.nil?
1640
+ raise "no response"
1641
+ end
1642
+ end
1643
+
1644
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
1645
+ if Utils.match_status_code(http_response.status, ["200"])
1646
+ if Utils.match_content_type(content_type, "application/json")
1647
+ @sdk_configuration.hooks.after_success(
1648
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1649
+ hook_ctx: hook_ctx
1650
+ ),
1651
+ response: http_response
1652
+ )
1653
+ response_data = http_response.env.response_body
1654
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewCommentList)
1655
+ result = obj
1656
+ response = Models::Operations::ListReviewCommentsResponse.new(
1657
+ result: result,
1658
+ headers: http_response.headers
1659
+ )
1660
+ sdk = self
1661
+
1662
+ response.next_page = proc do
1663
+ next_cursor = Janeway.enum_for("$.next_cursor", JSON.parse(response_data)).search
1664
+ if next_cursor.nil?
1665
+ next nil
1666
+ else
1667
+ next_cursor = next_cursor[0]
1668
+ if next_cursor.nil?
1669
+ next nil
1670
+ end
1671
+ end
1672
+
1673
+ sdk.list_comments(
1674
+ workspace_id: request.workspace_id,
1675
+ environment: request.environment,
1676
+ review_id: request.review_id,
1677
+ limit: request.limit,
1678
+ cursor: next_cursor,
1679
+ http_headers: http_headers
1680
+ )
1681
+ end
1682
+
1683
+ return response
1684
+ else
1685
+ raise(
1686
+ ::NoResponse::Models::Errors::APIStatusError.new(
1687
+ status_code: http_response.status,
1688
+ body: http_response.env.response_body,
1689
+ raw_response: http_response
1690
+ ),
1691
+ "Unknown content type received"
1692
+ )
1693
+ end
1694
+ elsif Utils.match_status_code(http_response.status, ["400"])
1695
+ if Utils.match_content_type(content_type, "application/problem+json")
1696
+ @sdk_configuration.hooks.after_success(
1697
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1698
+ hook_ctx: hook_ctx
1699
+ ),
1700
+ response: http_response
1701
+ )
1702
+ response_data = http_response.env.response_body
1703
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
1704
+ raise obj
1705
+ else
1706
+ raise(
1707
+ ::NoResponse::Models::Errors::APIStatusError.new(
1708
+ status_code: http_response.status,
1709
+ body: http_response.env.response_body,
1710
+ raw_response: http_response
1711
+ ),
1712
+ "Unknown content type received"
1713
+ )
1714
+ end
1715
+ elsif Utils.match_status_code(http_response.status, ["401"])
1716
+ if Utils.match_content_type(content_type, "application/problem+json")
1717
+ @sdk_configuration.hooks.after_success(
1718
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1719
+ hook_ctx: hook_ctx
1720
+ ),
1721
+ response: http_response
1722
+ )
1723
+ response_data = http_response.env.response_body
1724
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
1725
+ raise obj
1726
+ else
1727
+ raise(
1728
+ ::NoResponse::Models::Errors::APIStatusError.new(
1729
+ status_code: http_response.status,
1730
+ body: http_response.env.response_body,
1731
+ raw_response: http_response
1732
+ ),
1733
+ "Unknown content type received"
1734
+ )
1735
+ end
1736
+ elsif Utils.match_status_code(http_response.status, ["403"])
1737
+ if Utils.match_content_type(content_type, "application/problem+json")
1738
+ @sdk_configuration.hooks.after_success(
1739
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1740
+ hook_ctx: hook_ctx
1741
+ ),
1742
+ response: http_response
1743
+ )
1744
+ response_data = http_response.env.response_body
1745
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
1746
+ raise obj
1747
+ else
1748
+ raise(
1749
+ ::NoResponse::Models::Errors::APIStatusError.new(
1750
+ status_code: http_response.status,
1751
+ body: http_response.env.response_body,
1752
+ raw_response: http_response
1753
+ ),
1754
+ "Unknown content type received"
1755
+ )
1756
+ end
1757
+ elsif Utils.match_status_code(http_response.status, ["404"])
1758
+ if Utils.match_content_type(content_type, "application/problem+json")
1759
+ @sdk_configuration.hooks.after_success(
1760
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1761
+ hook_ctx: hook_ctx
1762
+ ),
1763
+ response: http_response
1764
+ )
1765
+ response_data = http_response.env.response_body
1766
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
1767
+ raise obj
1768
+ else
1769
+ raise(
1770
+ ::NoResponse::Models::Errors::APIStatusError.new(
1771
+ status_code: http_response.status,
1772
+ body: http_response.env.response_body,
1773
+ raw_response: http_response
1774
+ ),
1775
+ "Unknown content type received"
1776
+ )
1777
+ end
1778
+ elsif Utils.match_status_code(http_response.status, ["409"])
1779
+ if Utils.match_content_type(content_type, "application/problem+json")
1780
+ @sdk_configuration.hooks.after_success(
1781
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1782
+ hook_ctx: hook_ctx
1783
+ ),
1784
+ response: http_response
1785
+ )
1786
+ response_data = http_response.env.response_body
1787
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
1788
+ raise obj
1789
+ else
1790
+ raise(
1791
+ ::NoResponse::Models::Errors::APIStatusError.new(
1792
+ status_code: http_response.status,
1793
+ body: http_response.env.response_body,
1794
+ raw_response: http_response
1795
+ ),
1796
+ "Unknown content type received"
1797
+ )
1798
+ end
1799
+ elsif Utils.match_status_code(http_response.status, ["429"])
1800
+ if Utils.match_content_type(content_type, "application/problem+json")
1801
+ @sdk_configuration.hooks.after_success(
1802
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1803
+ hook_ctx: hook_ctx
1804
+ ),
1805
+ response: http_response
1806
+ )
1807
+ response_data = http_response.env.response_body
1808
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
1809
+ raise obj
1810
+ else
1811
+ raise(
1812
+ ::NoResponse::Models::Errors::APIStatusError.new(
1813
+ status_code: http_response.status,
1814
+ body: http_response.env.response_body,
1815
+ raw_response: http_response
1816
+ ),
1817
+ "Unknown content type received"
1818
+ )
1819
+ end
1820
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
1821
+ raise(
1822
+ ::NoResponse::Models::Errors::APIStatusError.new(
1823
+ status_code: http_response.status,
1824
+ body: http_response.env.response_body,
1825
+ raw_response: http_response
1826
+ ),
1827
+ "API error occurred"
1828
+ )
1829
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
1830
+ raise(
1831
+ ::NoResponse::Models::Errors::APIStatusError.new(
1832
+ status_code: http_response.status,
1833
+ body: http_response.env.response_body,
1834
+ raw_response: http_response
1835
+ ),
1836
+ "API error occurred"
1837
+ )
1838
+ else
1839
+ raise(
1840
+ ::NoResponse::Models::Errors::APIStatusError.new(
1841
+ status_code: http_response.status,
1842
+ body: http_response.env.response_body,
1843
+ raw_response: http_response
1844
+ ),
1845
+ "Unknown status code received"
1846
+ )
1847
+
1848
+ end
1849
+ end
1850
+
1851
+ sig {
1852
+ params(
1853
+ body: Models::Shared::ReviewCommentRequest,
1854
+ workspace_id: ::String,
1855
+ environment: Models::Shared::KeyEnvironment,
1856
+ review_id: ::String,
1857
+ timeout_ms: T.nilable(Integer),
1858
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
1859
+ )
1860
+ .returns(Models::Operations::CommentReviewResponse)
1861
+ }
1862
+ def comment(body:, workspace_id:, environment:, review_id:, timeout_ms: nil, http_headers: nil)
1863
+ # comment - Append a comment against the current review version.
1864
+ # Append a comment after checking the expected review version.
1865
+ request = Models::Operations::CommentReviewRequest.new(
1866
+ workspace_id: workspace_id,
1867
+ environment: environment,
1868
+ review_id: review_id,
1869
+ body: body
1870
+ )
1871
+ url, params = @sdk_configuration.get_server_details
1872
+ base_url = Utils.template_url(url, params)
1873
+ url = Utils.generate_url(
1874
+ Models::Operations::CommentReviewRequest,
1875
+ base_url,
1876
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/comments",
1877
+ request
1878
+ )
1879
+ headers = {}
1880
+ headers = T.cast(headers, T::Hash[String, String])
1881
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
1882
+ headers["content-type"] = req_content_type
1883
+ raise StandardError, "request body is required" if data.nil? && form.nil?
1884
+
1885
+ if form && !form.empty?
1886
+ body = Utils.encode_form(form)
1887
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
1888
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
1889
+ else
1890
+ body = data
1891
+ end
1892
+
1893
+ headers["Accept"] = "application/json"
1894
+ headers["user-agent"] = @sdk_configuration.user_agent
1895
+
1896
+ security = @sdk_configuration.security_source&.call
1897
+
1898
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1899
+ timeout ||= @sdk_configuration.timeout
1900
+
1901
+ connection = @sdk_configuration.client
1902
+
1903
+ hook_ctx = SDKHooks::HookContext.new(
1904
+ config: @sdk_configuration,
1905
+ base_url: base_url,
1906
+ oauth2_scopes: nil,
1907
+ operation_id: "commentReview",
1908
+ security_source: @sdk_configuration.security_source
1909
+ )
1910
+
1911
+ error = T.let(nil, T.nilable(StandardError))
1912
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1913
+
1914
+ begin
1915
+ http_response = T.must(connection).post(url) do |req|
1916
+ req.body = body
1917
+ req.headers.merge!(headers)
1918
+ req.options.timeout = timeout unless timeout.nil?
1919
+ Utils.configure_request_security(req, security)
1920
+ http_headers&.each do |key, value|
1921
+ req.headers[key.to_s] = value
1922
+ end
1923
+
1924
+ @sdk_configuration.hooks.before_request(
1925
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1926
+ hook_ctx: hook_ctx
1927
+ ),
1928
+ request: req
1929
+ )
1930
+ end
1931
+
1932
+ rescue StandardError => e
1933
+ error = e
1934
+ ensure
1935
+ if http_response.nil? || Utils.error_status?(http_response.status)
1936
+ http_response = @sdk_configuration.hooks.after_error(
1937
+ error: error,
1938
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1939
+ hook_ctx: hook_ctx
1940
+ ),
1941
+ response: http_response
1942
+ )
1943
+ else
1944
+ http_response = @sdk_configuration.hooks.after_success(
1945
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1946
+ hook_ctx: hook_ctx
1947
+ ),
1948
+ response: http_response
1949
+ )
1950
+ end
1951
+
1952
+ if http_response.nil?
1953
+ raise error if !error.nil?
1954
+ raise "no response"
1955
+ end
1956
+ end
1957
+
1958
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
1959
+ if Utils.match_status_code(http_response.status, ["201"])
1960
+ if Utils.match_content_type(content_type, "application/json")
1961
+ @sdk_configuration.hooks.after_success(
1962
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1963
+ hook_ctx: hook_ctx
1964
+ ),
1965
+ response: http_response
1966
+ )
1967
+ response_data = http_response.env.response_body
1968
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewComment)
1969
+ result = obj
1970
+ response = Models::Operations::CommentReviewResponse.new(
1971
+ result: result,
1972
+ headers: http_response.headers
1973
+ )
1974
+
1975
+ return response
1976
+ else
1977
+ raise(
1978
+ ::NoResponse::Models::Errors::APIStatusError.new(
1979
+ status_code: http_response.status,
1980
+ body: http_response.env.response_body,
1981
+ raw_response: http_response
1982
+ ),
1983
+ "Unknown content type received"
1984
+ )
1985
+ end
1986
+ elsif Utils.match_status_code(http_response.status, ["400"])
1987
+ if Utils.match_content_type(content_type, "application/problem+json")
1988
+ @sdk_configuration.hooks.after_success(
1989
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1990
+ hook_ctx: hook_ctx
1991
+ ),
1992
+ response: http_response
1993
+ )
1994
+ response_data = http_response.env.response_body
1995
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
1996
+ raise obj
1997
+ else
1998
+ raise(
1999
+ ::NoResponse::Models::Errors::APIStatusError.new(
2000
+ status_code: http_response.status,
2001
+ body: http_response.env.response_body,
2002
+ raw_response: http_response
2003
+ ),
2004
+ "Unknown content type received"
2005
+ )
2006
+ end
2007
+ elsif Utils.match_status_code(http_response.status, ["401"])
2008
+ if Utils.match_content_type(content_type, "application/problem+json")
2009
+ @sdk_configuration.hooks.after_success(
2010
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2011
+ hook_ctx: hook_ctx
2012
+ ),
2013
+ response: http_response
2014
+ )
2015
+ response_data = http_response.env.response_body
2016
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
2017
+ raise obj
2018
+ else
2019
+ raise(
2020
+ ::NoResponse::Models::Errors::APIStatusError.new(
2021
+ status_code: http_response.status,
2022
+ body: http_response.env.response_body,
2023
+ raw_response: http_response
2024
+ ),
2025
+ "Unknown content type received"
2026
+ )
2027
+ end
2028
+ elsif Utils.match_status_code(http_response.status, ["403"])
2029
+ if Utils.match_content_type(content_type, "application/problem+json")
2030
+ @sdk_configuration.hooks.after_success(
2031
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2032
+ hook_ctx: hook_ctx
2033
+ ),
2034
+ response: http_response
2035
+ )
2036
+ response_data = http_response.env.response_body
2037
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
2038
+ raise obj
2039
+ else
2040
+ raise(
2041
+ ::NoResponse::Models::Errors::APIStatusError.new(
2042
+ status_code: http_response.status,
2043
+ body: http_response.env.response_body,
2044
+ raw_response: http_response
2045
+ ),
2046
+ "Unknown content type received"
2047
+ )
2048
+ end
2049
+ elsif Utils.match_status_code(http_response.status, ["404"])
2050
+ if Utils.match_content_type(content_type, "application/problem+json")
2051
+ @sdk_configuration.hooks.after_success(
2052
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2053
+ hook_ctx: hook_ctx
2054
+ ),
2055
+ response: http_response
2056
+ )
2057
+ response_data = http_response.env.response_body
2058
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
2059
+ raise obj
2060
+ else
2061
+ raise(
2062
+ ::NoResponse::Models::Errors::APIStatusError.new(
2063
+ status_code: http_response.status,
2064
+ body: http_response.env.response_body,
2065
+ raw_response: http_response
2066
+ ),
2067
+ "Unknown content type received"
2068
+ )
2069
+ end
2070
+ elsif Utils.match_status_code(http_response.status, ["409"])
2071
+ if Utils.match_content_type(content_type, "application/problem+json")
2072
+ @sdk_configuration.hooks.after_success(
2073
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2074
+ hook_ctx: hook_ctx
2075
+ ),
2076
+ response: http_response
2077
+ )
2078
+ response_data = http_response.env.response_body
2079
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
2080
+ raise obj
2081
+ else
2082
+ raise(
2083
+ ::NoResponse::Models::Errors::APIStatusError.new(
2084
+ status_code: http_response.status,
2085
+ body: http_response.env.response_body,
2086
+ raw_response: http_response
2087
+ ),
2088
+ "Unknown content type received"
2089
+ )
2090
+ end
2091
+ elsif Utils.match_status_code(http_response.status, ["429"])
2092
+ if Utils.match_content_type(content_type, "application/problem+json")
2093
+ @sdk_configuration.hooks.after_success(
2094
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2095
+ hook_ctx: hook_ctx
2096
+ ),
2097
+ response: http_response
2098
+ )
2099
+ response_data = http_response.env.response_body
2100
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
2101
+ raise obj
2102
+ else
2103
+ raise(
2104
+ ::NoResponse::Models::Errors::APIStatusError.new(
2105
+ status_code: http_response.status,
2106
+ body: http_response.env.response_body,
2107
+ raw_response: http_response
2108
+ ),
2109
+ "Unknown content type received"
2110
+ )
2111
+ end
2112
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
2113
+ raise(
2114
+ ::NoResponse::Models::Errors::APIStatusError.new(
2115
+ status_code: http_response.status,
2116
+ body: http_response.env.response_body,
2117
+ raw_response: http_response
2118
+ ),
2119
+ "API error occurred"
2120
+ )
2121
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
2122
+ raise(
2123
+ ::NoResponse::Models::Errors::APIStatusError.new(
2124
+ status_code: http_response.status,
2125
+ body: http_response.env.response_body,
2126
+ raw_response: http_response
2127
+ ),
2128
+ "API error occurred"
2129
+ )
2130
+ else
2131
+ raise(
2132
+ ::NoResponse::Models::Errors::APIStatusError.new(
2133
+ status_code: http_response.status,
2134
+ body: http_response.env.response_body,
2135
+ raw_response: http_response
2136
+ ),
2137
+ "Unknown status code received"
2138
+ )
2139
+
2140
+ end
2141
+ end
2142
+
2143
+ sig {
2144
+ params(
2145
+ workspace_id: ::String,
2146
+ environment: Models::Shared::KeyEnvironment,
2147
+ review_id: ::String,
2148
+ limit: T.nilable(::Integer),
2149
+ before_version: T.nilable(::Integer),
2150
+ retries: T.nilable(Utils::RetryConfig),
2151
+ timeout_ms: T.nilable(Integer),
2152
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
2153
+ )
2154
+ .returns(Models::Operations::ListReviewResolutionsResponse)
2155
+ }
2156
+ def list_resolutions(
2157
+ workspace_id:,
2158
+ environment:,
2159
+ review_id:,
2160
+ limit: nil,
2161
+ before_version: nil,
2162
+ retries: nil,
2163
+ timeout_ms: nil,
2164
+ http_headers: nil
2165
+ )
2166
+ # list_resolutions - Read immutable review resolution history.
2167
+ # Page through immutable review resolutions.
2168
+ request = Models::Operations::ListReviewResolutionsRequest.new(
2169
+ workspace_id: workspace_id,
2170
+ environment: environment,
2171
+ review_id: review_id,
2172
+ limit: limit,
2173
+ before_version: before_version
2174
+ )
2175
+ url, params = @sdk_configuration.get_server_details
2176
+ base_url = Utils.template_url(url, params)
2177
+ url = Utils.generate_url(
2178
+ Models::Operations::ListReviewResolutionsRequest,
2179
+ base_url,
2180
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/resolutions",
2181
+ request
2182
+ )
2183
+ headers = {}
2184
+ headers = T.cast(headers, T::Hash[String, String])
2185
+ query_params = Utils.get_query_params(Models::Operations::ListReviewResolutionsRequest, request, nil)
2186
+ headers["Accept"] = "application/json"
2187
+ headers["user-agent"] = @sdk_configuration.user_agent
2188
+ retries ||= @sdk_configuration.retry_config
2189
+ retries ||= Utils::RetryConfig.new(
2190
+ backoff: Utils::BackoffStrategy.new(
2191
+ exponent: 2.0,
2192
+ initial_interval: 500,
2193
+ max_elapsed_time: 30_000,
2194
+ max_interval: 8000
2195
+ ),
2196
+ retry_connection_errors: true,
2197
+ strategy: "backoff"
2198
+ )
2199
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
2200
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
2201
+
2202
+ security = @sdk_configuration.security_source&.call
2203
+
2204
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
2205
+ timeout ||= @sdk_configuration.timeout
2206
+
2207
+ connection = @sdk_configuration.client.dup
2208
+ connection.use(Utils::RetryMiddleware, retry_options)
2209
+
2210
+ hook_ctx = SDKHooks::HookContext.new(
2211
+ config: @sdk_configuration,
2212
+ base_url: base_url,
2213
+ oauth2_scopes: nil,
2214
+ operation_id: "listReviewResolutions",
2215
+ security_source: @sdk_configuration.security_source
2216
+ )
2217
+
2218
+ error = T.let(nil, T.nilable(StandardError))
2219
+ http_response = T.let(nil, T.nilable(Faraday::Response))
2220
+
2221
+ begin
2222
+ http_response = T.must(connection).get(url) do |req|
2223
+ req.headers.merge!(headers)
2224
+ req.options.timeout = timeout unless timeout.nil?
2225
+ req.params = query_params
2226
+ Utils.configure_request_security(req, security)
2227
+ http_headers&.each do |key, value|
2228
+ req.headers[key.to_s] = value
2229
+ end
2230
+
2231
+ @sdk_configuration.hooks.before_request(
2232
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
2233
+ hook_ctx: hook_ctx
2234
+ ),
2235
+ request: req
2236
+ )
2237
+ end
2238
+
2239
+ rescue StandardError => e
2240
+ error = e
2241
+ ensure
2242
+ if http_response.nil? || Utils.error_status?(http_response.status)
2243
+ http_response = @sdk_configuration.hooks.after_error(
2244
+ error: error,
2245
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
2246
+ hook_ctx: hook_ctx
2247
+ ),
2248
+ response: http_response
2249
+ )
2250
+ else
2251
+ http_response = @sdk_configuration.hooks.after_success(
2252
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2253
+ hook_ctx: hook_ctx
2254
+ ),
2255
+ response: http_response
2256
+ )
2257
+ end
2258
+
2259
+ if http_response.nil?
2260
+ raise error if !error.nil?
2261
+ raise "no response"
2262
+ end
2263
+ end
2264
+
2265
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
2266
+ if Utils.match_status_code(http_response.status, ["200"])
2267
+ if Utils.match_content_type(content_type, "application/json")
2268
+ @sdk_configuration.hooks.after_success(
2269
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2270
+ hook_ctx: hook_ctx
2271
+ ),
2272
+ response: http_response
2273
+ )
2274
+ response_data = http_response.env.response_body
2275
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewResolutionList)
2276
+ result = obj
2277
+ response = Models::Operations::ListReviewResolutionsResponse.new(
2278
+ result: result,
2279
+ headers: http_response.headers
2280
+ )
2281
+
2282
+ return response
2283
+ else
2284
+ raise(
2285
+ ::NoResponse::Models::Errors::APIStatusError.new(
2286
+ status_code: http_response.status,
2287
+ body: http_response.env.response_body,
2288
+ raw_response: http_response
2289
+ ),
2290
+ "Unknown content type received"
2291
+ )
2292
+ end
2293
+ elsif Utils.match_status_code(http_response.status, ["400"])
2294
+ if Utils.match_content_type(content_type, "application/problem+json")
2295
+ @sdk_configuration.hooks.after_success(
2296
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2297
+ hook_ctx: hook_ctx
2298
+ ),
2299
+ response: http_response
2300
+ )
2301
+ response_data = http_response.env.response_body
2302
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
2303
+ raise obj
2304
+ else
2305
+ raise(
2306
+ ::NoResponse::Models::Errors::APIStatusError.new(
2307
+ status_code: http_response.status,
2308
+ body: http_response.env.response_body,
2309
+ raw_response: http_response
2310
+ ),
2311
+ "Unknown content type received"
2312
+ )
2313
+ end
2314
+ elsif Utils.match_status_code(http_response.status, ["401"])
2315
+ if Utils.match_content_type(content_type, "application/problem+json")
2316
+ @sdk_configuration.hooks.after_success(
2317
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2318
+ hook_ctx: hook_ctx
2319
+ ),
2320
+ response: http_response
2321
+ )
2322
+ response_data = http_response.env.response_body
2323
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
2324
+ raise obj
2325
+ else
2326
+ raise(
2327
+ ::NoResponse::Models::Errors::APIStatusError.new(
2328
+ status_code: http_response.status,
2329
+ body: http_response.env.response_body,
2330
+ raw_response: http_response
2331
+ ),
2332
+ "Unknown content type received"
2333
+ )
2334
+ end
2335
+ elsif Utils.match_status_code(http_response.status, ["403"])
2336
+ if Utils.match_content_type(content_type, "application/problem+json")
2337
+ @sdk_configuration.hooks.after_success(
2338
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2339
+ hook_ctx: hook_ctx
2340
+ ),
2341
+ response: http_response
2342
+ )
2343
+ response_data = http_response.env.response_body
2344
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
2345
+ raise obj
2346
+ else
2347
+ raise(
2348
+ ::NoResponse::Models::Errors::APIStatusError.new(
2349
+ status_code: http_response.status,
2350
+ body: http_response.env.response_body,
2351
+ raw_response: http_response
2352
+ ),
2353
+ "Unknown content type received"
2354
+ )
2355
+ end
2356
+ elsif Utils.match_status_code(http_response.status, ["404"])
2357
+ if Utils.match_content_type(content_type, "application/problem+json")
2358
+ @sdk_configuration.hooks.after_success(
2359
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2360
+ hook_ctx: hook_ctx
2361
+ ),
2362
+ response: http_response
2363
+ )
2364
+ response_data = http_response.env.response_body
2365
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
2366
+ raise obj
2367
+ else
2368
+ raise(
2369
+ ::NoResponse::Models::Errors::APIStatusError.new(
2370
+ status_code: http_response.status,
2371
+ body: http_response.env.response_body,
2372
+ raw_response: http_response
2373
+ ),
2374
+ "Unknown content type received"
2375
+ )
2376
+ end
2377
+ elsif Utils.match_status_code(http_response.status, ["409"])
2378
+ if Utils.match_content_type(content_type, "application/problem+json")
2379
+ @sdk_configuration.hooks.after_success(
2380
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2381
+ hook_ctx: hook_ctx
2382
+ ),
2383
+ response: http_response
2384
+ )
2385
+ response_data = http_response.env.response_body
2386
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
2387
+ raise obj
2388
+ else
2389
+ raise(
2390
+ ::NoResponse::Models::Errors::APIStatusError.new(
2391
+ status_code: http_response.status,
2392
+ body: http_response.env.response_body,
2393
+ raw_response: http_response
2394
+ ),
2395
+ "Unknown content type received"
2396
+ )
2397
+ end
2398
+ elsif Utils.match_status_code(http_response.status, ["429"])
2399
+ if Utils.match_content_type(content_type, "application/problem+json")
2400
+ @sdk_configuration.hooks.after_success(
2401
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2402
+ hook_ctx: hook_ctx
2403
+ ),
2404
+ response: http_response
2405
+ )
2406
+ response_data = http_response.env.response_body
2407
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
2408
+ raise obj
2409
+ else
2410
+ raise(
2411
+ ::NoResponse::Models::Errors::APIStatusError.new(
2412
+ status_code: http_response.status,
2413
+ body: http_response.env.response_body,
2414
+ raw_response: http_response
2415
+ ),
2416
+ "Unknown content type received"
2417
+ )
2418
+ end
2419
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
2420
+ raise(
2421
+ ::NoResponse::Models::Errors::APIStatusError.new(
2422
+ status_code: http_response.status,
2423
+ body: http_response.env.response_body,
2424
+ raw_response: http_response
2425
+ ),
2426
+ "API error occurred"
2427
+ )
2428
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
2429
+ raise(
2430
+ ::NoResponse::Models::Errors::APIStatusError.new(
2431
+ status_code: http_response.status,
2432
+ body: http_response.env.response_body,
2433
+ raw_response: http_response
2434
+ ),
2435
+ "API error occurred"
2436
+ )
2437
+ else
2438
+ raise(
2439
+ ::NoResponse::Models::Errors::APIStatusError.new(
2440
+ status_code: http_response.status,
2441
+ body: http_response.env.response_body,
2442
+ raw_response: http_response
2443
+ ),
2444
+ "Unknown status code received"
2445
+ )
2446
+
2447
+ end
2448
+ end
2449
+
2450
+ sig {
2451
+ params(
2452
+ workspace_id: ::String,
2453
+ environment: Models::Shared::KeyEnvironment,
2454
+ retries: T.nilable(Utils::RetryConfig),
2455
+ timeout_ms: T.nilable(Integer),
2456
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
2457
+ )
2458
+ .returns(Models::Operations::ListReviewViewsResponse)
2459
+ }
2460
+ def list_views(workspace_id:, environment:, retries: nil, timeout_ms: nil, http_headers: nil)
2461
+ # list_views - List your private and shared review filters.
2462
+ # List private and shared saved review filters visible to you.
2463
+ request = Models::Operations::ListReviewViewsRequest.new(
2464
+ workspace_id: workspace_id,
2465
+ environment: environment
2466
+ )
2467
+ url, params = @sdk_configuration.get_server_details
2468
+ base_url = Utils.template_url(url, params)
2469
+ url = Utils.generate_url(
2470
+ Models::Operations::ListReviewViewsRequest,
2471
+ base_url,
2472
+ "/v1/workspaces/{workspace_id}/review_views/{environment}",
2473
+ request
2474
+ )
2475
+ headers = {}
2476
+ headers = T.cast(headers, T::Hash[String, String])
2477
+ headers["Accept"] = "application/json"
2478
+ headers["user-agent"] = @sdk_configuration.user_agent
2479
+ retries ||= @sdk_configuration.retry_config
2480
+ retries ||= Utils::RetryConfig.new(
2481
+ backoff: Utils::BackoffStrategy.new(
2482
+ exponent: 2.0,
2483
+ initial_interval: 500,
2484
+ max_elapsed_time: 30_000,
2485
+ max_interval: 8000
2486
+ ),
2487
+ retry_connection_errors: true,
2488
+ strategy: "backoff"
2489
+ )
2490
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
2491
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
2492
+
2493
+ security = @sdk_configuration.security_source&.call
2494
+
2495
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
2496
+ timeout ||= @sdk_configuration.timeout
2497
+
2498
+ connection = @sdk_configuration.client.dup
2499
+ connection.use(Utils::RetryMiddleware, retry_options)
2500
+
2501
+ hook_ctx = SDKHooks::HookContext.new(
2502
+ config: @sdk_configuration,
2503
+ base_url: base_url,
2504
+ oauth2_scopes: nil,
2505
+ operation_id: "listReviewViews",
2506
+ security_source: @sdk_configuration.security_source
2507
+ )
2508
+
2509
+ error = T.let(nil, T.nilable(StandardError))
2510
+ http_response = T.let(nil, T.nilable(Faraday::Response))
2511
+
2512
+ begin
2513
+ http_response = T.must(connection).get(url) do |req|
2514
+ req.headers.merge!(headers)
2515
+ req.options.timeout = timeout unless timeout.nil?
2516
+ Utils.configure_request_security(req, security)
2517
+ http_headers&.each do |key, value|
2518
+ req.headers[key.to_s] = value
2519
+ end
2520
+
2521
+ @sdk_configuration.hooks.before_request(
2522
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
2523
+ hook_ctx: hook_ctx
2524
+ ),
2525
+ request: req
2526
+ )
2527
+ end
2528
+
2529
+ rescue StandardError => e
2530
+ error = e
2531
+ ensure
2532
+ if http_response.nil? || Utils.error_status?(http_response.status)
2533
+ http_response = @sdk_configuration.hooks.after_error(
2534
+ error: error,
2535
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
2536
+ hook_ctx: hook_ctx
2537
+ ),
2538
+ response: http_response
2539
+ )
2540
+ else
2541
+ http_response = @sdk_configuration.hooks.after_success(
2542
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2543
+ hook_ctx: hook_ctx
2544
+ ),
2545
+ response: http_response
2546
+ )
2547
+ end
2548
+
2549
+ if http_response.nil?
2550
+ raise error if !error.nil?
2551
+ raise "no response"
2552
+ end
2553
+ end
2554
+
2555
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
2556
+ if Utils.match_status_code(http_response.status, ["200"])
2557
+ if Utils.match_content_type(content_type, "application/json")
2558
+ @sdk_configuration.hooks.after_success(
2559
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2560
+ hook_ctx: hook_ctx
2561
+ ),
2562
+ response: http_response
2563
+ )
2564
+ response_data = http_response.env.response_body
2565
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewViewList)
2566
+ result = obj
2567
+ response = Models::Operations::ListReviewViewsResponse.new(
2568
+ result: result,
2569
+ headers: http_response.headers
2570
+ )
2571
+
2572
+ return response
2573
+ else
2574
+ raise(
2575
+ ::NoResponse::Models::Errors::APIStatusError.new(
2576
+ status_code: http_response.status,
2577
+ body: http_response.env.response_body,
2578
+ raw_response: http_response
2579
+ ),
2580
+ "Unknown content type received"
2581
+ )
2582
+ end
2583
+ elsif Utils.match_status_code(http_response.status, ["400"])
2584
+ if Utils.match_content_type(content_type, "application/problem+json")
2585
+ @sdk_configuration.hooks.after_success(
2586
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2587
+ hook_ctx: hook_ctx
2588
+ ),
2589
+ response: http_response
2590
+ )
2591
+ response_data = http_response.env.response_body
2592
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
2593
+ raise obj
2594
+ else
2595
+ raise(
2596
+ ::NoResponse::Models::Errors::APIStatusError.new(
2597
+ status_code: http_response.status,
2598
+ body: http_response.env.response_body,
2599
+ raw_response: http_response
2600
+ ),
2601
+ "Unknown content type received"
2602
+ )
2603
+ end
2604
+ elsif Utils.match_status_code(http_response.status, ["401"])
2605
+ if Utils.match_content_type(content_type, "application/problem+json")
2606
+ @sdk_configuration.hooks.after_success(
2607
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2608
+ hook_ctx: hook_ctx
2609
+ ),
2610
+ response: http_response
2611
+ )
2612
+ response_data = http_response.env.response_body
2613
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
2614
+ raise obj
2615
+ else
2616
+ raise(
2617
+ ::NoResponse::Models::Errors::APIStatusError.new(
2618
+ status_code: http_response.status,
2619
+ body: http_response.env.response_body,
2620
+ raw_response: http_response
2621
+ ),
2622
+ "Unknown content type received"
2623
+ )
2624
+ end
2625
+ elsif Utils.match_status_code(http_response.status, ["403"])
2626
+ if Utils.match_content_type(content_type, "application/problem+json")
2627
+ @sdk_configuration.hooks.after_success(
2628
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2629
+ hook_ctx: hook_ctx
2630
+ ),
2631
+ response: http_response
2632
+ )
2633
+ response_data = http_response.env.response_body
2634
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
2635
+ raise obj
2636
+ else
2637
+ raise(
2638
+ ::NoResponse::Models::Errors::APIStatusError.new(
2639
+ status_code: http_response.status,
2640
+ body: http_response.env.response_body,
2641
+ raw_response: http_response
2642
+ ),
2643
+ "Unknown content type received"
2644
+ )
2645
+ end
2646
+ elsif Utils.match_status_code(http_response.status, ["404"])
2647
+ if Utils.match_content_type(content_type, "application/problem+json")
2648
+ @sdk_configuration.hooks.after_success(
2649
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2650
+ hook_ctx: hook_ctx
2651
+ ),
2652
+ response: http_response
2653
+ )
2654
+ response_data = http_response.env.response_body
2655
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
2656
+ raise obj
2657
+ else
2658
+ raise(
2659
+ ::NoResponse::Models::Errors::APIStatusError.new(
2660
+ status_code: http_response.status,
2661
+ body: http_response.env.response_body,
2662
+ raw_response: http_response
2663
+ ),
2664
+ "Unknown content type received"
2665
+ )
2666
+ end
2667
+ elsif Utils.match_status_code(http_response.status, ["409"])
2668
+ if Utils.match_content_type(content_type, "application/problem+json")
2669
+ @sdk_configuration.hooks.after_success(
2670
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2671
+ hook_ctx: hook_ctx
2672
+ ),
2673
+ response: http_response
2674
+ )
2675
+ response_data = http_response.env.response_body
2676
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
2677
+ raise obj
2678
+ else
2679
+ raise(
2680
+ ::NoResponse::Models::Errors::APIStatusError.new(
2681
+ status_code: http_response.status,
2682
+ body: http_response.env.response_body,
2683
+ raw_response: http_response
2684
+ ),
2685
+ "Unknown content type received"
2686
+ )
2687
+ end
2688
+ elsif Utils.match_status_code(http_response.status, ["429"])
2689
+ if Utils.match_content_type(content_type, "application/problem+json")
2690
+ @sdk_configuration.hooks.after_success(
2691
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2692
+ hook_ctx: hook_ctx
2693
+ ),
2694
+ response: http_response
2695
+ )
2696
+ response_data = http_response.env.response_body
2697
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
2698
+ raise obj
2699
+ else
2700
+ raise(
2701
+ ::NoResponse::Models::Errors::APIStatusError.new(
2702
+ status_code: http_response.status,
2703
+ body: http_response.env.response_body,
2704
+ raw_response: http_response
2705
+ ),
2706
+ "Unknown content type received"
2707
+ )
2708
+ end
2709
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
2710
+ raise(
2711
+ ::NoResponse::Models::Errors::APIStatusError.new(
2712
+ status_code: http_response.status,
2713
+ body: http_response.env.response_body,
2714
+ raw_response: http_response
2715
+ ),
2716
+ "API error occurred"
2717
+ )
2718
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
2719
+ raise(
2720
+ ::NoResponse::Models::Errors::APIStatusError.new(
2721
+ status_code: http_response.status,
2722
+ body: http_response.env.response_body,
2723
+ raw_response: http_response
2724
+ ),
2725
+ "API error occurred"
2726
+ )
2727
+ else
2728
+ raise(
2729
+ ::NoResponse::Models::Errors::APIStatusError.new(
2730
+ status_code: http_response.status,
2731
+ body: http_response.env.response_body,
2732
+ raw_response: http_response
2733
+ ),
2734
+ "Unknown status code received"
2735
+ )
2736
+
2737
+ end
2738
+ end
2739
+
2740
+ sig {
2741
+ params(
2742
+ body: Models::Shared::ReviewViewRequest,
2743
+ workspace_id: ::String,
2744
+ environment: Models::Shared::KeyEnvironment,
2745
+ timeout_ms: T.nilable(Integer),
2746
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
2747
+ )
2748
+ .returns(Models::Operations::CreateReviewViewResponse)
2749
+ }
2750
+ def create_view(body:, workspace_id:, environment:, timeout_ms: nil, http_headers: nil)
2751
+ # create_view - Save a tenant-local review filter.
2752
+ # Save a private or shared review filter.
2753
+ request = Models::Operations::CreateReviewViewRequest.new(
2754
+ workspace_id: workspace_id,
2755
+ environment: environment,
2756
+ body: body
2757
+ )
2758
+ url, params = @sdk_configuration.get_server_details
2759
+ base_url = Utils.template_url(url, params)
2760
+ url = Utils.generate_url(
2761
+ Models::Operations::CreateReviewViewRequest,
2762
+ base_url,
2763
+ "/v1/workspaces/{workspace_id}/review_views/{environment}",
2764
+ request
2765
+ )
2766
+ headers = {}
2767
+ headers = T.cast(headers, T::Hash[String, String])
2768
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
2769
+ headers["content-type"] = req_content_type
2770
+ raise StandardError, "request body is required" if data.nil? && form.nil?
2771
+
2772
+ if form && !form.empty?
2773
+ body = Utils.encode_form(form)
2774
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
2775
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
2776
+ else
2777
+ body = data
2778
+ end
2779
+
2780
+ headers["Accept"] = "application/json"
2781
+ headers["user-agent"] = @sdk_configuration.user_agent
2782
+
2783
+ security = @sdk_configuration.security_source&.call
2784
+
2785
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
2786
+ timeout ||= @sdk_configuration.timeout
2787
+
2788
+ connection = @sdk_configuration.client
2789
+
2790
+ hook_ctx = SDKHooks::HookContext.new(
2791
+ config: @sdk_configuration,
2792
+ base_url: base_url,
2793
+ oauth2_scopes: nil,
2794
+ operation_id: "createReviewView",
2795
+ security_source: @sdk_configuration.security_source
2796
+ )
2797
+
2798
+ error = T.let(nil, T.nilable(StandardError))
2799
+ http_response = T.let(nil, T.nilable(Faraday::Response))
2800
+
2801
+ begin
2802
+ http_response = T.must(connection).post(url) do |req|
2803
+ req.body = body
2804
+ req.headers.merge!(headers)
2805
+ req.options.timeout = timeout unless timeout.nil?
2806
+ Utils.configure_request_security(req, security)
2807
+ http_headers&.each do |key, value|
2808
+ req.headers[key.to_s] = value
2809
+ end
2810
+
2811
+ @sdk_configuration.hooks.before_request(
2812
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
2813
+ hook_ctx: hook_ctx
2814
+ ),
2815
+ request: req
2816
+ )
2817
+ end
2818
+
2819
+ rescue StandardError => e
2820
+ error = e
2821
+ ensure
2822
+ if http_response.nil? || Utils.error_status?(http_response.status)
2823
+ http_response = @sdk_configuration.hooks.after_error(
2824
+ error: error,
2825
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
2826
+ hook_ctx: hook_ctx
2827
+ ),
2828
+ response: http_response
2829
+ )
2830
+ else
2831
+ http_response = @sdk_configuration.hooks.after_success(
2832
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2833
+ hook_ctx: hook_ctx
2834
+ ),
2835
+ response: http_response
2836
+ )
2837
+ end
2838
+
2839
+ if http_response.nil?
2840
+ raise error if !error.nil?
2841
+ raise "no response"
2842
+ end
2843
+ end
2844
+
2845
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
2846
+ if Utils.match_status_code(http_response.status, ["201"])
2847
+ if Utils.match_content_type(content_type, "application/json")
2848
+ @sdk_configuration.hooks.after_success(
2849
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2850
+ hook_ctx: hook_ctx
2851
+ ),
2852
+ response: http_response
2853
+ )
2854
+ response_data = http_response.env.response_body
2855
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewView)
2856
+ result = obj
2857
+ response = Models::Operations::CreateReviewViewResponse.new(
2858
+ result: result,
2859
+ headers: http_response.headers
2860
+ )
2861
+
2862
+ return response
2863
+ else
2864
+ raise(
2865
+ ::NoResponse::Models::Errors::APIStatusError.new(
2866
+ status_code: http_response.status,
2867
+ body: http_response.env.response_body,
2868
+ raw_response: http_response
2869
+ ),
2870
+ "Unknown content type received"
2871
+ )
2872
+ end
2873
+ elsif Utils.match_status_code(http_response.status, ["400"])
2874
+ if Utils.match_content_type(content_type, "application/problem+json")
2875
+ @sdk_configuration.hooks.after_success(
2876
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2877
+ hook_ctx: hook_ctx
2878
+ ),
2879
+ response: http_response
2880
+ )
2881
+ response_data = http_response.env.response_body
2882
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
2883
+ raise obj
2884
+ else
2885
+ raise(
2886
+ ::NoResponse::Models::Errors::APIStatusError.new(
2887
+ status_code: http_response.status,
2888
+ body: http_response.env.response_body,
2889
+ raw_response: http_response
2890
+ ),
2891
+ "Unknown content type received"
2892
+ )
2893
+ end
2894
+ elsif Utils.match_status_code(http_response.status, ["401"])
2895
+ if Utils.match_content_type(content_type, "application/problem+json")
2896
+ @sdk_configuration.hooks.after_success(
2897
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2898
+ hook_ctx: hook_ctx
2899
+ ),
2900
+ response: http_response
2901
+ )
2902
+ response_data = http_response.env.response_body
2903
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
2904
+ raise obj
2905
+ else
2906
+ raise(
2907
+ ::NoResponse::Models::Errors::APIStatusError.new(
2908
+ status_code: http_response.status,
2909
+ body: http_response.env.response_body,
2910
+ raw_response: http_response
2911
+ ),
2912
+ "Unknown content type received"
2913
+ )
2914
+ end
2915
+ elsif Utils.match_status_code(http_response.status, ["403"])
2916
+ if Utils.match_content_type(content_type, "application/problem+json")
2917
+ @sdk_configuration.hooks.after_success(
2918
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2919
+ hook_ctx: hook_ctx
2920
+ ),
2921
+ response: http_response
2922
+ )
2923
+ response_data = http_response.env.response_body
2924
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
2925
+ raise obj
2926
+ else
2927
+ raise(
2928
+ ::NoResponse::Models::Errors::APIStatusError.new(
2929
+ status_code: http_response.status,
2930
+ body: http_response.env.response_body,
2931
+ raw_response: http_response
2932
+ ),
2933
+ "Unknown content type received"
2934
+ )
2935
+ end
2936
+ elsif Utils.match_status_code(http_response.status, ["404"])
2937
+ if Utils.match_content_type(content_type, "application/problem+json")
2938
+ @sdk_configuration.hooks.after_success(
2939
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2940
+ hook_ctx: hook_ctx
2941
+ ),
2942
+ response: http_response
2943
+ )
2944
+ response_data = http_response.env.response_body
2945
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
2946
+ raise obj
2947
+ else
2948
+ raise(
2949
+ ::NoResponse::Models::Errors::APIStatusError.new(
2950
+ status_code: http_response.status,
2951
+ body: http_response.env.response_body,
2952
+ raw_response: http_response
2953
+ ),
2954
+ "Unknown content type received"
2955
+ )
2956
+ end
2957
+ elsif Utils.match_status_code(http_response.status, ["409"])
2958
+ if Utils.match_content_type(content_type, "application/problem+json")
2959
+ @sdk_configuration.hooks.after_success(
2960
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2961
+ hook_ctx: hook_ctx
2962
+ ),
2963
+ response: http_response
2964
+ )
2965
+ response_data = http_response.env.response_body
2966
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
2967
+ raise obj
2968
+ else
2969
+ raise(
2970
+ ::NoResponse::Models::Errors::APIStatusError.new(
2971
+ status_code: http_response.status,
2972
+ body: http_response.env.response_body,
2973
+ raw_response: http_response
2974
+ ),
2975
+ "Unknown content type received"
2976
+ )
2977
+ end
2978
+ elsif Utils.match_status_code(http_response.status, ["429"])
2979
+ if Utils.match_content_type(content_type, "application/problem+json")
2980
+ @sdk_configuration.hooks.after_success(
2981
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2982
+ hook_ctx: hook_ctx
2983
+ ),
2984
+ response: http_response
2985
+ )
2986
+ response_data = http_response.env.response_body
2987
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
2988
+ raise obj
2989
+ else
2990
+ raise(
2991
+ ::NoResponse::Models::Errors::APIStatusError.new(
2992
+ status_code: http_response.status,
2993
+ body: http_response.env.response_body,
2994
+ raw_response: http_response
2995
+ ),
2996
+ "Unknown content type received"
2997
+ )
2998
+ end
2999
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
3000
+ raise(
3001
+ ::NoResponse::Models::Errors::APIStatusError.new(
3002
+ status_code: http_response.status,
3003
+ body: http_response.env.response_body,
3004
+ raw_response: http_response
3005
+ ),
3006
+ "API error occurred"
3007
+ )
3008
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
3009
+ raise(
3010
+ ::NoResponse::Models::Errors::APIStatusError.new(
3011
+ status_code: http_response.status,
3012
+ body: http_response.env.response_body,
3013
+ raw_response: http_response
3014
+ ),
3015
+ "API error occurred"
3016
+ )
3017
+ else
3018
+ raise(
3019
+ ::NoResponse::Models::Errors::APIStatusError.new(
3020
+ status_code: http_response.status,
3021
+ body: http_response.env.response_body,
3022
+ raw_response: http_response
3023
+ ),
3024
+ "Unknown status code received"
3025
+ )
3026
+
3027
+ end
3028
+ end
3029
+
3030
+ sig {
3031
+ params(
3032
+ body: Models::Shared::ReviewViewRequest,
3033
+ workspace_id: ::String,
3034
+ environment: Models::Shared::KeyEnvironment,
3035
+ view_id: ::String,
3036
+ timeout_ms: T.nilable(Integer),
3037
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
3038
+ )
3039
+ .returns(Models::Operations::UpdateReviewViewResponse)
3040
+ }
3041
+ def update_view(body:, workspace_id:, environment:, view_id:, timeout_ms: nil, http_headers: nil)
3042
+ # update_view - Replace your saved filter with optimistic concurrency.
3043
+ # Update your saved review filter after checking its expected version.
3044
+ request = Models::Operations::UpdateReviewViewRequest.new(
3045
+ workspace_id: workspace_id,
3046
+ environment: environment,
3047
+ view_id: view_id,
3048
+ body: body
3049
+ )
3050
+ url, params = @sdk_configuration.get_server_details
3051
+ base_url = Utils.template_url(url, params)
3052
+ url = Utils.generate_url(
3053
+ Models::Operations::UpdateReviewViewRequest,
3054
+ base_url,
3055
+ "/v1/workspaces/{workspace_id}/review_views/{environment}/{view_id}",
3056
+ request
3057
+ )
3058
+ headers = {}
3059
+ headers = T.cast(headers, T::Hash[String, String])
3060
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
3061
+ headers["content-type"] = req_content_type
3062
+ raise StandardError, "request body is required" if data.nil? && form.nil?
3063
+
3064
+ if form && !form.empty?
3065
+ body = Utils.encode_form(form)
3066
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
3067
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
3068
+ else
3069
+ body = data
3070
+ end
3071
+
3072
+ headers["Accept"] = "application/json"
3073
+ headers["user-agent"] = @sdk_configuration.user_agent
3074
+
3075
+ security = @sdk_configuration.security_source&.call
3076
+
3077
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
3078
+ timeout ||= @sdk_configuration.timeout
3079
+
3080
+ connection = @sdk_configuration.client
3081
+
3082
+ hook_ctx = SDKHooks::HookContext.new(
3083
+ config: @sdk_configuration,
3084
+ base_url: base_url,
3085
+ oauth2_scopes: nil,
3086
+ operation_id: "updateReviewView",
3087
+ security_source: @sdk_configuration.security_source
3088
+ )
3089
+
3090
+ error = T.let(nil, T.nilable(StandardError))
3091
+ http_response = T.let(nil, T.nilable(Faraday::Response))
3092
+
3093
+ begin
3094
+ http_response = T.must(connection).patch(url) do |req|
3095
+ req.body = body
3096
+ req.headers.merge!(headers)
3097
+ req.options.timeout = timeout unless timeout.nil?
3098
+ Utils.configure_request_security(req, security)
3099
+ http_headers&.each do |key, value|
3100
+ req.headers[key.to_s] = value
3101
+ end
3102
+
3103
+ @sdk_configuration.hooks.before_request(
3104
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3105
+ hook_ctx: hook_ctx
3106
+ ),
3107
+ request: req
3108
+ )
3109
+ end
3110
+
3111
+ rescue StandardError => e
3112
+ error = e
3113
+ ensure
3114
+ if http_response.nil? || Utils.error_status?(http_response.status)
3115
+ http_response = @sdk_configuration.hooks.after_error(
3116
+ error: error,
3117
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3118
+ hook_ctx: hook_ctx
3119
+ ),
3120
+ response: http_response
3121
+ )
3122
+ else
3123
+ http_response = @sdk_configuration.hooks.after_success(
3124
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3125
+ hook_ctx: hook_ctx
3126
+ ),
3127
+ response: http_response
3128
+ )
3129
+ end
3130
+
3131
+ if http_response.nil?
3132
+ raise error if !error.nil?
3133
+ raise "no response"
3134
+ end
3135
+ end
3136
+
3137
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
3138
+ if Utils.match_status_code(http_response.status, ["200"])
3139
+ if Utils.match_content_type(content_type, "application/json")
3140
+ @sdk_configuration.hooks.after_success(
3141
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3142
+ hook_ctx: hook_ctx
3143
+ ),
3144
+ response: http_response
3145
+ )
3146
+ response_data = http_response.env.response_body
3147
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewView)
3148
+ result = obj
3149
+ response = Models::Operations::UpdateReviewViewResponse.new(
3150
+ result: result,
3151
+ headers: http_response.headers
3152
+ )
3153
+
3154
+ return response
3155
+ else
3156
+ raise(
3157
+ ::NoResponse::Models::Errors::APIStatusError.new(
3158
+ status_code: http_response.status,
3159
+ body: http_response.env.response_body,
3160
+ raw_response: http_response
3161
+ ),
3162
+ "Unknown content type received"
3163
+ )
3164
+ end
3165
+ elsif Utils.match_status_code(http_response.status, ["400"])
3166
+ if Utils.match_content_type(content_type, "application/problem+json")
3167
+ @sdk_configuration.hooks.after_success(
3168
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3169
+ hook_ctx: hook_ctx
3170
+ ),
3171
+ response: http_response
3172
+ )
3173
+ response_data = http_response.env.response_body
3174
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
3175
+ raise obj
3176
+ else
3177
+ raise(
3178
+ ::NoResponse::Models::Errors::APIStatusError.new(
3179
+ status_code: http_response.status,
3180
+ body: http_response.env.response_body,
3181
+ raw_response: http_response
3182
+ ),
3183
+ "Unknown content type received"
3184
+ )
3185
+ end
3186
+ elsif Utils.match_status_code(http_response.status, ["401"])
3187
+ if Utils.match_content_type(content_type, "application/problem+json")
3188
+ @sdk_configuration.hooks.after_success(
3189
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3190
+ hook_ctx: hook_ctx
3191
+ ),
3192
+ response: http_response
3193
+ )
3194
+ response_data = http_response.env.response_body
3195
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
3196
+ raise obj
3197
+ else
3198
+ raise(
3199
+ ::NoResponse::Models::Errors::APIStatusError.new(
3200
+ status_code: http_response.status,
3201
+ body: http_response.env.response_body,
3202
+ raw_response: http_response
3203
+ ),
3204
+ "Unknown content type received"
3205
+ )
3206
+ end
3207
+ elsif Utils.match_status_code(http_response.status, ["403"])
3208
+ if Utils.match_content_type(content_type, "application/problem+json")
3209
+ @sdk_configuration.hooks.after_success(
3210
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3211
+ hook_ctx: hook_ctx
3212
+ ),
3213
+ response: http_response
3214
+ )
3215
+ response_data = http_response.env.response_body
3216
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
3217
+ raise obj
3218
+ else
3219
+ raise(
3220
+ ::NoResponse::Models::Errors::APIStatusError.new(
3221
+ status_code: http_response.status,
3222
+ body: http_response.env.response_body,
3223
+ raw_response: http_response
3224
+ ),
3225
+ "Unknown content type received"
3226
+ )
3227
+ end
3228
+ elsif Utils.match_status_code(http_response.status, ["404"])
3229
+ if Utils.match_content_type(content_type, "application/problem+json")
3230
+ @sdk_configuration.hooks.after_success(
3231
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3232
+ hook_ctx: hook_ctx
3233
+ ),
3234
+ response: http_response
3235
+ )
3236
+ response_data = http_response.env.response_body
3237
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
3238
+ raise obj
3239
+ else
3240
+ raise(
3241
+ ::NoResponse::Models::Errors::APIStatusError.new(
3242
+ status_code: http_response.status,
3243
+ body: http_response.env.response_body,
3244
+ raw_response: http_response
3245
+ ),
3246
+ "Unknown content type received"
3247
+ )
3248
+ end
3249
+ elsif Utils.match_status_code(http_response.status, ["409"])
3250
+ if Utils.match_content_type(content_type, "application/problem+json")
3251
+ @sdk_configuration.hooks.after_success(
3252
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3253
+ hook_ctx: hook_ctx
3254
+ ),
3255
+ response: http_response
3256
+ )
3257
+ response_data = http_response.env.response_body
3258
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
3259
+ raise obj
3260
+ else
3261
+ raise(
3262
+ ::NoResponse::Models::Errors::APIStatusError.new(
3263
+ status_code: http_response.status,
3264
+ body: http_response.env.response_body,
3265
+ raw_response: http_response
3266
+ ),
3267
+ "Unknown content type received"
3268
+ )
3269
+ end
3270
+ elsif Utils.match_status_code(http_response.status, ["429"])
3271
+ if Utils.match_content_type(content_type, "application/problem+json")
3272
+ @sdk_configuration.hooks.after_success(
3273
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3274
+ hook_ctx: hook_ctx
3275
+ ),
3276
+ response: http_response
3277
+ )
3278
+ response_data = http_response.env.response_body
3279
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
3280
+ raise obj
3281
+ else
3282
+ raise(
3283
+ ::NoResponse::Models::Errors::APIStatusError.new(
3284
+ status_code: http_response.status,
3285
+ body: http_response.env.response_body,
3286
+ raw_response: http_response
3287
+ ),
3288
+ "Unknown content type received"
3289
+ )
3290
+ end
3291
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
3292
+ raise(
3293
+ ::NoResponse::Models::Errors::APIStatusError.new(
3294
+ status_code: http_response.status,
3295
+ body: http_response.env.response_body,
3296
+ raw_response: http_response
3297
+ ),
3298
+ "API error occurred"
3299
+ )
3300
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
3301
+ raise(
3302
+ ::NoResponse::Models::Errors::APIStatusError.new(
3303
+ status_code: http_response.status,
3304
+ body: http_response.env.response_body,
3305
+ raw_response: http_response
3306
+ ),
3307
+ "API error occurred"
3308
+ )
3309
+ else
3310
+ raise(
3311
+ ::NoResponse::Models::Errors::APIStatusError.new(
3312
+ status_code: http_response.status,
3313
+ body: http_response.env.response_body,
3314
+ raw_response: http_response
3315
+ ),
3316
+ "Unknown status code received"
3317
+ )
3318
+
3319
+ end
3320
+ end
3321
+
3322
+ sig {
3323
+ params(
3324
+ body: Models::Shared::ReviewViewDeleteRequest,
3325
+ workspace_id: ::String,
3326
+ environment: Models::Shared::KeyEnvironment,
3327
+ view_id: ::String,
3328
+ retries: T.nilable(Utils::RetryConfig),
3329
+ timeout_ms: T.nilable(Integer),
3330
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
3331
+ )
3332
+ .returns(Models::Operations::DeleteReviewViewResponse)
3333
+ }
3334
+ def delete_view(body:, workspace_id:, environment:, view_id:, retries: nil, timeout_ms: nil, http_headers: nil)
3335
+ # delete_view - Delete your saved filter with optimistic concurrency.
3336
+ # Delete your saved review filter after checking its expected version.
3337
+ request = Models::Operations::DeleteReviewViewRequest.new(
3338
+ workspace_id: workspace_id,
3339
+ environment: environment,
3340
+ view_id: view_id,
3341
+ body: body
3342
+ )
3343
+ url, params = @sdk_configuration.get_server_details
3344
+ base_url = Utils.template_url(url, params)
3345
+ url = Utils.generate_url(
3346
+ Models::Operations::DeleteReviewViewRequest,
3347
+ base_url,
3348
+ "/v1/workspaces/{workspace_id}/review_views/{environment}/{view_id}",
3349
+ request
3350
+ )
3351
+ headers = {}
3352
+ headers = T.cast(headers, T::Hash[String, String])
3353
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
3354
+ headers["content-type"] = req_content_type
3355
+ raise StandardError, "request body is required" if data.nil? && form.nil?
3356
+
3357
+ if form && !form.empty?
3358
+ body = Utils.encode_form(form)
3359
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
3360
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
3361
+ else
3362
+ body = data
3363
+ end
3364
+
3365
+ headers["Accept"] = "application/problem+json"
3366
+ headers["user-agent"] = @sdk_configuration.user_agent
3367
+ retries ||= @sdk_configuration.retry_config
3368
+ retries ||= Utils::RetryConfig.new(
3369
+ backoff: Utils::BackoffStrategy.new(
3370
+ exponent: 2.0,
3371
+ initial_interval: 500,
3372
+ max_elapsed_time: 30_000,
3373
+ max_interval: 8000
3374
+ ),
3375
+ retry_connection_errors: true,
3376
+ strategy: "backoff"
3377
+ )
3378
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
3379
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
3380
+
3381
+ security = @sdk_configuration.security_source&.call
3382
+
3383
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
3384
+ timeout ||= @sdk_configuration.timeout
3385
+
3386
+ connection = @sdk_configuration.client.dup
3387
+ connection.use(Utils::RetryMiddleware, retry_options)
3388
+
3389
+ hook_ctx = SDKHooks::HookContext.new(
3390
+ config: @sdk_configuration,
3391
+ base_url: base_url,
3392
+ oauth2_scopes: nil,
3393
+ operation_id: "deleteReviewView",
3394
+ security_source: @sdk_configuration.security_source
3395
+ )
3396
+
3397
+ error = T.let(nil, T.nilable(StandardError))
3398
+ http_response = T.let(nil, T.nilable(Faraday::Response))
3399
+
3400
+ begin
3401
+ http_response = T.must(connection).delete(url) do |req|
3402
+ req.body = body
3403
+ req.headers.merge!(headers)
3404
+ req.options.timeout = timeout unless timeout.nil?
3405
+ Utils.configure_request_security(req, security)
3406
+ http_headers&.each do |key, value|
3407
+ req.headers[key.to_s] = value
3408
+ end
3409
+
3410
+ @sdk_configuration.hooks.before_request(
3411
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3412
+ hook_ctx: hook_ctx
3413
+ ),
3414
+ request: req
3415
+ )
3416
+ end
3417
+
3418
+ rescue StandardError => e
3419
+ error = e
3420
+ ensure
3421
+ if http_response.nil? || Utils.error_status?(http_response.status)
3422
+ http_response = @sdk_configuration.hooks.after_error(
3423
+ error: error,
3424
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3425
+ hook_ctx: hook_ctx
3426
+ ),
3427
+ response: http_response
3428
+ )
3429
+ else
3430
+ http_response = @sdk_configuration.hooks.after_success(
3431
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3432
+ hook_ctx: hook_ctx
3433
+ ),
3434
+ response: http_response
3435
+ )
3436
+ end
3437
+
3438
+ if http_response.nil?
3439
+ raise error if !error.nil?
3440
+ raise "no response"
3441
+ end
3442
+ end
3443
+
3444
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
3445
+ if Utils.match_status_code(http_response.status, ["204"])
3446
+ @sdk_configuration.hooks.after_success(
3447
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3448
+ hook_ctx: hook_ctx
3449
+ ),
3450
+ response: http_response
3451
+ )
3452
+ return Models::Operations::DeleteReviewViewResponse.new(
3453
+ headers: http_response.headers
3454
+ )
3455
+ elsif Utils.match_status_code(http_response.status, ["400"])
3456
+ if Utils.match_content_type(content_type, "application/problem+json")
3457
+ @sdk_configuration.hooks.after_success(
3458
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3459
+ hook_ctx: hook_ctx
3460
+ ),
3461
+ response: http_response
3462
+ )
3463
+ response_data = http_response.env.response_body
3464
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
3465
+ raise obj
3466
+ else
3467
+ raise(
3468
+ ::NoResponse::Models::Errors::APIStatusError.new(
3469
+ status_code: http_response.status,
3470
+ body: http_response.env.response_body,
3471
+ raw_response: http_response
3472
+ ),
3473
+ "Unknown content type received"
3474
+ )
3475
+ end
3476
+ elsif Utils.match_status_code(http_response.status, ["401"])
3477
+ if Utils.match_content_type(content_type, "application/problem+json")
3478
+ @sdk_configuration.hooks.after_success(
3479
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3480
+ hook_ctx: hook_ctx
3481
+ ),
3482
+ response: http_response
3483
+ )
3484
+ response_data = http_response.env.response_body
3485
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
3486
+ raise obj
3487
+ else
3488
+ raise(
3489
+ ::NoResponse::Models::Errors::APIStatusError.new(
3490
+ status_code: http_response.status,
3491
+ body: http_response.env.response_body,
3492
+ raw_response: http_response
3493
+ ),
3494
+ "Unknown content type received"
3495
+ )
3496
+ end
3497
+ elsif Utils.match_status_code(http_response.status, ["403"])
3498
+ if Utils.match_content_type(content_type, "application/problem+json")
3499
+ @sdk_configuration.hooks.after_success(
3500
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3501
+ hook_ctx: hook_ctx
3502
+ ),
3503
+ response: http_response
3504
+ )
3505
+ response_data = http_response.env.response_body
3506
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
3507
+ raise obj
3508
+ else
3509
+ raise(
3510
+ ::NoResponse::Models::Errors::APIStatusError.new(
3511
+ status_code: http_response.status,
3512
+ body: http_response.env.response_body,
3513
+ raw_response: http_response
3514
+ ),
3515
+ "Unknown content type received"
3516
+ )
3517
+ end
3518
+ elsif Utils.match_status_code(http_response.status, ["404"])
3519
+ if Utils.match_content_type(content_type, "application/problem+json")
3520
+ @sdk_configuration.hooks.after_success(
3521
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3522
+ hook_ctx: hook_ctx
3523
+ ),
3524
+ response: http_response
3525
+ )
3526
+ response_data = http_response.env.response_body
3527
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
3528
+ raise obj
3529
+ else
3530
+ raise(
3531
+ ::NoResponse::Models::Errors::APIStatusError.new(
3532
+ status_code: http_response.status,
3533
+ body: http_response.env.response_body,
3534
+ raw_response: http_response
3535
+ ),
3536
+ "Unknown content type received"
3537
+ )
3538
+ end
3539
+ elsif Utils.match_status_code(http_response.status, ["409"])
3540
+ if Utils.match_content_type(content_type, "application/problem+json")
3541
+ @sdk_configuration.hooks.after_success(
3542
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3543
+ hook_ctx: hook_ctx
3544
+ ),
3545
+ response: http_response
3546
+ )
3547
+ response_data = http_response.env.response_body
3548
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
3549
+ raise obj
3550
+ else
3551
+ raise(
3552
+ ::NoResponse::Models::Errors::APIStatusError.new(
3553
+ status_code: http_response.status,
3554
+ body: http_response.env.response_body,
3555
+ raw_response: http_response
3556
+ ),
3557
+ "Unknown content type received"
3558
+ )
3559
+ end
3560
+ elsif Utils.match_status_code(http_response.status, ["429"])
3561
+ if Utils.match_content_type(content_type, "application/problem+json")
3562
+ @sdk_configuration.hooks.after_success(
3563
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3564
+ hook_ctx: hook_ctx
3565
+ ),
3566
+ response: http_response
3567
+ )
3568
+ response_data = http_response.env.response_body
3569
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
3570
+ raise obj
3571
+ else
3572
+ raise(
3573
+ ::NoResponse::Models::Errors::APIStatusError.new(
3574
+ status_code: http_response.status,
3575
+ body: http_response.env.response_body,
3576
+ raw_response: http_response
3577
+ ),
3578
+ "Unknown content type received"
3579
+ )
3580
+ end
3581
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
3582
+ raise(
3583
+ ::NoResponse::Models::Errors::APIStatusError.new(
3584
+ status_code: http_response.status,
3585
+ body: http_response.env.response_body,
3586
+ raw_response: http_response
3587
+ ),
3588
+ "API error occurred"
3589
+ )
3590
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
3591
+ raise(
3592
+ ::NoResponse::Models::Errors::APIStatusError.new(
3593
+ status_code: http_response.status,
3594
+ body: http_response.env.response_body,
3595
+ raw_response: http_response
3596
+ ),
3597
+ "API error occurred"
3598
+ )
3599
+ else
3600
+ raise(
3601
+ ::NoResponse::Models::Errors::APIStatusError.new(
3602
+ status_code: http_response.status,
3603
+ body: http_response.env.response_body,
3604
+ raw_response: http_response
3605
+ ),
3606
+ "Unknown status code received"
3607
+ )
3608
+
3609
+ end
3610
+ end
3611
+
3612
+ sig {
3613
+ params(
3614
+ workspace_id: ::String,
3615
+ environment: Models::Shared::KeyEnvironment,
3616
+ review_id: ::String,
3617
+ retries: T.nilable(Utils::RetryConfig),
3618
+ timeout_ms: T.nilable(Integer),
3619
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
3620
+ )
3621
+ .returns(Models::Operations::ExportReviewResponse)
3622
+ }
3623
+ def export(workspace_id:, environment:, review_id:, retries: nil, timeout_ms: nil, http_headers: nil)
3624
+ # export - Export an account review
3625
+ # Export retained review details, comments, resolutions and linked subjects. Requires current reviews.read and exports.read; API keys need management together with exports, history or audit_manage. The audit event commits before any bytes are returned. Oversized exports are refused without truncation; use the bounded collection APIs.
3626
+ request = Models::Operations::ExportReviewRequest.new(
3627
+ workspace_id: workspace_id,
3628
+ environment: environment,
3629
+ review_id: review_id
3630
+ )
3631
+ url, params = @sdk_configuration.get_server_details
3632
+ base_url = Utils.template_url(url, params)
3633
+ url = Utils.generate_url(
3634
+ Models::Operations::ExportReviewRequest,
3635
+ base_url,
3636
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/export",
3637
+ request
3638
+ )
3639
+ headers = {}
3640
+ headers = T.cast(headers, T::Hash[String, String])
3641
+ headers["Accept"] = "application/json"
3642
+ headers["user-agent"] = @sdk_configuration.user_agent
3643
+ retries ||= @sdk_configuration.retry_config
3644
+ retries ||= Utils::RetryConfig.new(
3645
+ backoff: Utils::BackoffStrategy.new(
3646
+ exponent: 2.0,
3647
+ initial_interval: 500,
3648
+ max_elapsed_time: 30_000,
3649
+ max_interval: 8000
3650
+ ),
3651
+ retry_connection_errors: true,
3652
+ strategy: "backoff"
3653
+ )
3654
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
3655
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
3656
+
3657
+ security = @sdk_configuration.security_source&.call
3658
+
3659
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
3660
+ timeout ||= @sdk_configuration.timeout
3661
+
3662
+ connection = @sdk_configuration.client.dup
3663
+ connection.use(Utils::RetryMiddleware, retry_options)
3664
+
3665
+ hook_ctx = SDKHooks::HookContext.new(
3666
+ config: @sdk_configuration,
3667
+ base_url: base_url,
3668
+ oauth2_scopes: nil,
3669
+ operation_id: "exportReview",
3670
+ security_source: @sdk_configuration.security_source
3671
+ )
3672
+
3673
+ error = T.let(nil, T.nilable(StandardError))
3674
+ http_response = T.let(nil, T.nilable(Faraday::Response))
3675
+
3676
+ begin
3677
+ http_response = T.must(connection).get(url) do |req|
3678
+ req.headers.merge!(headers)
3679
+ req.options.timeout = timeout unless timeout.nil?
3680
+ Utils.configure_request_security(req, security)
3681
+ http_headers&.each do |key, value|
3682
+ req.headers[key.to_s] = value
3683
+ end
3684
+
3685
+ @sdk_configuration.hooks.before_request(
3686
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3687
+ hook_ctx: hook_ctx
3688
+ ),
3689
+ request: req
3690
+ )
3691
+ end
3692
+
3693
+ rescue StandardError => e
3694
+ error = e
3695
+ ensure
3696
+ if http_response.nil? || Utils.error_status?(http_response.status)
3697
+ http_response = @sdk_configuration.hooks.after_error(
3698
+ error: error,
3699
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3700
+ hook_ctx: hook_ctx
3701
+ ),
3702
+ response: http_response
3703
+ )
3704
+ else
3705
+ http_response = @sdk_configuration.hooks.after_success(
3706
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3707
+ hook_ctx: hook_ctx
3708
+ ),
3709
+ response: http_response
3710
+ )
3711
+ end
3712
+
3713
+ if http_response.nil?
3714
+ raise error if !error.nil?
3715
+ raise "no response"
3716
+ end
3717
+ end
3718
+
3719
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
3720
+ if Utils.match_status_code(http_response.status, ["200"])
3721
+ if Utils.match_content_type(content_type, "application/json")
3722
+ @sdk_configuration.hooks.after_success(
3723
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3724
+ hook_ctx: hook_ctx
3725
+ ),
3726
+ response: http_response
3727
+ )
3728
+ response_data = http_response.env.response_body
3729
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::Export)
3730
+ result = obj
3731
+ response = Models::Operations::ExportReviewResponse.new(
3732
+ result: result,
3733
+ headers: http_response.headers
3734
+ )
3735
+
3736
+ return response
3737
+ else
3738
+ raise(
3739
+ ::NoResponse::Models::Errors::APIStatusError.new(
3740
+ status_code: http_response.status,
3741
+ body: http_response.env.response_body,
3742
+ raw_response: http_response
3743
+ ),
3744
+ "Unknown content type received"
3745
+ )
3746
+ end
3747
+ elsif Utils.match_status_code(http_response.status, ["400"])
3748
+ if Utils.match_content_type(content_type, "application/problem+json")
3749
+ @sdk_configuration.hooks.after_success(
3750
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3751
+ hook_ctx: hook_ctx
3752
+ ),
3753
+ response: http_response
3754
+ )
3755
+ response_data = http_response.env.response_body
3756
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
3757
+ raise obj
3758
+ else
3759
+ raise(
3760
+ ::NoResponse::Models::Errors::APIStatusError.new(
3761
+ status_code: http_response.status,
3762
+ body: http_response.env.response_body,
3763
+ raw_response: http_response
3764
+ ),
3765
+ "Unknown content type received"
3766
+ )
3767
+ end
3768
+ elsif Utils.match_status_code(http_response.status, ["401"])
3769
+ if Utils.match_content_type(content_type, "application/problem+json")
3770
+ @sdk_configuration.hooks.after_success(
3771
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3772
+ hook_ctx: hook_ctx
3773
+ ),
3774
+ response: http_response
3775
+ )
3776
+ response_data = http_response.env.response_body
3777
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
3778
+ raise obj
3779
+ else
3780
+ raise(
3781
+ ::NoResponse::Models::Errors::APIStatusError.new(
3782
+ status_code: http_response.status,
3783
+ body: http_response.env.response_body,
3784
+ raw_response: http_response
3785
+ ),
3786
+ "Unknown content type received"
3787
+ )
3788
+ end
3789
+ elsif Utils.match_status_code(http_response.status, ["403"])
3790
+ if Utils.match_content_type(content_type, "application/problem+json")
3791
+ @sdk_configuration.hooks.after_success(
3792
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3793
+ hook_ctx: hook_ctx
3794
+ ),
3795
+ response: http_response
3796
+ )
3797
+ response_data = http_response.env.response_body
3798
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
3799
+ raise obj
3800
+ else
3801
+ raise(
3802
+ ::NoResponse::Models::Errors::APIStatusError.new(
3803
+ status_code: http_response.status,
3804
+ body: http_response.env.response_body,
3805
+ raw_response: http_response
3806
+ ),
3807
+ "Unknown content type received"
3808
+ )
3809
+ end
3810
+ elsif Utils.match_status_code(http_response.status, ["404"])
3811
+ if Utils.match_content_type(content_type, "application/problem+json")
3812
+ @sdk_configuration.hooks.after_success(
3813
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3814
+ hook_ctx: hook_ctx
3815
+ ),
3816
+ response: http_response
3817
+ )
3818
+ response_data = http_response.env.response_body
3819
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
3820
+ raise obj
3821
+ else
3822
+ raise(
3823
+ ::NoResponse::Models::Errors::APIStatusError.new(
3824
+ status_code: http_response.status,
3825
+ body: http_response.env.response_body,
3826
+ raw_response: http_response
3827
+ ),
3828
+ "Unknown content type received"
3829
+ )
3830
+ end
3831
+ elsif Utils.match_status_code(http_response.status, ["409"])
3832
+ if Utils.match_content_type(content_type, "application/problem+json")
3833
+ @sdk_configuration.hooks.after_success(
3834
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3835
+ hook_ctx: hook_ctx
3836
+ ),
3837
+ response: http_response
3838
+ )
3839
+ response_data = http_response.env.response_body
3840
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
3841
+ raise obj
3842
+ else
3843
+ raise(
3844
+ ::NoResponse::Models::Errors::APIStatusError.new(
3845
+ status_code: http_response.status,
3846
+ body: http_response.env.response_body,
3847
+ raw_response: http_response
3848
+ ),
3849
+ "Unknown content type received"
3850
+ )
3851
+ end
3852
+ elsif Utils.match_status_code(http_response.status, ["429"])
3853
+ if Utils.match_content_type(content_type, "application/problem+json")
3854
+ @sdk_configuration.hooks.after_success(
3855
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3856
+ hook_ctx: hook_ctx
3857
+ ),
3858
+ response: http_response
3859
+ )
3860
+ response_data = http_response.env.response_body
3861
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
3862
+ raise obj
3863
+ else
3864
+ raise(
3865
+ ::NoResponse::Models::Errors::APIStatusError.new(
3866
+ status_code: http_response.status,
3867
+ body: http_response.env.response_body,
3868
+ raw_response: http_response
3869
+ ),
3870
+ "Unknown content type received"
3871
+ )
3872
+ end
3873
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
3874
+ raise(
3875
+ ::NoResponse::Models::Errors::APIStatusError.new(
3876
+ status_code: http_response.status,
3877
+ body: http_response.env.response_body,
3878
+ raw_response: http_response
3879
+ ),
3880
+ "API error occurred"
3881
+ )
3882
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
3883
+ raise(
3884
+ ::NoResponse::Models::Errors::APIStatusError.new(
3885
+ status_code: http_response.status,
3886
+ body: http_response.env.response_body,
3887
+ raw_response: http_response
3888
+ ),
3889
+ "API error occurred"
3890
+ )
3891
+ else
3892
+ raise(
3893
+ ::NoResponse::Models::Errors::APIStatusError.new(
3894
+ status_code: http_response.status,
3895
+ body: http_response.env.response_body,
3896
+ raw_response: http_response
3897
+ ),
3898
+ "Unknown status code received"
3899
+ )
3900
+
3901
+ end
3902
+ end
3903
+
3904
+ sig {
3905
+ params(
3906
+ workspace_id: ::String,
3907
+ environment: Models::Shared::KeyEnvironment,
3908
+ review_id: ::String,
3909
+ retries: T.nilable(Utils::RetryConfig),
3910
+ timeout_ms: T.nilable(Integer),
3911
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
3912
+ )
3913
+ .returns(Models::Operations::ListReviewSubjectsResponse)
3914
+ }
3915
+ def list_subjects(workspace_id:, environment:, review_id:, retries: nil, timeout_ms: nil, http_headers: nil)
3916
+ # list_subjects - List retained subjects linked to a review.
3917
+ # List retained subjects linked to this review. A link supplies investigation context and does not prove a relationship or change account risk.
3918
+ request = Models::Operations::ListReviewSubjectsRequest.new(
3919
+ workspace_id: workspace_id,
3920
+ environment: environment,
3921
+ review_id: review_id
3922
+ )
3923
+ url, params = @sdk_configuration.get_server_details
3924
+ base_url = Utils.template_url(url, params)
3925
+ url = Utils.generate_url(
3926
+ Models::Operations::ListReviewSubjectsRequest,
3927
+ base_url,
3928
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/subjects",
3929
+ request
3930
+ )
3931
+ headers = {}
3932
+ headers = T.cast(headers, T::Hash[String, String])
3933
+ headers["Accept"] = "application/json"
3934
+ headers["user-agent"] = @sdk_configuration.user_agent
3935
+ retries ||= @sdk_configuration.retry_config
3936
+ retries ||= Utils::RetryConfig.new(
3937
+ backoff: Utils::BackoffStrategy.new(
3938
+ exponent: 2.0,
3939
+ initial_interval: 500,
3940
+ max_elapsed_time: 30_000,
3941
+ max_interval: 8000
3942
+ ),
3943
+ retry_connection_errors: true,
3944
+ strategy: "backoff"
3945
+ )
3946
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
3947
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
3948
+
3949
+ security = @sdk_configuration.security_source&.call
3950
+
3951
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
3952
+ timeout ||= @sdk_configuration.timeout
3953
+
3954
+ connection = @sdk_configuration.client.dup
3955
+ connection.use(Utils::RetryMiddleware, retry_options)
3956
+
3957
+ hook_ctx = SDKHooks::HookContext.new(
3958
+ config: @sdk_configuration,
3959
+ base_url: base_url,
3960
+ oauth2_scopes: nil,
3961
+ operation_id: "listReviewSubjects",
3962
+ security_source: @sdk_configuration.security_source
3963
+ )
3964
+
3965
+ error = T.let(nil, T.nilable(StandardError))
3966
+ http_response = T.let(nil, T.nilable(Faraday::Response))
3967
+
3968
+ begin
3969
+ http_response = T.must(connection).get(url) do |req|
3970
+ req.headers.merge!(headers)
3971
+ req.options.timeout = timeout unless timeout.nil?
3972
+ Utils.configure_request_security(req, security)
3973
+ http_headers&.each do |key, value|
3974
+ req.headers[key.to_s] = value
3975
+ end
3976
+
3977
+ @sdk_configuration.hooks.before_request(
3978
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3979
+ hook_ctx: hook_ctx
3980
+ ),
3981
+ request: req
3982
+ )
3983
+ end
3984
+
3985
+ rescue StandardError => e
3986
+ error = e
3987
+ ensure
3988
+ if http_response.nil? || Utils.error_status?(http_response.status)
3989
+ http_response = @sdk_configuration.hooks.after_error(
3990
+ error: error,
3991
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3992
+ hook_ctx: hook_ctx
3993
+ ),
3994
+ response: http_response
3995
+ )
3996
+ else
3997
+ http_response = @sdk_configuration.hooks.after_success(
3998
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3999
+ hook_ctx: hook_ctx
4000
+ ),
4001
+ response: http_response
4002
+ )
4003
+ end
4004
+
4005
+ if http_response.nil?
4006
+ raise error if !error.nil?
4007
+ raise "no response"
4008
+ end
4009
+ end
4010
+
4011
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
4012
+ if Utils.match_status_code(http_response.status, ["200"])
4013
+ if Utils.match_content_type(content_type, "application/json")
4014
+ @sdk_configuration.hooks.after_success(
4015
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4016
+ hook_ctx: hook_ctx
4017
+ ),
4018
+ response: http_response
4019
+ )
4020
+ response_data = http_response.env.response_body
4021
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewSubjectList)
4022
+ result = obj
4023
+ response = Models::Operations::ListReviewSubjectsResponse.new(
4024
+ result: result,
4025
+ headers: http_response.headers
4026
+ )
4027
+
4028
+ return response
4029
+ else
4030
+ raise(
4031
+ ::NoResponse::Models::Errors::APIStatusError.new(
4032
+ status_code: http_response.status,
4033
+ body: http_response.env.response_body,
4034
+ raw_response: http_response
4035
+ ),
4036
+ "Unknown content type received"
4037
+ )
4038
+ end
4039
+ elsif Utils.match_status_code(http_response.status, ["400"])
4040
+ if Utils.match_content_type(content_type, "application/problem+json")
4041
+ @sdk_configuration.hooks.after_success(
4042
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4043
+ hook_ctx: hook_ctx
4044
+ ),
4045
+ response: http_response
4046
+ )
4047
+ response_data = http_response.env.response_body
4048
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
4049
+ raise obj
4050
+ else
4051
+ raise(
4052
+ ::NoResponse::Models::Errors::APIStatusError.new(
4053
+ status_code: http_response.status,
4054
+ body: http_response.env.response_body,
4055
+ raw_response: http_response
4056
+ ),
4057
+ "Unknown content type received"
4058
+ )
4059
+ end
4060
+ elsif Utils.match_status_code(http_response.status, ["401"])
4061
+ if Utils.match_content_type(content_type, "application/problem+json")
4062
+ @sdk_configuration.hooks.after_success(
4063
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4064
+ hook_ctx: hook_ctx
4065
+ ),
4066
+ response: http_response
4067
+ )
4068
+ response_data = http_response.env.response_body
4069
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
4070
+ raise obj
4071
+ else
4072
+ raise(
4073
+ ::NoResponse::Models::Errors::APIStatusError.new(
4074
+ status_code: http_response.status,
4075
+ body: http_response.env.response_body,
4076
+ raw_response: http_response
4077
+ ),
4078
+ "Unknown content type received"
4079
+ )
4080
+ end
4081
+ elsif Utils.match_status_code(http_response.status, ["403"])
4082
+ if Utils.match_content_type(content_type, "application/problem+json")
4083
+ @sdk_configuration.hooks.after_success(
4084
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4085
+ hook_ctx: hook_ctx
4086
+ ),
4087
+ response: http_response
4088
+ )
4089
+ response_data = http_response.env.response_body
4090
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
4091
+ raise obj
4092
+ else
4093
+ raise(
4094
+ ::NoResponse::Models::Errors::APIStatusError.new(
4095
+ status_code: http_response.status,
4096
+ body: http_response.env.response_body,
4097
+ raw_response: http_response
4098
+ ),
4099
+ "Unknown content type received"
4100
+ )
4101
+ end
4102
+ elsif Utils.match_status_code(http_response.status, ["404"])
4103
+ if Utils.match_content_type(content_type, "application/problem+json")
4104
+ @sdk_configuration.hooks.after_success(
4105
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4106
+ hook_ctx: hook_ctx
4107
+ ),
4108
+ response: http_response
4109
+ )
4110
+ response_data = http_response.env.response_body
4111
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
4112
+ raise obj
4113
+ else
4114
+ raise(
4115
+ ::NoResponse::Models::Errors::APIStatusError.new(
4116
+ status_code: http_response.status,
4117
+ body: http_response.env.response_body,
4118
+ raw_response: http_response
4119
+ ),
4120
+ "Unknown content type received"
4121
+ )
4122
+ end
4123
+ elsif Utils.match_status_code(http_response.status, ["409"])
4124
+ if Utils.match_content_type(content_type, "application/problem+json")
4125
+ @sdk_configuration.hooks.after_success(
4126
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4127
+ hook_ctx: hook_ctx
4128
+ ),
4129
+ response: http_response
4130
+ )
4131
+ response_data = http_response.env.response_body
4132
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
4133
+ raise obj
4134
+ else
4135
+ raise(
4136
+ ::NoResponse::Models::Errors::APIStatusError.new(
4137
+ status_code: http_response.status,
4138
+ body: http_response.env.response_body,
4139
+ raw_response: http_response
4140
+ ),
4141
+ "Unknown content type received"
4142
+ )
4143
+ end
4144
+ elsif Utils.match_status_code(http_response.status, ["429"])
4145
+ if Utils.match_content_type(content_type, "application/problem+json")
4146
+ @sdk_configuration.hooks.after_success(
4147
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4148
+ hook_ctx: hook_ctx
4149
+ ),
4150
+ response: http_response
4151
+ )
4152
+ response_data = http_response.env.response_body
4153
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
4154
+ raise obj
4155
+ else
4156
+ raise(
4157
+ ::NoResponse::Models::Errors::APIStatusError.new(
4158
+ status_code: http_response.status,
4159
+ body: http_response.env.response_body,
4160
+ raw_response: http_response
4161
+ ),
4162
+ "Unknown content type received"
4163
+ )
4164
+ end
4165
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
4166
+ raise(
4167
+ ::NoResponse::Models::Errors::APIStatusError.new(
4168
+ status_code: http_response.status,
4169
+ body: http_response.env.response_body,
4170
+ raw_response: http_response
4171
+ ),
4172
+ "API error occurred"
4173
+ )
4174
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
4175
+ raise(
4176
+ ::NoResponse::Models::Errors::APIStatusError.new(
4177
+ status_code: http_response.status,
4178
+ body: http_response.env.response_body,
4179
+ raw_response: http_response
4180
+ ),
4181
+ "API error occurred"
4182
+ )
4183
+ else
4184
+ raise(
4185
+ ::NoResponse::Models::Errors::APIStatusError.new(
4186
+ status_code: http_response.status,
4187
+ body: http_response.env.response_body,
4188
+ raw_response: http_response
4189
+ ),
4190
+ "Unknown status code received"
4191
+ )
4192
+
4193
+ end
4194
+ end
4195
+
4196
+ sig {
4197
+ params(
4198
+ body: Models::Shared::ReviewSubjectRequest,
4199
+ workspace_id: ::String,
4200
+ environment: Models::Shared::KeyEnvironment,
4201
+ review_id: ::String,
4202
+ timeout_ms: T.nilable(Integer),
4203
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
4204
+ )
4205
+ .returns(Models::Operations::AddReviewSubjectResponse)
4206
+ }
4207
+ def add_subject(body:, workspace_id:, environment:, review_id:, timeout_ms: nil, http_headers: nil)
4208
+ # add_subject - Link retained tenant-local evidence to an investigation.
4209
+ # Link an account, exact assessment revision or issued-key association within this environment. Supply the expected review version. A review permits 100 links. Erasure removes links to erased subjects. This action records context without creating feedback or enforcement.
4210
+ request = Models::Operations::AddReviewSubjectRequest.new(
4211
+ workspace_id: workspace_id,
4212
+ environment: environment,
4213
+ review_id: review_id,
4214
+ body: body
4215
+ )
4216
+ url, params = @sdk_configuration.get_server_details
4217
+ base_url = Utils.template_url(url, params)
4218
+ url = Utils.generate_url(
4219
+ Models::Operations::AddReviewSubjectRequest,
4220
+ base_url,
4221
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/subjects",
4222
+ request
4223
+ )
4224
+ headers = {}
4225
+ headers = T.cast(headers, T::Hash[String, String])
4226
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
4227
+ headers["content-type"] = req_content_type
4228
+ raise StandardError, "request body is required" if data.nil? && form.nil?
4229
+
4230
+ if form && !form.empty?
4231
+ body = Utils.encode_form(form)
4232
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
4233
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
4234
+ else
4235
+ body = data
4236
+ end
4237
+
4238
+ headers["Accept"] = "application/json"
4239
+ headers["user-agent"] = @sdk_configuration.user_agent
4240
+
4241
+ security = @sdk_configuration.security_source&.call
4242
+
4243
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
4244
+ timeout ||= @sdk_configuration.timeout
4245
+
4246
+ connection = @sdk_configuration.client
4247
+
4248
+ hook_ctx = SDKHooks::HookContext.new(
4249
+ config: @sdk_configuration,
4250
+ base_url: base_url,
4251
+ oauth2_scopes: nil,
4252
+ operation_id: "addReviewSubject",
4253
+ security_source: @sdk_configuration.security_source
4254
+ )
4255
+
4256
+ error = T.let(nil, T.nilable(StandardError))
4257
+ http_response = T.let(nil, T.nilable(Faraday::Response))
4258
+
4259
+ begin
4260
+ http_response = T.must(connection).post(url) do |req|
4261
+ req.body = body
4262
+ req.headers.merge!(headers)
4263
+ req.options.timeout = timeout unless timeout.nil?
4264
+ Utils.configure_request_security(req, security)
4265
+ http_headers&.each do |key, value|
4266
+ req.headers[key.to_s] = value
4267
+ end
4268
+
4269
+ @sdk_configuration.hooks.before_request(
4270
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
4271
+ hook_ctx: hook_ctx
4272
+ ),
4273
+ request: req
4274
+ )
4275
+ end
4276
+
4277
+ rescue StandardError => e
4278
+ error = e
4279
+ ensure
4280
+ if http_response.nil? || Utils.error_status?(http_response.status)
4281
+ http_response = @sdk_configuration.hooks.after_error(
4282
+ error: error,
4283
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
4284
+ hook_ctx: hook_ctx
4285
+ ),
4286
+ response: http_response
4287
+ )
4288
+ else
4289
+ http_response = @sdk_configuration.hooks.after_success(
4290
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4291
+ hook_ctx: hook_ctx
4292
+ ),
4293
+ response: http_response
4294
+ )
4295
+ end
4296
+
4297
+ if http_response.nil?
4298
+ raise error if !error.nil?
4299
+ raise "no response"
4300
+ end
4301
+ end
4302
+
4303
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
4304
+ if Utils.match_status_code(http_response.status, ["201"])
4305
+ if Utils.match_content_type(content_type, "application/json")
4306
+ @sdk_configuration.hooks.after_success(
4307
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4308
+ hook_ctx: hook_ctx
4309
+ ),
4310
+ response: http_response
4311
+ )
4312
+ response_data = http_response.env.response_body
4313
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ReviewSubjectChange)
4314
+ result = obj
4315
+ response = Models::Operations::AddReviewSubjectResponse.new(
4316
+ result: result,
4317
+ headers: http_response.headers
4318
+ )
4319
+
4320
+ return response
4321
+ else
4322
+ raise(
4323
+ ::NoResponse::Models::Errors::APIStatusError.new(
4324
+ status_code: http_response.status,
4325
+ body: http_response.env.response_body,
4326
+ raw_response: http_response
4327
+ ),
4328
+ "Unknown content type received"
4329
+ )
4330
+ end
4331
+ elsif Utils.match_status_code(http_response.status, ["400"])
4332
+ if Utils.match_content_type(content_type, "application/problem+json")
4333
+ @sdk_configuration.hooks.after_success(
4334
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4335
+ hook_ctx: hook_ctx
4336
+ ),
4337
+ response: http_response
4338
+ )
4339
+ response_data = http_response.env.response_body
4340
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
4341
+ raise obj
4342
+ else
4343
+ raise(
4344
+ ::NoResponse::Models::Errors::APIStatusError.new(
4345
+ status_code: http_response.status,
4346
+ body: http_response.env.response_body,
4347
+ raw_response: http_response
4348
+ ),
4349
+ "Unknown content type received"
4350
+ )
4351
+ end
4352
+ elsif Utils.match_status_code(http_response.status, ["401"])
4353
+ if Utils.match_content_type(content_type, "application/problem+json")
4354
+ @sdk_configuration.hooks.after_success(
4355
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4356
+ hook_ctx: hook_ctx
4357
+ ),
4358
+ response: http_response
4359
+ )
4360
+ response_data = http_response.env.response_body
4361
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
4362
+ raise obj
4363
+ else
4364
+ raise(
4365
+ ::NoResponse::Models::Errors::APIStatusError.new(
4366
+ status_code: http_response.status,
4367
+ body: http_response.env.response_body,
4368
+ raw_response: http_response
4369
+ ),
4370
+ "Unknown content type received"
4371
+ )
4372
+ end
4373
+ elsif Utils.match_status_code(http_response.status, ["403"])
4374
+ if Utils.match_content_type(content_type, "application/problem+json")
4375
+ @sdk_configuration.hooks.after_success(
4376
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4377
+ hook_ctx: hook_ctx
4378
+ ),
4379
+ response: http_response
4380
+ )
4381
+ response_data = http_response.env.response_body
4382
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
4383
+ raise obj
4384
+ else
4385
+ raise(
4386
+ ::NoResponse::Models::Errors::APIStatusError.new(
4387
+ status_code: http_response.status,
4388
+ body: http_response.env.response_body,
4389
+ raw_response: http_response
4390
+ ),
4391
+ "Unknown content type received"
4392
+ )
4393
+ end
4394
+ elsif Utils.match_status_code(http_response.status, ["404"])
4395
+ if Utils.match_content_type(content_type, "application/problem+json")
4396
+ @sdk_configuration.hooks.after_success(
4397
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4398
+ hook_ctx: hook_ctx
4399
+ ),
4400
+ response: http_response
4401
+ )
4402
+ response_data = http_response.env.response_body
4403
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
4404
+ raise obj
4405
+ else
4406
+ raise(
4407
+ ::NoResponse::Models::Errors::APIStatusError.new(
4408
+ status_code: http_response.status,
4409
+ body: http_response.env.response_body,
4410
+ raw_response: http_response
4411
+ ),
4412
+ "Unknown content type received"
4413
+ )
4414
+ end
4415
+ elsif Utils.match_status_code(http_response.status, ["409"])
4416
+ if Utils.match_content_type(content_type, "application/problem+json")
4417
+ @sdk_configuration.hooks.after_success(
4418
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4419
+ hook_ctx: hook_ctx
4420
+ ),
4421
+ response: http_response
4422
+ )
4423
+ response_data = http_response.env.response_body
4424
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
4425
+ raise obj
4426
+ else
4427
+ raise(
4428
+ ::NoResponse::Models::Errors::APIStatusError.new(
4429
+ status_code: http_response.status,
4430
+ body: http_response.env.response_body,
4431
+ raw_response: http_response
4432
+ ),
4433
+ "Unknown content type received"
4434
+ )
4435
+ end
4436
+ elsif Utils.match_status_code(http_response.status, ["429"])
4437
+ if Utils.match_content_type(content_type, "application/problem+json")
4438
+ @sdk_configuration.hooks.after_success(
4439
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4440
+ hook_ctx: hook_ctx
4441
+ ),
4442
+ response: http_response
4443
+ )
4444
+ response_data = http_response.env.response_body
4445
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
4446
+ raise obj
4447
+ else
4448
+ raise(
4449
+ ::NoResponse::Models::Errors::APIStatusError.new(
4450
+ status_code: http_response.status,
4451
+ body: http_response.env.response_body,
4452
+ raw_response: http_response
4453
+ ),
4454
+ "Unknown content type received"
4455
+ )
4456
+ end
4457
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
4458
+ raise(
4459
+ ::NoResponse::Models::Errors::APIStatusError.new(
4460
+ status_code: http_response.status,
4461
+ body: http_response.env.response_body,
4462
+ raw_response: http_response
4463
+ ),
4464
+ "API error occurred"
4465
+ )
4466
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
4467
+ raise(
4468
+ ::NoResponse::Models::Errors::APIStatusError.new(
4469
+ status_code: http_response.status,
4470
+ body: http_response.env.response_body,
4471
+ raw_response: http_response
4472
+ ),
4473
+ "API error occurred"
4474
+ )
4475
+ else
4476
+ raise(
4477
+ ::NoResponse::Models::Errors::APIStatusError.new(
4478
+ status_code: http_response.status,
4479
+ body: http_response.env.response_body,
4480
+ raw_response: http_response
4481
+ ),
4482
+ "Unknown status code received"
4483
+ )
4484
+
4485
+ end
4486
+ end
4487
+
4488
+ sig {
4489
+ params(
4490
+ body: Models::Shared::ReviewViewDeleteRequest,
4491
+ workspace_id: ::String,
4492
+ environment: Models::Shared::KeyEnvironment,
4493
+ review_id: ::String,
4494
+ subject_id: ::String,
4495
+ retries: T.nilable(Utils::RetryConfig),
4496
+ timeout_ms: T.nilable(Integer),
4497
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
4498
+ )
4499
+ .returns(Models::Operations::DeleteReviewSubjectResponse)
4500
+ }
4501
+ def delete_subject(
4502
+ body:,
4503
+ workspace_id:,
4504
+ environment:,
4505
+ review_id:,
4506
+ subject_id:,
4507
+ retries: nil,
4508
+ timeout_ms: nil,
4509
+ http_headers: nil
4510
+ )
4511
+ # delete_subject - Remove a linked subject using the current review version.
4512
+ # Remove a subject link with the expected review version. The linked account, assessment or key association remains unchanged.
4513
+ request = Models::Operations::DeleteReviewSubjectRequest.new(
4514
+ workspace_id: workspace_id,
4515
+ environment: environment,
4516
+ review_id: review_id,
4517
+ subject_id: subject_id,
4518
+ body: body
4519
+ )
4520
+ url, params = @sdk_configuration.get_server_details
4521
+ base_url = Utils.template_url(url, params)
4522
+ url = Utils.generate_url(
4523
+ Models::Operations::DeleteReviewSubjectRequest,
4524
+ base_url,
4525
+ "/v1/workspaces/{workspace_id}/reviews/{environment}/{review_id}/subjects/{subject_id}",
4526
+ request
4527
+ )
4528
+ headers = {}
4529
+ headers = T.cast(headers, T::Hash[String, String])
4530
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
4531
+ headers["content-type"] = req_content_type
4532
+ raise StandardError, "request body is required" if data.nil? && form.nil?
4533
+
4534
+ if form && !form.empty?
4535
+ body = Utils.encode_form(form)
4536
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
4537
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
4538
+ else
4539
+ body = data
4540
+ end
4541
+
4542
+ headers["Accept"] = "application/json"
4543
+ headers["user-agent"] = @sdk_configuration.user_agent
4544
+ retries ||= @sdk_configuration.retry_config
4545
+ retries ||= Utils::RetryConfig.new(
4546
+ backoff: Utils::BackoffStrategy.new(
4547
+ exponent: 2.0,
4548
+ initial_interval: 500,
4549
+ max_elapsed_time: 30_000,
4550
+ max_interval: 8000
4551
+ ),
4552
+ retry_connection_errors: true,
4553
+ strategy: "backoff"
4554
+ )
4555
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
4556
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
4557
+
4558
+ security = @sdk_configuration.security_source&.call
4559
+
4560
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
4561
+ timeout ||= @sdk_configuration.timeout
4562
+
4563
+ connection = @sdk_configuration.client.dup
4564
+ connection.use(Utils::RetryMiddleware, retry_options)
4565
+
4566
+ hook_ctx = SDKHooks::HookContext.new(
4567
+ config: @sdk_configuration,
4568
+ base_url: base_url,
4569
+ oauth2_scopes: nil,
4570
+ operation_id: "deleteReviewSubject",
4571
+ security_source: @sdk_configuration.security_source
4572
+ )
4573
+
4574
+ error = T.let(nil, T.nilable(StandardError))
4575
+ http_response = T.let(nil, T.nilable(Faraday::Response))
4576
+
4577
+ begin
4578
+ http_response = T.must(connection).delete(url) do |req|
4579
+ req.body = body
4580
+ req.headers.merge!(headers)
4581
+ req.options.timeout = timeout unless timeout.nil?
4582
+ Utils.configure_request_security(req, security)
4583
+ http_headers&.each do |key, value|
4584
+ req.headers[key.to_s] = value
4585
+ end
4586
+
4587
+ @sdk_configuration.hooks.before_request(
4588
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
4589
+ hook_ctx: hook_ctx
4590
+ ),
4591
+ request: req
4592
+ )
4593
+ end
4594
+
4595
+ rescue StandardError => e
4596
+ error = e
4597
+ ensure
4598
+ if http_response.nil? || Utils.error_status?(http_response.status)
4599
+ http_response = @sdk_configuration.hooks.after_error(
4600
+ error: error,
4601
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
4602
+ hook_ctx: hook_ctx
4603
+ ),
4604
+ response: http_response
4605
+ )
4606
+ else
4607
+ http_response = @sdk_configuration.hooks.after_success(
4608
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4609
+ hook_ctx: hook_ctx
4610
+ ),
4611
+ response: http_response
4612
+ )
4613
+ end
4614
+
4615
+ if http_response.nil?
4616
+ raise error if !error.nil?
4617
+ raise "no response"
4618
+ end
4619
+ end
4620
+
4621
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
4622
+ if Utils.match_status_code(http_response.status, ["200"])
4623
+ if Utils.match_content_type(content_type, "application/json")
4624
+ @sdk_configuration.hooks.after_success(
4625
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4626
+ hook_ctx: hook_ctx
4627
+ ),
4628
+ response: http_response
4629
+ )
4630
+ response_data = http_response.env.response_body
4631
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::Review)
4632
+ result = obj
4633
+ response = Models::Operations::DeleteReviewSubjectResponse.new(
4634
+ result: result,
4635
+ headers: http_response.headers
4636
+ )
4637
+
4638
+ return response
4639
+ else
4640
+ raise(
4641
+ ::NoResponse::Models::Errors::APIStatusError.new(
4642
+ status_code: http_response.status,
4643
+ body: http_response.env.response_body,
4644
+ raw_response: http_response
4645
+ ),
4646
+ "Unknown content type received"
4647
+ )
4648
+ end
4649
+ elsif Utils.match_status_code(http_response.status, ["400"])
4650
+ if Utils.match_content_type(content_type, "application/problem+json")
4651
+ @sdk_configuration.hooks.after_success(
4652
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4653
+ hook_ctx: hook_ctx
4654
+ ),
4655
+ response: http_response
4656
+ )
4657
+ response_data = http_response.env.response_body
4658
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
4659
+ raise obj
4660
+ else
4661
+ raise(
4662
+ ::NoResponse::Models::Errors::APIStatusError.new(
4663
+ status_code: http_response.status,
4664
+ body: http_response.env.response_body,
4665
+ raw_response: http_response
4666
+ ),
4667
+ "Unknown content type received"
4668
+ )
4669
+ end
4670
+ elsif Utils.match_status_code(http_response.status, ["401"])
4671
+ if Utils.match_content_type(content_type, "application/problem+json")
4672
+ @sdk_configuration.hooks.after_success(
4673
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4674
+ hook_ctx: hook_ctx
4675
+ ),
4676
+ response: http_response
4677
+ )
4678
+ response_data = http_response.env.response_body
4679
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
4680
+ raise obj
4681
+ else
4682
+ raise(
4683
+ ::NoResponse::Models::Errors::APIStatusError.new(
4684
+ status_code: http_response.status,
4685
+ body: http_response.env.response_body,
4686
+ raw_response: http_response
4687
+ ),
4688
+ "Unknown content type received"
4689
+ )
4690
+ end
4691
+ elsif Utils.match_status_code(http_response.status, ["403"])
4692
+ if Utils.match_content_type(content_type, "application/problem+json")
4693
+ @sdk_configuration.hooks.after_success(
4694
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4695
+ hook_ctx: hook_ctx
4696
+ ),
4697
+ response: http_response
4698
+ )
4699
+ response_data = http_response.env.response_body
4700
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
4701
+ raise obj
4702
+ else
4703
+ raise(
4704
+ ::NoResponse::Models::Errors::APIStatusError.new(
4705
+ status_code: http_response.status,
4706
+ body: http_response.env.response_body,
4707
+ raw_response: http_response
4708
+ ),
4709
+ "Unknown content type received"
4710
+ )
4711
+ end
4712
+ elsif Utils.match_status_code(http_response.status, ["404"])
4713
+ if Utils.match_content_type(content_type, "application/problem+json")
4714
+ @sdk_configuration.hooks.after_success(
4715
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4716
+ hook_ctx: hook_ctx
4717
+ ),
4718
+ response: http_response
4719
+ )
4720
+ response_data = http_response.env.response_body
4721
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
4722
+ raise obj
4723
+ else
4724
+ raise(
4725
+ ::NoResponse::Models::Errors::APIStatusError.new(
4726
+ status_code: http_response.status,
4727
+ body: http_response.env.response_body,
4728
+ raw_response: http_response
4729
+ ),
4730
+ "Unknown content type received"
4731
+ )
4732
+ end
4733
+ elsif Utils.match_status_code(http_response.status, ["409"])
4734
+ if Utils.match_content_type(content_type, "application/problem+json")
4735
+ @sdk_configuration.hooks.after_success(
4736
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4737
+ hook_ctx: hook_ctx
4738
+ ),
4739
+ response: http_response
4740
+ )
4741
+ response_data = http_response.env.response_body
4742
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
4743
+ raise obj
4744
+ else
4745
+ raise(
4746
+ ::NoResponse::Models::Errors::APIStatusError.new(
4747
+ status_code: http_response.status,
4748
+ body: http_response.env.response_body,
4749
+ raw_response: http_response
4750
+ ),
4751
+ "Unknown content type received"
4752
+ )
4753
+ end
4754
+ elsif Utils.match_status_code(http_response.status, ["429"])
4755
+ if Utils.match_content_type(content_type, "application/problem+json")
4756
+ @sdk_configuration.hooks.after_success(
4757
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
4758
+ hook_ctx: hook_ctx
4759
+ ),
4760
+ response: http_response
4761
+ )
4762
+ response_data = http_response.env.response_body
4763
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
4764
+ raise obj
4765
+ else
4766
+ raise(
4767
+ ::NoResponse::Models::Errors::APIStatusError.new(
4768
+ status_code: http_response.status,
4769
+ body: http_response.env.response_body,
4770
+ raw_response: http_response
4771
+ ),
4772
+ "Unknown content type received"
4773
+ )
4774
+ end
4775
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
4776
+ raise(
4777
+ ::NoResponse::Models::Errors::APIStatusError.new(
4778
+ status_code: http_response.status,
4779
+ body: http_response.env.response_body,
4780
+ raw_response: http_response
4781
+ ),
4782
+ "API error occurred"
4783
+ )
4784
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
4785
+ raise(
4786
+ ::NoResponse::Models::Errors::APIStatusError.new(
4787
+ status_code: http_response.status,
4788
+ body: http_response.env.response_body,
4789
+ raw_response: http_response
4790
+ ),
4791
+ "API error occurred"
4792
+ )
4793
+ else
4794
+ raise(
4795
+ ::NoResponse::Models::Errors::APIStatusError.new(
4796
+ status_code: http_response.status,
4797
+ body: http_response.env.response_body,
4798
+ raw_response: http_response
4799
+ ),
4800
+ "Unknown status code received"
4801
+ )
4802
+
4803
+ end
4804
+ end
4805
+ end
4806
+ end