cribl-control-plane 0.0.39__py3-none-any.whl → 0.5.0b3__py3-none-any.whl

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 (547) hide show
  1. cribl_control_plane/_hooks/clientcredentials.py +92 -42
  2. cribl_control_plane/_version.py +4 -4
  3. cribl_control_plane/acl.py +21 -9
  4. cribl_control_plane/auth_sdk.py +6 -3
  5. cribl_control_plane/basesdk.py +17 -1
  6. cribl_control_plane/branches.py +28 -8
  7. cribl_control_plane/collectors_sdk.py +993 -0
  8. cribl_control_plane/commits.py +119 -47
  9. cribl_control_plane/commits_files.py +44 -24
  10. cribl_control_plane/configs_versions.py +16 -10
  11. cribl_control_plane/cribl.py +495 -0
  12. cribl_control_plane/destinations.py +86 -34
  13. cribl_control_plane/destinations_pq.py +34 -14
  14. cribl_control_plane/errors/__init__.py +23 -8
  15. cribl_control_plane/errors/apierror.py +2 -0
  16. cribl_control_plane/errors/criblcontrolplaneerror.py +11 -7
  17. cribl_control_plane/errors/error.py +4 -2
  18. cribl_control_plane/errors/healthserverstatus_error.py +41 -0
  19. cribl_control_plane/errors/no_response_error.py +5 -1
  20. cribl_control_plane/errors/responsevalidationerror.py +2 -0
  21. cribl_control_plane/functions.py +367 -0
  22. cribl_control_plane/groups_configs.py +8 -3
  23. cribl_control_plane/groups_sdk.py +156 -94
  24. cribl_control_plane/health.py +34 -14
  25. cribl_control_plane/hectokens.py +44 -20
  26. cribl_control_plane/httpclient.py +0 -1
  27. cribl_control_plane/lakedatasets.py +156 -62
  28. cribl_control_plane/models/__init__.py +4736 -490
  29. cribl_control_plane/models/addhectokenrequest.py +7 -1
  30. cribl_control_plane/models/authtoken.py +5 -1
  31. cribl_control_plane/models/backupssettings_union.py +37 -0
  32. cribl_control_plane/models/{routecloneconf.py → branchinfo.py} +4 -4
  33. cribl_control_plane/models/cacheconnection.py +30 -2
  34. cribl_control_plane/models/cacheconnectionbackfillstatus.py +2 -1
  35. cribl_control_plane/models/cloudprovider.py +2 -1
  36. cribl_control_plane/models/collectorazureblob.py +130 -0
  37. cribl_control_plane/models/collectorconf.py +56 -0
  38. cribl_control_plane/models/collectorcribllake.py +27 -0
  39. cribl_control_plane/models/collectordatabase.py +92 -0
  40. cribl_control_plane/models/collectorfilesystem.py +66 -0
  41. cribl_control_plane/models/collectorgooglecloudstorage.py +131 -0
  42. cribl_control_plane/models/collectorhealthcheck.py +269 -0
  43. cribl_control_plane/models/collectorrest.py +340 -0
  44. cribl_control_plane/models/collectors3.py +239 -0
  45. cribl_control_plane/models/collectorscript.py +59 -0
  46. cribl_control_plane/models/collectorsplunk.py +253 -0
  47. cribl_control_plane/models/configgroup.py +65 -8
  48. cribl_control_plane/models/configgroupcloud.py +17 -3
  49. cribl_control_plane/models/countedbranchinfo.py +20 -0
  50. cribl_control_plane/models/countedconfiggroup.py +20 -0
  51. cribl_control_plane/models/countedcribllakedataset.py +20 -0
  52. cribl_control_plane/models/counteddistributedsummary.py +20 -0
  53. cribl_control_plane/models/countedfunctionresponse.py +20 -0
  54. cribl_control_plane/models/countedgitcommitsummary.py +20 -0
  55. cribl_control_plane/models/countedgitcountresult.py +20 -0
  56. cribl_control_plane/models/{createinputop.py → countedgitdiffresult.py} +5 -9
  57. cribl_control_plane/models/countedgitfilesresponse.py +20 -0
  58. cribl_control_plane/models/{getversioninfoop.py → countedgitinfo.py} +2 -6
  59. cribl_control_plane/models/countedgitlogresult.py +20 -0
  60. cribl_control_plane/models/countedgitrevertresult.py +20 -0
  61. cribl_control_plane/models/countedgitshowresult.py +20 -0
  62. cribl_control_plane/models/countedgitstatusresult.py +20 -0
  63. cribl_control_plane/models/{listinputop.py → countedinput.py} +2 -6
  64. cribl_control_plane/models/countedinputsplunkhec.py +20 -0
  65. cribl_control_plane/models/countedjobinfo.py +20 -0
  66. cribl_control_plane/models/countedmasterworkerentry.py +20 -0
  67. cribl_control_plane/models/countednumber.py +19 -0
  68. cribl_control_plane/models/{getversionbranchop.py → countedobject.py} +2 -6
  69. cribl_control_plane/models/{listoutputop.py → countedoutput.py} +2 -6
  70. cribl_control_plane/models/{createoutputop.py → countedoutputsamplesresponse.py} +5 -9
  71. cribl_control_plane/models/countedoutputtestresponse.py +20 -0
  72. cribl_control_plane/models/countedpackinfo.py +20 -0
  73. cribl_control_plane/models/{createpacksop.py → countedpackinstallinfo.py} +2 -6
  74. cribl_control_plane/models/{listpipelineop.py → countedpipeline.py} +2 -6
  75. cribl_control_plane/models/{listroutesop.py → countedroutes.py} +2 -6
  76. cribl_control_plane/models/countedsavedjob.py +20 -0
  77. cribl_control_plane/models/countedstring.py +19 -0
  78. cribl_control_plane/models/countedsystemsettingsconf.py +20 -0
  79. cribl_control_plane/models/countedteamaccesscontrollist.py +20 -0
  80. cribl_control_plane/models/counteduseraccesscontrollist.py +20 -0
  81. cribl_control_plane/models/createauthloginop.py +18 -0
  82. cribl_control_plane/models/createconfiggroupbyproductop.py +26 -27
  83. cribl_control_plane/models/createcribllakedatasetbylakeidop.py +1 -19
  84. cribl_control_plane/models/createinputhectokenbyidop.py +1 -19
  85. cribl_control_plane/models/createoutputtestbyidop.py +1 -20
  86. cribl_control_plane/models/createroutesappendbyidop.py +4 -22
  87. cribl_control_plane/models/createsavedjobop.py +30 -0
  88. cribl_control_plane/models/createversioncommitop.py +1 -19
  89. cribl_control_plane/models/createversionrevertop.py +3 -21
  90. cribl_control_plane/models/createversionundoop.py +1 -18
  91. cribl_control_plane/models/criblevent.py +15 -0
  92. cribl_control_plane/models/cribllakedataset.py +23 -3
  93. cribl_control_plane/models/cribllakedatasetupdate.py +95 -0
  94. cribl_control_plane/models/datasetmetadata.py +18 -2
  95. cribl_control_plane/models/deleteconfiggroupbyproductandidop.py +18 -21
  96. cribl_control_plane/models/deletecribllakedatasetbylakeidandidop.py +1 -20
  97. cribl_control_plane/models/deleteinputbyidop.py +1 -20
  98. cribl_control_plane/models/deleteoutputbyidop.py +1 -20
  99. cribl_control_plane/models/deleteoutputpqbyidop.py +1 -19
  100. cribl_control_plane/models/deletepacksbyidop.py +1 -20
  101. cribl_control_plane/models/deletepipelinebyidop.py +3 -22
  102. cribl_control_plane/models/deletesavedjobbyidop.py +42 -0
  103. cribl_control_plane/models/difffiles.py +130 -0
  104. cribl_control_plane/models/diffline.py +26 -0
  105. cribl_control_plane/models/difflinecontext.py +28 -0
  106. cribl_control_plane/models/difflinedelete.py +25 -0
  107. cribl_control_plane/models/difflineinsert.py +25 -0
  108. cribl_control_plane/models/distributedsummary.py +6 -0
  109. cribl_control_plane/models/functionaggregatemetrics.py +69 -0
  110. cribl_control_plane/models/functionaggregation.py +69 -0
  111. cribl_control_plane/models/functionautotimestamp.py +69 -0
  112. cribl_control_plane/models/functioncef.py +66 -0
  113. cribl_control_plane/models/functionchain.py +69 -0
  114. cribl_control_plane/models/functionclone.py +69 -0
  115. cribl_control_plane/models/functioncode.py +69 -0
  116. cribl_control_plane/models/functioncomment.py +69 -0
  117. cribl_control_plane/models/functionconfschemaaggregatemetrics.py +153 -0
  118. cribl_control_plane/models/functionconfschemaaggregation.py +114 -0
  119. cribl_control_plane/models/functionconfschemaautotimestamp.py +116 -0
  120. cribl_control_plane/models/functionconfschemacef.py +83 -0
  121. cribl_control_plane/models/functionconfschemachain.py +16 -0
  122. cribl_control_plane/models/functionconfschemaclone.py +16 -0
  123. cribl_control_plane/models/functionconfschemacode.py +38 -0
  124. cribl_control_plane/models/functionconfschemacomment.py +16 -0
  125. cribl_control_plane/models/functionconfschemadistinct.py +41 -0
  126. cribl_control_plane/models/functionconfschemadnslookup.py +193 -0
  127. cribl_control_plane/models/{lookupversions.py → functionconfschemadrop.py} +2 -2
  128. cribl_control_plane/models/functionconfschemadropdimensions.py +31 -0
  129. cribl_control_plane/models/functionconfschemadynamicsampling.py +67 -0
  130. cribl_control_plane/models/functionconfschemaeval.py +44 -0
  131. cribl_control_plane/models/functionconfschemaeventbreaker.py +51 -0
  132. cribl_control_plane/models/functionconfschemaeventstats.py +34 -0
  133. cribl_control_plane/models/functionconfschemaexternaldata.py +13 -0
  134. cribl_control_plane/models/functionconfschemaflatten.py +31 -0
  135. cribl_control_plane/models/functionconfschemafoldkeys.py +31 -0
  136. cribl_control_plane/models/functionconfschemagenstats.py +14 -0
  137. cribl_control_plane/models/functionconfschemageoip.py +66 -0
  138. cribl_control_plane/models/functionconfschemagrok.py +38 -0
  139. cribl_control_plane/models/functionconfschemahandlebar.py +56 -0
  140. cribl_control_plane/models/functionconfschemajoin.py +55 -0
  141. cribl_control_plane/models/functionconfschemajsonunroll.py +21 -0
  142. cribl_control_plane/models/functionconfschemalakeexport.py +44 -0
  143. cribl_control_plane/models/functionconfschemalimit.py +16 -0
  144. cribl_control_plane/models/functionconfschemalocalsearchdatatypeparser.py +17 -0
  145. cribl_control_plane/models/functionconfschemalocalsearchrulesetrunner.py +40 -0
  146. cribl_control_plane/models/functionconfschemalookup.py +92 -0
  147. cribl_control_plane/models/functionconfschemamask.py +63 -0
  148. cribl_control_plane/models/functionconfschemamvexpand.py +76 -0
  149. cribl_control_plane/models/functionconfschemamvpull.py +45 -0
  150. cribl_control_plane/models/functionconfschemanotificationpolicies.py +129 -0
  151. cribl_control_plane/models/functionconfschemanotifications.py +26 -0
  152. cribl_control_plane/models/functionconfschemanotify.py +149 -0
  153. cribl_control_plane/models/functionconfschemanumerify.py +63 -0
  154. cribl_control_plane/models/functionconfschemaotlplogs.py +24 -0
  155. cribl_control_plane/models/functionconfschemaotlpmetrics.py +61 -0
  156. cribl_control_plane/models/functionconfschemaotlptraces.py +54 -0
  157. cribl_control_plane/models/functionconfschemapack.py +24 -0
  158. cribl_control_plane/models/functionconfschemapivot.py +31 -0
  159. cribl_control_plane/models/functionconfschemapublishmetrics.py +98 -0
  160. cribl_control_plane/models/functionconfschemaredis.py +121 -0
  161. cribl_control_plane/models/functionconfschemaregexextract.py +55 -0
  162. cribl_control_plane/models/functionconfschemaregexfilter.py +38 -0
  163. cribl_control_plane/models/functionconfschemarename.py +49 -0
  164. cribl_control_plane/models/functionconfschemarollupmetrics.py +57 -0
  165. cribl_control_plane/models/functionconfschemasampling.py +32 -0
  166. cribl_control_plane/models/functionconfschemasend.py +84 -0
  167. cribl_control_plane/models/functionconfschemasensitivedatascanner.py +75 -0
  168. cribl_control_plane/models/functionconfschemaserde.py +105 -0
  169. cribl_control_plane/models/functionconfschemaserialize.py +78 -0
  170. cribl_control_plane/models/functionconfschemasidlookup.py +34 -0
  171. cribl_control_plane/models/functionconfschemasnmptrapserialize.py +92 -0
  172. cribl_control_plane/models/functionconfschemasort.py +41 -0
  173. cribl_control_plane/models/functionconfschemastore.py +75 -0
  174. cribl_control_plane/models/functionconfschemasuppress.py +57 -0
  175. cribl_control_plane/models/functionconfschematee.py +32 -0
  176. cribl_control_plane/models/functionconfschematrimtimestamp.py +16 -0
  177. cribl_control_plane/models/functionconfschemaunion.py +22 -0
  178. cribl_control_plane/models/functionconfschemaunroll.py +22 -0
  179. cribl_control_plane/models/functionconfschemawindow.py +40 -0
  180. cribl_control_plane/models/functionconfschemaxmlunroll.py +34 -0
  181. cribl_control_plane/models/functiondistinct.py +69 -0
  182. cribl_control_plane/models/functiondnslookup.py +69 -0
  183. cribl_control_plane/models/functiondrop.py +69 -0
  184. cribl_control_plane/models/functiondropdimensions.py +69 -0
  185. cribl_control_plane/models/functiondynamicsampling.py +69 -0
  186. cribl_control_plane/models/functioneval.py +69 -0
  187. cribl_control_plane/models/functioneventbreaker.py +69 -0
  188. cribl_control_plane/models/functioneventstats.py +69 -0
  189. cribl_control_plane/models/functionexternaldata.py +69 -0
  190. cribl_control_plane/models/functionflatten.py +69 -0
  191. cribl_control_plane/models/functionfoldkeys.py +69 -0
  192. cribl_control_plane/models/functiongenstats.py +69 -0
  193. cribl_control_plane/models/functiongeoip.py +69 -0
  194. cribl_control_plane/models/functiongrok.py +69 -0
  195. cribl_control_plane/models/functionhandlebar.py +69 -0
  196. cribl_control_plane/models/functionjoin.py +69 -0
  197. cribl_control_plane/models/functionjsonunroll.py +69 -0
  198. cribl_control_plane/models/functionlakeexport.py +69 -0
  199. cribl_control_plane/models/functionlimit.py +69 -0
  200. cribl_control_plane/models/functionlocalsearchdatatypeparser.py +70 -0
  201. cribl_control_plane/models/functionlocalsearchrulesetrunner.py +70 -0
  202. cribl_control_plane/models/functionlookup.py +69 -0
  203. cribl_control_plane/models/functionmask.py +69 -0
  204. cribl_control_plane/models/functionmvexpand.py +69 -0
  205. cribl_control_plane/models/functionmvpull.py +69 -0
  206. cribl_control_plane/models/functionnotificationpolicies.py +69 -0
  207. cribl_control_plane/models/functionnotifications.py +69 -0
  208. cribl_control_plane/models/functionnotify.py +69 -0
  209. cribl_control_plane/models/functionnumerify.py +69 -0
  210. cribl_control_plane/models/functionotlplogs.py +69 -0
  211. cribl_control_plane/models/functionotlpmetrics.py +69 -0
  212. cribl_control_plane/models/functionotlptraces.py +69 -0
  213. cribl_control_plane/models/functionpack.py +69 -0
  214. cribl_control_plane/models/functionpivot.py +69 -0
  215. cribl_control_plane/models/functionpublishmetrics.py +69 -0
  216. cribl_control_plane/models/functionredis.py +69 -0
  217. cribl_control_plane/models/functionregexextract.py +69 -0
  218. cribl_control_plane/models/functionregexfilter.py +69 -0
  219. cribl_control_plane/models/functionrename.py +69 -0
  220. cribl_control_plane/models/functionresponse.py +242 -0
  221. cribl_control_plane/models/functionrollupmetrics.py +69 -0
  222. cribl_control_plane/models/functionsampling.py +69 -0
  223. cribl_control_plane/models/functionsend.py +69 -0
  224. cribl_control_plane/models/functionsensitivedatascanner.py +69 -0
  225. cribl_control_plane/models/functionserde.py +69 -0
  226. cribl_control_plane/models/functionserialize.py +69 -0
  227. cribl_control_plane/models/functionsidlookup.py +69 -0
  228. cribl_control_plane/models/functionsnmptrapserialize.py +69 -0
  229. cribl_control_plane/models/functionsort.py +69 -0
  230. cribl_control_plane/models/functionstore.py +69 -0
  231. cribl_control_plane/models/functionsuppress.py +69 -0
  232. cribl_control_plane/models/functiontee.py +66 -0
  233. cribl_control_plane/models/functiontrimtimestamp.py +69 -0
  234. cribl_control_plane/models/functionunion.py +69 -0
  235. cribl_control_plane/models/functionunroll.py +69 -0
  236. cribl_control_plane/models/functionwindow.py +69 -0
  237. cribl_control_plane/models/functionxmlunroll.py +69 -0
  238. cribl_control_plane/models/getconfiggroupaclbyproductandidop.py +24 -20
  239. cribl_control_plane/models/getconfiggroupaclteamsbyproductandidop.py +24 -20
  240. cribl_control_plane/models/getconfiggroupbyproductandidop.py +14 -19
  241. cribl_control_plane/models/getconfiggroupconfigversionbyproductandidop.py +18 -20
  242. cribl_control_plane/models/getcribllakedatasetbylakeidandidop.py +1 -20
  243. cribl_control_plane/models/getcribllakedatasetbylakeidop.py +54 -14
  244. cribl_control_plane/models/getfunctionsbyidop.py +18 -0
  245. cribl_control_plane/models/getinputbyidop.py +1 -20
  246. cribl_control_plane/models/getmasterworkerentryop.py +1 -18
  247. cribl_control_plane/models/getoutputbyidop.py +1 -20
  248. cribl_control_plane/models/getoutputpqbyidop.py +1 -19
  249. cribl_control_plane/models/getoutputsamplesbyidop.py +1 -20
  250. cribl_control_plane/models/getpacksbyidop.py +1 -20
  251. cribl_control_plane/models/getpacksop.py +1 -19
  252. cribl_control_plane/models/getpipelinebyidop.py +3 -22
  253. cribl_control_plane/models/getroutesbyidop.py +3 -22
  254. cribl_control_plane/models/getsavedjobbyidop.py +33 -0
  255. cribl_control_plane/models/getsavedjobop.py +40 -0
  256. cribl_control_plane/models/getsummaryop.py +18 -20
  257. cribl_control_plane/models/getversioncountop.py +3 -21
  258. cribl_control_plane/models/getversiondiffop.py +1 -18
  259. cribl_control_plane/models/getversionfilesop.py +3 -22
  260. cribl_control_plane/models/getversionop.py +1 -19
  261. cribl_control_plane/models/getversionshowop.py +1 -18
  262. cribl_control_plane/models/getversionstatusop.py +1 -19
  263. cribl_control_plane/models/gitcountresult.py +13 -0
  264. cribl_control_plane/models/gitdiffresult.py +16 -0
  265. cribl_control_plane/models/gitinfo.py +14 -3
  266. cribl_control_plane/models/gitshowresult.py +19 -0
  267. cribl_control_plane/models/groupcreaterequest.py +175 -0
  268. cribl_control_plane/models/hbcriblinfo.py +42 -7
  269. cribl_control_plane/models/healthserverstatus.py +55 -0
  270. cribl_control_plane/models/heartbeatmetadata.py +48 -11
  271. cribl_control_plane/models/input.py +83 -78
  272. cribl_control_plane/models/inputappscope.py +126 -30
  273. cribl_control_plane/models/inputazureblob.py +62 -6
  274. cribl_control_plane/models/inputcloudflarehec.py +518 -0
  275. cribl_control_plane/models/inputcollection.py +47 -4
  276. cribl_control_plane/models/inputconfluentcloud.py +258 -32
  277. cribl_control_plane/models/inputcribl.py +47 -4
  278. cribl_control_plane/models/inputcriblhttp.py +121 -30
  279. cribl_control_plane/models/inputcribllakehttp.py +136 -30
  280. cribl_control_plane/models/inputcriblmetrics.py +48 -4
  281. cribl_control_plane/models/inputcribltcp.py +122 -24
  282. cribl_control_plane/models/inputcrowdstrike.py +92 -10
  283. cribl_control_plane/models/inputdatadogagent.py +98 -24
  284. cribl_control_plane/models/inputdatagen.py +47 -4
  285. cribl_control_plane/models/inputedgeprometheus.py +218 -58
  286. cribl_control_plane/models/inputelastic.py +167 -36
  287. cribl_control_plane/models/inputeventhub.py +209 -6
  288. cribl_control_plane/models/inputexec.py +59 -6
  289. cribl_control_plane/models/inputfile.py +78 -10
  290. cribl_control_plane/models/inputfirehose.py +97 -24
  291. cribl_control_plane/models/inputgooglepubsub.py +67 -6
  292. cribl_control_plane/models/inputgrafana.py +251 -71
  293. cribl_control_plane/models/inputhttp.py +97 -24
  294. cribl_control_plane/models/inputhttpraw.py +97 -24
  295. cribl_control_plane/models/inputjournalfiles.py +48 -4
  296. cribl_control_plane/models/inputkafka.py +252 -28
  297. cribl_control_plane/models/inputkinesis.py +130 -14
  298. cribl_control_plane/models/inputkubeevents.py +47 -4
  299. cribl_control_plane/models/inputkubelogs.py +61 -8
  300. cribl_control_plane/models/inputkubemetrics.py +61 -8
  301. cribl_control_plane/models/inputloki.py +113 -34
  302. cribl_control_plane/models/inputmetrics.py +97 -24
  303. cribl_control_plane/models/inputmodeldriventelemetry.py +107 -26
  304. cribl_control_plane/models/inputmsk.py +145 -32
  305. cribl_control_plane/models/inputnetflow.py +47 -4
  306. cribl_control_plane/models/inputoffice365mgmt.py +112 -14
  307. cribl_control_plane/models/inputoffice365msgtrace.py +114 -16
  308. cribl_control_plane/models/inputoffice365service.py +114 -16
  309. cribl_control_plane/models/inputopentelemetry.py +143 -32
  310. cribl_control_plane/models/inputprometheus.py +211 -57
  311. cribl_control_plane/models/inputprometheusrw.py +114 -27
  312. cribl_control_plane/models/inputrawudp.py +47 -4
  313. cribl_control_plane/models/inputs3.py +78 -8
  314. cribl_control_plane/models/inputs3inventory.py +92 -10
  315. cribl_control_plane/models/inputsecuritylake.py +93 -10
  316. cribl_control_plane/models/inputsnmp.py +112 -21
  317. cribl_control_plane/models/inputsplunk.py +130 -28
  318. cribl_control_plane/models/inputsplunkhec.py +119 -29
  319. cribl_control_plane/models/inputsplunksearch.py +112 -15
  320. cribl_control_plane/models/inputsqs.py +99 -16
  321. cribl_control_plane/models/inputsyslog.py +189 -47
  322. cribl_control_plane/models/inputsystemmetrics.py +202 -32
  323. cribl_control_plane/models/inputsystemstate.py +61 -8
  324. cribl_control_plane/models/inputtcp.py +122 -26
  325. cribl_control_plane/models/inputtcpjson.py +112 -26
  326. cribl_control_plane/models/inputwef.py +144 -15
  327. cribl_control_plane/models/inputwindowsmetrics.py +186 -33
  328. cribl_control_plane/models/inputwineventlogs.py +93 -11
  329. cribl_control_plane/models/inputwiz.py +173 -8
  330. cribl_control_plane/models/inputwizwebhook.py +97 -24
  331. cribl_control_plane/models/inputzscalerhec.py +119 -29
  332. cribl_control_plane/models/jobinfo.py +34 -0
  333. cribl_control_plane/models/jobstatus.py +48 -0
  334. cribl_control_plane/models/lakedatasetmetrics.py +17 -0
  335. cribl_control_plane/models/lakehouseconnectiontype.py +2 -1
  336. cribl_control_plane/models/listconfiggroupbyproductop.py +14 -19
  337. cribl_control_plane/models/listmasterworkerentryop.py +1 -19
  338. cribl_control_plane/models/logininfo.py +3 -3
  339. cribl_control_plane/models/masterworkerentry.py +20 -13
  340. cribl_control_plane/models/nodeactiveupgradestatus.py +2 -1
  341. cribl_control_plane/models/nodefailedupgradestatus.py +2 -1
  342. cribl_control_plane/models/nodeprovidedinfo.py +55 -11
  343. cribl_control_plane/models/nodeskippedupgradestatus.py +2 -1
  344. cribl_control_plane/models/nodeupgradestate.py +2 -1
  345. cribl_control_plane/models/nodeupgradestatus.py +51 -5
  346. cribl_control_plane/models/outpostnodeinfo.py +16 -0
  347. cribl_control_plane/models/output.py +111 -91
  348. cribl_control_plane/models/outputazureblob.py +171 -18
  349. cribl_control_plane/models/outputazuredataexplorer.py +514 -90
  350. cribl_control_plane/models/outputazureeventhub.py +315 -31
  351. cribl_control_plane/models/outputazurelogs.py +145 -26
  352. cribl_control_plane/models/outputchronicle.py +532 -0
  353. cribl_control_plane/models/outputclickhouse.py +236 -34
  354. cribl_control_plane/models/outputcloudflarer2.py +632 -0
  355. cribl_control_plane/models/outputcloudwatch.py +129 -23
  356. cribl_control_plane/models/outputconfluentcloud.py +384 -57
  357. cribl_control_plane/models/outputcriblhttp.py +205 -31
  358. cribl_control_plane/models/outputcribllake.py +156 -16
  359. cribl_control_plane/models/outputcriblsearchengine.py +655 -0
  360. cribl_control_plane/models/outputcribltcp.py +194 -29
  361. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +172 -28
  362. cribl_control_plane/models/outputdatabricks.py +501 -0
  363. cribl_control_plane/models/outputdatadog.py +199 -31
  364. cribl_control_plane/models/outputdataset.py +181 -29
  365. cribl_control_plane/models/outputdiskspool.py +17 -2
  366. cribl_control_plane/models/outputdls3.py +233 -24
  367. cribl_control_plane/models/outputdynatracehttp.py +208 -34
  368. cribl_control_plane/models/outputdynatraceotlp.py +210 -36
  369. cribl_control_plane/models/outputelastic.py +199 -30
  370. cribl_control_plane/models/outputelasticcloud.py +171 -26
  371. cribl_control_plane/models/outputexabeam.py +96 -10
  372. cribl_control_plane/models/outputfilesystem.py +139 -14
  373. cribl_control_plane/models/outputgooglechronicle.py +216 -35
  374. cribl_control_plane/models/outputgooglecloudlogging.py +174 -31
  375. cribl_control_plane/models/outputgooglecloudstorage.py +215 -24
  376. cribl_control_plane/models/outputgooglepubsub.py +131 -23
  377. cribl_control_plane/models/outputgrafanacloud.py +376 -74
  378. cribl_control_plane/models/outputgraphite.py +128 -25
  379. cribl_control_plane/models/outputhoneycomb.py +145 -26
  380. cribl_control_plane/models/outputhumiohec.py +162 -28
  381. cribl_control_plane/models/outputinfluxdb.py +165 -28
  382. cribl_control_plane/models/outputkafka.py +375 -52
  383. cribl_control_plane/models/outputkinesis.py +165 -27
  384. cribl_control_plane/models/outputloki.py +164 -34
  385. cribl_control_plane/models/outputmicrosoftfabric.py +540 -0
  386. cribl_control_plane/models/outputminio.py +225 -25
  387. cribl_control_plane/models/outputmsk.py +267 -54
  388. cribl_control_plane/models/outputnetflow.py +16 -2
  389. cribl_control_plane/models/outputnewrelic.py +171 -29
  390. cribl_control_plane/models/outputnewrelicevents.py +163 -28
  391. cribl_control_plane/models/outputopentelemetry.py +240 -40
  392. cribl_control_plane/models/outputprometheus.py +145 -26
  393. cribl_control_plane/models/outputring.py +49 -8
  394. cribl_control_plane/models/outputs3.py +233 -26
  395. cribl_control_plane/models/outputsecuritylake.py +179 -18
  396. cribl_control_plane/models/outputsentinel.py +172 -29
  397. cribl_control_plane/models/outputsentineloneaisiem.py +178 -32
  398. cribl_control_plane/models/outputservicenow.py +223 -38
  399. cribl_control_plane/models/outputsignalfx.py +145 -26
  400. cribl_control_plane/models/outputsns.py +143 -25
  401. cribl_control_plane/models/outputsplunk.py +206 -36
  402. cribl_control_plane/models/outputsplunkhec.py +238 -26
  403. cribl_control_plane/models/outputsplunklb.py +262 -42
  404. cribl_control_plane/models/outputsqs.py +163 -33
  405. cribl_control_plane/models/outputstatsd.py +127 -25
  406. cribl_control_plane/models/outputstatsdext.py +128 -25
  407. cribl_control_plane/models/outputsumologic.py +146 -25
  408. cribl_control_plane/models/outputsyslog.py +318 -46
  409. cribl_control_plane/models/outputtcpjson.py +186 -32
  410. cribl_control_plane/models/outputwavefront.py +145 -26
  411. cribl_control_plane/models/outputwebhook.py +211 -33
  412. cribl_control_plane/models/outputxsiam.py +143 -26
  413. cribl_control_plane/models/packinfo.py +8 -5
  414. cribl_control_plane/models/packinstallinfo.py +11 -8
  415. cribl_control_plane/models/piisettings_union.py +31 -0
  416. cribl_control_plane/models/pipeline.py +52 -4
  417. cribl_control_plane/models/pipelinefunctionaggregatemetrics.py +195 -0
  418. cribl_control_plane/models/pipelinefunctionaggregation.py +159 -0
  419. cribl_control_plane/models/pipelinefunctionautotimestamp.py +56 -0
  420. cribl_control_plane/models/pipelinefunctioncef.py +96 -0
  421. cribl_control_plane/models/pipelinefunctionchain.py +62 -0
  422. cribl_control_plane/models/pipelinefunctionclone.py +56 -0
  423. cribl_control_plane/models/pipelinefunctioncode.py +56 -0
  424. cribl_control_plane/models/pipelinefunctioncomment.py +56 -0
  425. cribl_control_plane/models/pipelinefunctionconf.py +343 -46
  426. cribl_control_plane/models/pipelinefunctionconf_input.py +353 -0
  427. cribl_control_plane/models/pipelinefunctiondistinct.py +86 -0
  428. cribl_control_plane/models/pipelinefunctiondnslookup.py +56 -0
  429. cribl_control_plane/models/pipelinefunctiondrop.py +56 -0
  430. cribl_control_plane/models/pipelinefunctiondropdimensions.py +74 -0
  431. cribl_control_plane/models/pipelinefunctiondynamicsampling.py +111 -0
  432. cribl_control_plane/models/pipelinefunctioneval.py +56 -0
  433. cribl_control_plane/models/pipelinefunctioneventbreaker.py +95 -0
  434. cribl_control_plane/models/pipelinefunctioneventstats.py +79 -0
  435. cribl_control_plane/models/pipelinefunctionexternaldata.py +56 -0
  436. cribl_control_plane/models/pipelinefunctionflatten.py +56 -0
  437. cribl_control_plane/models/pipelinefunctionfoldkeys.py +56 -0
  438. cribl_control_plane/models/pipelinefunctiongenstats.py +56 -0
  439. cribl_control_plane/models/pipelinefunctiongeoip.py +109 -0
  440. cribl_control_plane/models/pipelinefunctiongrok.py +83 -0
  441. cribl_control_plane/models/pipelinefunctionhandlebar.py +99 -0
  442. cribl_control_plane/models/pipelinefunctionjoin.py +100 -0
  443. cribl_control_plane/models/pipelinefunctionjsonunroll.py +67 -0
  444. cribl_control_plane/models/pipelinefunctionlakeexport.py +89 -0
  445. cribl_control_plane/models/pipelinefunctionlimit.py +56 -0
  446. cribl_control_plane/models/pipelinefunctionlocalsearchdatatypeparser.py +62 -0
  447. cribl_control_plane/models/pipelinefunctionlocalsearchrulesetrunner.py +56 -0
  448. cribl_control_plane/models/pipelinefunctionlookup.py +136 -0
  449. cribl_control_plane/models/pipelinefunctionmask.py +108 -0
  450. cribl_control_plane/models/pipelinefunctionmvexpand.py +116 -0
  451. cribl_control_plane/models/pipelinefunctionmvpull.py +86 -0
  452. cribl_control_plane/models/pipelinefunctionnotificationpolicies.py +56 -0
  453. cribl_control_plane/models/pipelinefunctionnotifications.py +72 -0
  454. cribl_control_plane/models/pipelinefunctionnotify.py +189 -0
  455. cribl_control_plane/models/pipelinefunctionnumerify.py +56 -0
  456. cribl_control_plane/models/pipelinefunctionotlplogs.py +56 -0
  457. cribl_control_plane/models/pipelinefunctionotlpmetrics.py +56 -0
  458. cribl_control_plane/models/pipelinefunctionotlptraces.py +56 -0
  459. cribl_control_plane/models/pipelinefunctionpack.py +67 -0
  460. cribl_control_plane/models/pipelinefunctionpivot.py +72 -0
  461. cribl_control_plane/models/pipelinefunctionpublishmetrics.py +56 -0
  462. cribl_control_plane/models/pipelinefunctionredis.py +165 -0
  463. cribl_control_plane/models/pipelinefunctionregexextract.py +100 -0
  464. cribl_control_plane/models/pipelinefunctionregexfilter.py +56 -0
  465. cribl_control_plane/models/pipelinefunctionrename.py +56 -0
  466. cribl_control_plane/models/pipelinefunctionrollupmetrics.py +56 -0
  467. cribl_control_plane/models/pipelinefunctionsampling.py +56 -0
  468. cribl_control_plane/models/pipelinefunctionsend.py +128 -0
  469. cribl_control_plane/models/pipelinefunctionsensitivedatascanner.py +120 -0
  470. cribl_control_plane/models/pipelinefunctionserde.py +149 -0
  471. cribl_control_plane/models/pipelinefunctionserialize.py +122 -0
  472. cribl_control_plane/models/pipelinefunctionsidlookup.py +56 -0
  473. cribl_control_plane/models/pipelinefunctionsnmptrapserialize.py +56 -0
  474. cribl_control_plane/models/pipelinefunctionsort.py +84 -0
  475. cribl_control_plane/models/pipelinefunctionstore.py +120 -0
  476. cribl_control_plane/models/pipelinefunctionsuppress.py +102 -0
  477. cribl_control_plane/models/pipelinefunctiontee.py +77 -0
  478. cribl_control_plane/models/pipelinefunctiontrimtimestamp.py +56 -0
  479. cribl_control_plane/models/pipelinefunctionunion.py +67 -0
  480. cribl_control_plane/models/pipelinefunctionunroll.py +67 -0
  481. cribl_control_plane/models/pipelinefunctionwindow.py +83 -0
  482. cribl_control_plane/models/pipelinefunctionxmlunroll.py +79 -0
  483. cribl_control_plane/models/productscore.py +2 -1
  484. cribl_control_plane/models/rbacresource.py +2 -1
  485. cribl_control_plane/models/resourcepolicy.py +15 -2
  486. cribl_control_plane/models/rollbacksettings_union.py +44 -0
  487. cribl_control_plane/models/routeconf.py +3 -4
  488. cribl_control_plane/models/runnablejob.py +27 -0
  489. cribl_control_plane/models/runnablejobcollection.py +629 -0
  490. cribl_control_plane/models/runnablejobexecutor.py +360 -0
  491. cribl_control_plane/models/runnablejobscheduledsearch.py +279 -0
  492. cribl_control_plane/models/savedjob.py +26 -0
  493. cribl_control_plane/models/savedjobcollection.py +411 -0
  494. cribl_control_plane/models/savedjobexecutor.py +301 -0
  495. cribl_control_plane/models/savedjobscheduledsearch.py +278 -0
  496. cribl_control_plane/models/snisettings_union.py +31 -0
  497. cribl_control_plane/models/systemsettingsconf.py +291 -0
  498. cribl_control_plane/models/tlssettings_union.py +43 -0
  499. cribl_control_plane/models/updateconfiggroupbyproductandidop.py +19 -20
  500. cribl_control_plane/models/updateconfiggroupdeploybyproductandidop.py +19 -21
  501. cribl_control_plane/models/updatecribllakedatasetbylakeidandidop.py +10 -25
  502. cribl_control_plane/models/updatehectokenrequest.py +7 -1
  503. cribl_control_plane/models/updateinputbyidop.py +1 -19
  504. cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +1 -19
  505. cribl_control_plane/models/updateoutputbyidop.py +1 -19
  506. cribl_control_plane/models/updatepacksbyidop.py +1 -20
  507. cribl_control_plane/models/updatepacksop.py +25 -0
  508. cribl_control_plane/models/updatepipelinebyidop.py +9 -26
  509. cribl_control_plane/models/updateroutesbyidop.py +3 -21
  510. cribl_control_plane/models/updatesavedjobbyidop.py +42 -0
  511. cribl_control_plane/models/upgradegroupsettings_union.py +43 -0
  512. cribl_control_plane/models/upgradepackageurls.py +20 -0
  513. cribl_control_plane/models/upgradesettings.py +38 -0
  514. cribl_control_plane/models/uploadpackresponse.py +13 -0
  515. cribl_control_plane/models/workertypes.py +2 -1
  516. cribl_control_plane/nodes.py +37 -23
  517. cribl_control_plane/packs.py +292 -37
  518. cribl_control_plane/pipelines.py +114 -64
  519. cribl_control_plane/routes_sdk.py +86 -50
  520. cribl_control_plane/samples.py +32 -16
  521. cribl_control_plane/sdk.py +30 -6
  522. cribl_control_plane/settings.py +20 -0
  523. cribl_control_plane/sources.py +85 -33
  524. cribl_control_plane/statuses.py +16 -6
  525. cribl_control_plane/summaries.py +16 -6
  526. cribl_control_plane/system_sdk.py +20 -0
  527. cribl_control_plane/teams.py +16 -6
  528. cribl_control_plane/tokens.py +49 -21
  529. cribl_control_plane/utils/__init__.py +15 -3
  530. cribl_control_plane/utils/annotations.py +32 -8
  531. cribl_control_plane/utils/eventstreaming.py +10 -0
  532. cribl_control_plane/utils/forms.py +21 -10
  533. cribl_control_plane/utils/queryparams.py +14 -2
  534. cribl_control_plane/utils/retries.py +69 -5
  535. cribl_control_plane/utils/unmarshal_json_response.py +15 -1
  536. cribl_control_plane/versions.py +11 -6
  537. cribl_control_plane/versions_configs.py +16 -6
  538. {cribl_control_plane-0.0.39.dist-info → cribl_control_plane-0.5.0b3.dist-info}/METADATA +106 -42
  539. cribl_control_plane-0.5.0b3.dist-info/RECORD +591 -0
  540. {cribl_control_plane-0.0.39.dist-info → cribl_control_plane-0.5.0b3.dist-info}/WHEEL +1 -1
  541. cribl_control_plane-0.5.0b3.dist-info/licenses/LICENSE +201 -0
  542. cribl_control_plane/errors/healthstatus_error.py +0 -32
  543. cribl_control_plane/models/appmode.py +0 -13
  544. cribl_control_plane/models/createpipelineop.py +0 -24
  545. cribl_control_plane/models/createversionpushop.py +0 -23
  546. cribl_control_plane/models/healthstatus.py +0 -33
  547. cribl_control_plane-0.0.39.dist-info/RECORD +0 -315
@@ -21,6 +21,7 @@ class Credentials:
21
21
  client_id: str
22
22
  client_secret: str
23
23
  token_url: str
24
+ scopes: Optional[List[str]]
24
25
  additional_properties: Dict[str, str]
25
26
 
26
27
  def __init__(
@@ -28,25 +29,27 @@ class Credentials:
28
29
  client_id: str,
29
30
  client_secret: str,
30
31
  token_url: str,
32
+ scopes: Optional[List[str]],
31
33
  additional_properties: Optional[Dict[str, str]] = None,
32
34
  ):
33
35
  self.client_id = client_id
34
36
  self.client_secret = client_secret
35
37
  self.token_url = token_url
38
+ self.scopes = scopes
36
39
  self.additional_properties = additional_properties or {}
37
40
 
38
41
 
39
42
  class Session:
40
43
  credentials: Credentials
41
44
  token: str
42
- scopes: Optional[List[str]] = None
45
+ scopes: List[str]
43
46
  expires_at: Optional[int] = None
44
47
 
45
48
  def __init__(
46
49
  self,
47
50
  credentials: Credentials,
48
51
  token: str,
49
- scopes: Optional[List[str]] = None,
52
+ scopes: List[str],
50
53
  expires_at: Optional[int] = None,
51
54
  ):
52
55
  self.credentials = credentials
@@ -57,7 +60,7 @@ class Session:
57
60
 
58
61
  class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
59
62
  client: HttpClient
60
- sessions: Dict[str, Session] = {}
63
+ sessions: Dict[str, Dict[str, Session]] = {}
61
64
 
62
65
  def sdk_init(self, config: SDKConfiguration) -> SDKConfiguration:
63
66
  if config.client is None:
@@ -69,8 +72,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
69
72
  def before_request(
70
73
  self, hook_ctx: BeforeRequestContext, request: httpx.Request
71
74
  ) -> httpx.Request:
72
- if hook_ctx.oauth2_scopes is None:
73
- # OAuth2 not in use
75
+ if self.is_hook_disabled(hook_ctx):
74
76
  return request
75
77
 
76
78
  credentials = self.get_credentials(hook_ctx)
@@ -81,22 +83,24 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
81
83
  credentials.client_id, credentials.client_secret
82
84
  )
83
85
 
84
- if (
85
- session_key not in self.sessions
86
- or not self.has_required_scopes(
87
- self.sessions[session_key].scopes, hook_ctx.oauth2_scopes
88
- )
89
- or self.has_token_expired(self.sessions[session_key].expires_at)
90
- ):
91
- sess = self.do_token_request(
86
+ scopes = self.get_required_scopes(credentials, hook_ctx)
87
+ session = self.get_existing_session(session_key, scopes)
88
+
89
+ if session is None:
90
+ # Create new session
91
+ session = self.do_token_request(
92
92
  hook_ctx,
93
93
  credentials,
94
- self.get_scopes(hook_ctx.oauth2_scopes, self.sessions.get(session_key)),
94
+ scopes,
95
95
  )
96
96
 
97
- self.sessions[session_key] = sess
97
+ if session_key not in self.sessions:
98
+ self.sessions[session_key] = {}
99
+
100
+ scope_key = self.get_scope_key(scopes)
101
+ self.sessions[session_key][scope_key] = session
98
102
 
99
- request.headers["Authorization"] = f"Bearer {self.sessions[session_key].token}"
103
+ request.headers["Authorization"] = f"Bearer {session.token}"
100
104
 
101
105
  return request
102
106
 
@@ -106,8 +110,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
106
110
  response: Optional[httpx.Response],
107
111
  error: Optional[Exception],
108
112
  ) -> Union[Tuple[Optional[httpx.Response], Optional[Exception]], Exception]:
109
- if hook_ctx.oauth2_scopes is None:
110
- # OAuth2 not in use
113
+ if self.is_hook_disabled(hook_ctx):
111
114
  return (response, error)
112
115
 
113
116
  # We don't want to refresh the token if the error is not related to the token
@@ -122,12 +125,15 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
122
125
  session_key = self.get_session_key(
123
126
  credentials.client_id, credentials.client_secret
124
127
  )
125
-
126
- if session_key in self.sessions:
127
- del self.sessions[session_key]
128
+ scopes = self.get_required_scopes(credentials, hook_ctx)
129
+ scope_key = self.get_scope_key(scopes)
130
+ self.remove_session(session_key, scope_key)
128
131
 
129
132
  return (response, error)
130
133
 
134
+ def is_hook_disabled(self, hook_ctx: HookContext) -> bool:
135
+ return hook_ctx.oauth2_scopes is None
136
+
131
137
  def get_credentials(self, hook_ctx: HookContext) -> Optional[Credentials]:
132
138
  source = hook_ctx.security_source
133
139
 
@@ -145,21 +151,19 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
145
151
  # Extract additional properties from security object
146
152
  additional_properties = {}
147
153
  for key, value in dict(security.client_oauth).items():
148
- if key not in ["client_id", "client_secret", "token_url"]:
154
+ if key not in ["client_id", "client_secret", "token_url", "scopes"]:
149
155
  additional_properties[key] = value
150
156
 
151
157
  return Credentials(
152
158
  client_id=security.client_oauth.client_id,
153
159
  client_secret=security.client_oauth.client_secret,
154
160
  token_url=security.client_oauth.token_url,
161
+ scopes=None,
155
162
  additional_properties=additional_properties,
156
163
  )
157
164
 
158
165
  def do_token_request(
159
- self,
160
- hook_ctx: HookContext,
161
- credentials: Credentials,
162
- scopes: Optional[List[str]],
166
+ self, hook_ctx: HookContext, credentials: Credentials, scopes: List[str]
163
167
  ) -> Session:
164
168
  payload = {
165
169
  "grant_type": "client_credentials",
@@ -167,7 +171,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
167
171
  "client_secret": credentials.client_secret,
168
172
  }
169
173
 
170
- if scopes is not None and len(scopes) > 0:
174
+ if len(scopes) > 0:
171
175
  payload["scope"] = " ".join(scopes)
172
176
 
173
177
  # Add additional properties to payload
@@ -188,7 +192,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
188
192
 
189
193
  response_data = response.json()
190
194
 
191
- if response_data.get("token_type") != "Bearer":
195
+ if response_data.get("token_type", "").lower() != "bearer":
192
196
  raise Exception("Unexpected token type from token endpoint")
193
197
 
194
198
  expires_at = None
@@ -203,24 +207,70 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
203
207
  )
204
208
 
205
209
  def get_session_key(self, client_id: str, client_secret: str) -> str:
210
+ """Generate a consistent session key for the given client ID and secret."""
206
211
  return hashlib.md5(f"{client_id}:{client_secret}".encode()).hexdigest()
207
212
 
213
+ def get_required_scopes(
214
+ self, credentials: Credentials, hook_ctx: HookContext
215
+ ) -> List[str]:
216
+ """Return the list of scopes that need to be requested."""
217
+ if credentials.scopes is not None:
218
+ return credentials.scopes
219
+ return hook_ctx.oauth2_scopes or []
220
+
221
+ def get_scope_key(self, scopes: List[str]) -> str:
222
+ """Generate a consistent scope key for the given scopes."""
223
+ if not scopes:
224
+ return ""
225
+
226
+ sorted_scopes = sorted(scopes)
227
+ return "&".join(sorted_scopes)
228
+
229
+ def remove_session(self, client_key: str, scope_key: str) -> None:
230
+ """Remove a session and clean up empty client session maps."""
231
+ if client_key in self.sessions and scope_key in self.sessions[client_key]:
232
+ del self.sessions[client_key][scope_key]
233
+
234
+ # Clean up empty client sessions
235
+ if not self.sessions[client_key]:
236
+ del self.sessions[client_key]
237
+
238
+ def get_existing_session(
239
+ self, client_key: str, required_scopes: List[str]
240
+ ) -> Optional[Session]:
241
+ """Find the best session for the required scopes."""
242
+ if client_key not in self.sessions:
243
+ return None
244
+
245
+ client_sessions = self.sessions[client_key]
246
+ scope_key = self.get_scope_key(required_scopes)
247
+
248
+ if scope_key in client_sessions:
249
+ exact_match = client_sessions[scope_key]
250
+ if self.has_token_expired(exact_match.expires_at):
251
+ self.remove_session(client_key, scope_key)
252
+ else:
253
+ return exact_match
254
+
255
+ # If no exact match was found, look for a superset match
256
+ for key, session in client_sessions.items():
257
+ if self.has_token_expired(session.expires_at):
258
+ self.remove_session(client_key, key)
259
+ elif self.has_required_scopes(session.scopes, required_scopes):
260
+ return session
261
+
262
+ return None
263
+
208
264
  def has_required_scopes(
209
- self, scopes: Optional[List[str]], required_scopes: List[str]
265
+ self, scopes: List[str], required_scopes: List[str]
210
266
  ) -> bool:
211
- if scopes is None:
212
- return False
213
-
267
+ """Check if all required scopes are present in the given scopes."""
214
268
  return all(scope in scopes for scope in required_scopes)
215
269
 
216
- def get_scopes(
217
- self, required_scopes: List[str], sess: Optional[Session]
218
- ) -> List[str]:
219
- scopes = required_scopes.copy()
220
- if sess is not None and sess.scopes is not None:
221
- scopes.extend(sess.scopes)
222
- scopes = list(set(scopes))
223
- return scopes
224
-
225
270
  def has_token_expired(self, expires_at: Optional[int]) -> bool:
226
- return expires_at is None or time.time() + 60 >= expires_at
271
+ """
272
+ Check if the token has expired.
273
+ If no expires_in field was returned by the authorization server, the token is considered to never expire.
274
+ A 60-second buffer is applied to refresh tokens before they actually expire.
275
+ """
276
+ return expires_at is not None and time.time() + 60 >= expires_at
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "cribl-control-plane"
6
- __version__: str = "0.0.39"
7
- __openapi_doc_version__: str = "4.14.0-alpha.1756720086962-ed6aba5c"
8
- __gen_version__: str = "2.686.7"
9
- __user_agent__: str = "speakeasy-sdk/python 0.0.39 2.686.7 4.14.0-alpha.1756720086962-ed6aba5c cribl-control-plane"
6
+ __version__: str = "0.5.0b3"
7
+ __openapi_doc_version__: str = "4.16.0-alpha.1766093766014-6100b10e"
8
+ __gen_version__: str = "2.778.0"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.5.0b3 2.778.0 4.16.0-alpha.1766093766014-6100b10e cribl-control-plane"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -14,13 +14,15 @@ from typing import Any, Mapping, Optional
14
14
  class ACL(BaseSDK):
15
15
  teams: Teams
16
16
 
17
- def __init__(self, sdk_config: SDKConfiguration) -> None:
18
- BaseSDK.__init__(self, sdk_config)
17
+ def __init__(
18
+ self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
19
+ ) -> None:
20
+ BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
19
21
  self.sdk_configuration = sdk_config
20
22
  self._init_sdks()
21
23
 
22
24
  def _init_sdks(self):
23
- self.teams = Teams(self.sdk_configuration)
25
+ self.teams = Teams(self.sdk_configuration, parent_ref=self.parent_ref)
24
26
 
25
27
  def get(
26
28
  self,
@@ -32,7 +34,7 @@ class ACL(BaseSDK):
32
34
  server_url: Optional[str] = None,
33
35
  timeout_ms: Optional[int] = None,
34
36
  http_headers: Optional[Mapping[str, str]] = None,
35
- ) -> models.GetConfigGroupACLByProductAndIDResponse:
37
+ ) -> models.CountedUserAccessControlList:
36
38
  r"""Get the Access Control List for a Worker Group or Edge Fleet
37
39
 
38
40
  Get the Access Control List (ACL) for the specified Worker Group or Edge Fleet.
@@ -74,16 +76,21 @@ class ACL(BaseSDK):
74
76
  accept_header_value="application/json",
75
77
  http_headers=http_headers,
76
78
  security=self.sdk_configuration.security,
79
+ allow_empty_value=None,
77
80
  timeout_ms=timeout_ms,
78
81
  )
79
82
 
80
83
  if retries == UNSET:
81
84
  if self.sdk_configuration.retry_config is not UNSET:
82
85
  retries = self.sdk_configuration.retry_config
86
+ else:
87
+ retries = utils.RetryConfig(
88
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
89
+ )
83
90
 
84
91
  retry_config = None
85
92
  if isinstance(retries, utils.RetryConfig):
86
- retry_config = (retries, ["429", "500", "502", "503", "504"])
93
+ retry_config = (retries, ["429"])
87
94
 
88
95
  http_res = self.do_request(
89
96
  hook_ctx=HookContext(
@@ -103,7 +110,7 @@ class ACL(BaseSDK):
103
110
  response_data: Any = None
104
111
  if utils.match_response(http_res, "200", "application/json"):
105
112
  return unmarshal_json_response(
106
- models.GetConfigGroupACLByProductAndIDResponse, http_res
113
+ models.CountedUserAccessControlList, http_res
107
114
  )
108
115
  if utils.match_response(http_res, "500", "application/json"):
109
116
  response_data = unmarshal_json_response(errors.ErrorData, http_res)
@@ -127,7 +134,7 @@ class ACL(BaseSDK):
127
134
  server_url: Optional[str] = None,
128
135
  timeout_ms: Optional[int] = None,
129
136
  http_headers: Optional[Mapping[str, str]] = None,
130
- ) -> models.GetConfigGroupACLByProductAndIDResponse:
137
+ ) -> models.CountedUserAccessControlList:
131
138
  r"""Get the Access Control List for a Worker Group or Edge Fleet
132
139
 
133
140
  Get the Access Control List (ACL) for the specified Worker Group or Edge Fleet.
@@ -169,16 +176,21 @@ class ACL(BaseSDK):
169
176
  accept_header_value="application/json",
170
177
  http_headers=http_headers,
171
178
  security=self.sdk_configuration.security,
179
+ allow_empty_value=None,
172
180
  timeout_ms=timeout_ms,
173
181
  )
174
182
 
175
183
  if retries == UNSET:
176
184
  if self.sdk_configuration.retry_config is not UNSET:
177
185
  retries = self.sdk_configuration.retry_config
186
+ else:
187
+ retries = utils.RetryConfig(
188
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
189
+ )
178
190
 
179
191
  retry_config = None
180
192
  if isinstance(retries, utils.RetryConfig):
181
- retry_config = (retries, ["429", "500", "502", "503", "504"])
193
+ retry_config = (retries, ["429"])
182
194
 
183
195
  http_res = await self.do_request_async(
184
196
  hook_ctx=HookContext(
@@ -198,7 +210,7 @@ class ACL(BaseSDK):
198
210
  response_data: Any = None
199
211
  if utils.match_response(http_res, "200", "application/json"):
200
212
  return unmarshal_json_response(
201
- models.GetConfigGroupACLByProductAndIDResponse, http_res
213
+ models.CountedUserAccessControlList, http_res
202
214
  )
203
215
  if utils.match_response(http_res, "500", "application/json"):
204
216
  response_data = unmarshal_json_response(errors.ErrorData, http_res)
@@ -3,15 +3,18 @@
3
3
  from .basesdk import BaseSDK
4
4
  from .sdkconfiguration import SDKConfiguration
5
5
  from cribl_control_plane.tokens import Tokens
6
+ from typing import Optional
6
7
 
7
8
 
8
9
  class AuthSDK(BaseSDK):
9
10
  tokens: Tokens
10
11
 
11
- def __init__(self, sdk_config: SDKConfiguration) -> None:
12
- BaseSDK.__init__(self, sdk_config)
12
+ def __init__(
13
+ self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
14
+ ) -> None:
15
+ BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
13
16
  self.sdk_configuration = sdk_config
14
17
  self._init_sdks()
15
18
 
16
19
  def _init_sdks(self):
17
- self.tokens = Tokens(self.sdk_configuration)
20
+ self.tokens = Tokens(self.sdk_configuration, parent_ref=self.parent_ref)
@@ -19,9 +19,19 @@ from urllib.parse import parse_qs, urlparse
19
19
 
20
20
  class BaseSDK:
21
21
  sdk_configuration: SDKConfiguration
22
+ parent_ref: Optional[object] = None
23
+ """
24
+ Reference to the root SDK instance, if any. This will prevent it from
25
+ being garbage collected while there are active streams.
26
+ """
22
27
 
23
- def __init__(self, sdk_config: SDKConfiguration) -> None:
28
+ def __init__(
29
+ self,
30
+ sdk_config: SDKConfiguration,
31
+ parent_ref: Optional[object] = None,
32
+ ) -> None:
24
33
  self.sdk_configuration = sdk_config
34
+ self.parent_ref = parent_ref
25
35
 
26
36
  def _get_url(self, base_url, url_variables):
27
37
  sdk_url, sdk_variables = self.sdk_configuration.get_server_details()
@@ -54,6 +64,7 @@ class BaseSDK:
54
64
  ] = None,
55
65
  url_override: Optional[str] = None,
56
66
  http_headers: Optional[Mapping[str, str]] = None,
67
+ allow_empty_value: Optional[List[str]] = None,
57
68
  ) -> httpx.Request:
58
69
  client = self.sdk_configuration.async_client
59
70
  return self._build_request_with_client(
@@ -74,6 +85,7 @@ class BaseSDK:
74
85
  get_serialized_body,
75
86
  url_override,
76
87
  http_headers,
88
+ allow_empty_value,
77
89
  )
78
90
 
79
91
  def _build_request(
@@ -96,6 +108,7 @@ class BaseSDK:
96
108
  ] = None,
97
109
  url_override: Optional[str] = None,
98
110
  http_headers: Optional[Mapping[str, str]] = None,
111
+ allow_empty_value: Optional[List[str]] = None,
99
112
  ) -> httpx.Request:
100
113
  client = self.sdk_configuration.client
101
114
  return self._build_request_with_client(
@@ -116,6 +129,7 @@ class BaseSDK:
116
129
  get_serialized_body,
117
130
  url_override,
118
131
  http_headers,
132
+ allow_empty_value,
119
133
  )
120
134
 
121
135
  def _build_request_with_client(
@@ -139,6 +153,7 @@ class BaseSDK:
139
153
  ] = None,
140
154
  url_override: Optional[str] = None,
141
155
  http_headers: Optional[Mapping[str, str]] = None,
156
+ allow_empty_value: Optional[List[str]] = None,
142
157
  ) -> httpx.Request:
143
158
  query_params = {}
144
159
 
@@ -154,6 +169,7 @@ class BaseSDK:
154
169
  query_params = utils.get_query_params(
155
170
  request if request_has_query_params else None,
156
171
  _globals if request_has_query_params else None,
172
+ allow_empty_value,
157
173
  )
158
174
  else:
159
175
  # Pick up the query parameter from the override so they can be
@@ -17,7 +17,7 @@ class Branches(BaseSDK):
17
17
  server_url: Optional[str] = None,
18
18
  timeout_ms: Optional[int] = None,
19
19
  http_headers: Optional[Mapping[str, str]] = None,
20
- ) -> models.GetVersionBranchResponse:
20
+ ) -> models.CountedBranchInfo:
21
21
  r"""List all branches in the Git repository used for Cribl configuration
22
22
 
23
23
  Get a list of all branches in the Git repository used for Cribl configuration.
@@ -49,16 +49,21 @@ class Branches(BaseSDK):
49
49
  accept_header_value="application/json",
50
50
  http_headers=http_headers,
51
51
  security=self.sdk_configuration.security,
52
+ allow_empty_value=None,
52
53
  timeout_ms=timeout_ms,
53
54
  )
54
55
 
55
56
  if retries == UNSET:
56
57
  if self.sdk_configuration.retry_config is not UNSET:
57
58
  retries = self.sdk_configuration.retry_config
59
+ else:
60
+ retries = utils.RetryConfig(
61
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
62
+ )
58
63
 
59
64
  retry_config = None
60
65
  if isinstance(retries, utils.RetryConfig):
61
- retry_config = (retries, ["429", "500", "502", "503", "504"])
66
+ retry_config = (retries, ["429"])
62
67
 
63
68
  http_res = self.do_request(
64
69
  hook_ctx=HookContext(
@@ -77,7 +82,7 @@ class Branches(BaseSDK):
77
82
 
78
83
  response_data: Any = None
79
84
  if utils.match_response(http_res, "200", "application/json"):
80
- return unmarshal_json_response(models.GetVersionBranchResponse, http_res)
85
+ return unmarshal_json_response(models.CountedBranchInfo, http_res)
81
86
  if utils.match_response(http_res, "500", "application/json"):
82
87
  response_data = unmarshal_json_response(errors.ErrorData, http_res)
83
88
  raise errors.Error(response_data, http_res)
@@ -97,7 +102,7 @@ class Branches(BaseSDK):
97
102
  server_url: Optional[str] = None,
98
103
  timeout_ms: Optional[int] = None,
99
104
  http_headers: Optional[Mapping[str, str]] = None,
100
- ) -> models.GetVersionBranchResponse:
105
+ ) -> models.CountedBranchInfo:
101
106
  r"""List all branches in the Git repository used for Cribl configuration
102
107
 
103
108
  Get a list of all branches in the Git repository used for Cribl configuration.
@@ -129,16 +134,21 @@ class Branches(BaseSDK):
129
134
  accept_header_value="application/json",
130
135
  http_headers=http_headers,
131
136
  security=self.sdk_configuration.security,
137
+ allow_empty_value=None,
132
138
  timeout_ms=timeout_ms,
133
139
  )
134
140
 
135
141
  if retries == UNSET:
136
142
  if self.sdk_configuration.retry_config is not UNSET:
137
143
  retries = self.sdk_configuration.retry_config
144
+ else:
145
+ retries = utils.RetryConfig(
146
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
147
+ )
138
148
 
139
149
  retry_config = None
140
150
  if isinstance(retries, utils.RetryConfig):
141
- retry_config = (retries, ["429", "500", "502", "503", "504"])
151
+ retry_config = (retries, ["429"])
142
152
 
143
153
  http_res = await self.do_request_async(
144
154
  hook_ctx=HookContext(
@@ -157,7 +167,7 @@ class Branches(BaseSDK):
157
167
 
158
168
  response_data: Any = None
159
169
  if utils.match_response(http_res, "200", "application/json"):
160
- return unmarshal_json_response(models.GetVersionBranchResponse, http_res)
170
+ return unmarshal_json_response(models.CountedBranchInfo, http_res)
161
171
  if utils.match_response(http_res, "500", "application/json"):
162
172
  response_data = unmarshal_json_response(errors.ErrorData, http_res)
163
173
  raise errors.Error(response_data, http_res)
@@ -209,16 +219,21 @@ class Branches(BaseSDK):
209
219
  accept_header_value="application/json",
210
220
  http_headers=http_headers,
211
221
  security=self.sdk_configuration.security,
222
+ allow_empty_value=None,
212
223
  timeout_ms=timeout_ms,
213
224
  )
214
225
 
215
226
  if retries == UNSET:
216
227
  if self.sdk_configuration.retry_config is not UNSET:
217
228
  retries = self.sdk_configuration.retry_config
229
+ else:
230
+ retries = utils.RetryConfig(
231
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
232
+ )
218
233
 
219
234
  retry_config = None
220
235
  if isinstance(retries, utils.RetryConfig):
221
- retry_config = (retries, ["429", "500", "502", "503", "504"])
236
+ retry_config = (retries, ["429"])
222
237
 
223
238
  http_res = self.do_request(
224
239
  hook_ctx=HookContext(
@@ -289,16 +304,21 @@ class Branches(BaseSDK):
289
304
  accept_header_value="application/json",
290
305
  http_headers=http_headers,
291
306
  security=self.sdk_configuration.security,
307
+ allow_empty_value=None,
292
308
  timeout_ms=timeout_ms,
293
309
  )
294
310
 
295
311
  if retries == UNSET:
296
312
  if self.sdk_configuration.retry_config is not UNSET:
297
313
  retries = self.sdk_configuration.retry_config
314
+ else:
315
+ retries = utils.RetryConfig(
316
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
317
+ )
298
318
 
299
319
  retry_config = None
300
320
  if isinstance(retries, utils.RetryConfig):
301
- retry_config = (retries, ["429", "500", "502", "503", "504"])
321
+ retry_config = (retries, ["429"])
302
322
 
303
323
  http_res = await self.do_request_async(
304
324
  hook_ctx=HookContext(