cribl-control-plane 0.0.50__py3-none-any.whl → 0.0.50rc2__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.

Potentially problematic release.


This version of cribl-control-plane might be problematic. Click here for more details.

Files changed (176) hide show
  1. cribl_control_plane/_version.py +3 -5
  2. cribl_control_plane/errors/healthstatus_error.py +8 -2
  3. cribl_control_plane/groups_sdk.py +4 -4
  4. cribl_control_plane/health.py +6 -2
  5. cribl_control_plane/models/__init__.py +56 -31
  6. cribl_control_plane/models/cacheconnection.py +10 -2
  7. cribl_control_plane/models/cacheconnectionbackfillstatus.py +2 -1
  8. cribl_control_plane/models/cloudprovider.py +2 -1
  9. cribl_control_plane/models/configgroup.py +24 -4
  10. cribl_control_plane/models/configgroupcloud.py +6 -2
  11. cribl_control_plane/models/createconfiggroupbyproductop.py +8 -2
  12. cribl_control_plane/models/createinputhectokenbyidop.py +6 -5
  13. cribl_control_plane/models/createversionpushop.py +5 -5
  14. cribl_control_plane/models/cribllakedataset.py +8 -2
  15. cribl_control_plane/models/datasetmetadata.py +8 -2
  16. cribl_control_plane/models/deleteconfiggroupbyproductandidop.py +7 -2
  17. cribl_control_plane/models/error.py +16 -0
  18. cribl_control_plane/models/getconfiggroupaclbyproductandidop.py +4 -2
  19. cribl_control_plane/models/getconfiggroupaclteamsbyproductandidop.py +4 -2
  20. cribl_control_plane/models/getconfiggroupbyproductandidop.py +3 -1
  21. cribl_control_plane/models/getconfiggroupconfigversionbyproductandidop.py +7 -2
  22. cribl_control_plane/models/gethealthinfoop.py +17 -0
  23. cribl_control_plane/models/getsummaryop.py +7 -2
  24. cribl_control_plane/models/getversionshowop.py +6 -5
  25. cribl_control_plane/models/gitinfo.py +14 -3
  26. cribl_control_plane/models/gitshowresult.py +19 -0
  27. cribl_control_plane/models/hbcriblinfo.py +24 -3
  28. cribl_control_plane/models/healthstatus.py +7 -4
  29. cribl_control_plane/models/heartbeatmetadata.py +3 -0
  30. cribl_control_plane/models/input.py +65 -63
  31. cribl_control_plane/models/inputappscope.py +34 -14
  32. cribl_control_plane/models/inputazureblob.py +17 -6
  33. cribl_control_plane/models/inputcollection.py +11 -4
  34. cribl_control_plane/models/inputconfluentcloud.py +41 -32
  35. cribl_control_plane/models/inputcribl.py +11 -4
  36. cribl_control_plane/models/inputcriblhttp.py +23 -8
  37. cribl_control_plane/models/inputcribllakehttp.py +22 -10
  38. cribl_control_plane/models/inputcriblmetrics.py +12 -4
  39. cribl_control_plane/models/inputcribltcp.py +23 -8
  40. cribl_control_plane/models/inputcrowdstrike.py +26 -10
  41. cribl_control_plane/models/inputdatadogagent.py +24 -8
  42. cribl_control_plane/models/inputdatagen.py +11 -4
  43. cribl_control_plane/models/inputedgeprometheus.py +58 -24
  44. cribl_control_plane/models/inputelastic.py +40 -14
  45. cribl_control_plane/models/inputeventhub.py +15 -6
  46. cribl_control_plane/models/inputexec.py +14 -6
  47. cribl_control_plane/models/inputfile.py +15 -6
  48. cribl_control_plane/models/inputfirehose.py +23 -8
  49. cribl_control_plane/models/inputgooglepubsub.py +19 -6
  50. cribl_control_plane/models/inputgrafana.py +67 -24
  51. cribl_control_plane/models/inputhttp.py +23 -8
  52. cribl_control_plane/models/inputhttpraw.py +23 -8
  53. cribl_control_plane/models/inputjournalfiles.py +12 -4
  54. cribl_control_plane/models/inputkafka.py +41 -28
  55. cribl_control_plane/models/inputkinesis.py +38 -14
  56. cribl_control_plane/models/inputkubeevents.py +11 -4
  57. cribl_control_plane/models/inputkubelogs.py +16 -8
  58. cribl_control_plane/models/inputkubemetrics.py +16 -8
  59. cribl_control_plane/models/inputloki.py +29 -10
  60. cribl_control_plane/models/inputmetrics.py +23 -8
  61. cribl_control_plane/models/inputmodeldriventelemetry.py +32 -10
  62. cribl_control_plane/models/inputmsk.py +48 -30
  63. cribl_control_plane/models/inputnetflow.py +11 -4
  64. cribl_control_plane/models/inputoffice365mgmt.py +33 -14
  65. cribl_control_plane/models/inputoffice365msgtrace.py +35 -16
  66. cribl_control_plane/models/inputoffice365service.py +35 -16
  67. cribl_control_plane/models/inputopentelemetry.py +38 -16
  68. cribl_control_plane/models/inputprometheus.py +50 -18
  69. cribl_control_plane/models/inputprometheusrw.py +30 -10
  70. cribl_control_plane/models/inputrawudp.py +11 -4
  71. cribl_control_plane/models/inputs3.py +21 -8
  72. cribl_control_plane/models/inputs3inventory.py +26 -10
  73. cribl_control_plane/models/inputsecuritylake.py +27 -10
  74. cribl_control_plane/models/inputsnmp.py +16 -6
  75. cribl_control_plane/models/inputsplunk.py +33 -12
  76. cribl_control_plane/models/inputsplunkhec.py +29 -10
  77. cribl_control_plane/models/inputsplunksearch.py +33 -14
  78. cribl_control_plane/models/inputsqs.py +27 -10
  79. cribl_control_plane/models/inputsyslog.py +43 -16
  80. cribl_control_plane/models/inputsystemmetrics.py +48 -24
  81. cribl_control_plane/models/inputsystemstate.py +16 -8
  82. cribl_control_plane/models/inputtcp.py +29 -10
  83. cribl_control_plane/models/inputtcpjson.py +29 -10
  84. cribl_control_plane/models/inputwef.py +37 -14
  85. cribl_control_plane/models/inputwindowsmetrics.py +44 -24
  86. cribl_control_plane/models/inputwineventlogs.py +20 -10
  87. cribl_control_plane/models/inputwiz.py +21 -8
  88. cribl_control_plane/models/inputwizwebhook.py +23 -8
  89. cribl_control_plane/models/inputzscalerhec.py +29 -10
  90. cribl_control_plane/models/lakehouseconnectiontype.py +2 -1
  91. cribl_control_plane/models/listconfiggroupbyproductop.py +3 -1
  92. cribl_control_plane/models/masterworkerentry.py +7 -2
  93. cribl_control_plane/models/nodeactiveupgradestatus.py +2 -1
  94. cribl_control_plane/models/nodefailedupgradestatus.py +2 -1
  95. cribl_control_plane/models/nodeprovidedinfo.py +3 -0
  96. cribl_control_plane/models/nodeskippedupgradestatus.py +2 -1
  97. cribl_control_plane/models/nodeupgradestate.py +2 -1
  98. cribl_control_plane/models/nodeupgradestatus.py +13 -5
  99. cribl_control_plane/models/output.py +84 -79
  100. cribl_control_plane/models/outputazureblob.py +48 -18
  101. cribl_control_plane/models/outputazuredataexplorer.py +73 -28
  102. cribl_control_plane/models/outputazureeventhub.py +40 -18
  103. cribl_control_plane/models/outputazurelogs.py +35 -12
  104. cribl_control_plane/models/outputclickhouse.py +55 -20
  105. cribl_control_plane/models/outputcloudwatch.py +29 -10
  106. cribl_control_plane/models/outputconfluentcloud.py +71 -44
  107. cribl_control_plane/models/outputcriblhttp.py +44 -16
  108. cribl_control_plane/models/outputcribllake.py +46 -16
  109. cribl_control_plane/models/outputcribltcp.py +45 -18
  110. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +49 -14
  111. cribl_control_plane/models/outputdatabricks.py +282 -0
  112. cribl_control_plane/models/outputdatadog.py +48 -20
  113. cribl_control_plane/models/outputdataset.py +46 -18
  114. cribl_control_plane/models/outputdiskspool.py +7 -2
  115. cribl_control_plane/models/outputdls3.py +68 -24
  116. cribl_control_plane/models/outputdynatracehttp.py +53 -20
  117. cribl_control_plane/models/outputdynatraceotlp.py +55 -22
  118. cribl_control_plane/models/outputelastic.py +43 -18
  119. cribl_control_plane/models/outputelasticcloud.py +36 -12
  120. cribl_control_plane/models/outputexabeam.py +29 -10
  121. cribl_control_plane/models/outputfilesystem.py +39 -14
  122. cribl_control_plane/models/outputgooglechronicle.py +50 -16
  123. cribl_control_plane/models/outputgooglecloudlogging.py +50 -18
  124. cribl_control_plane/models/outputgooglecloudstorage.py +66 -24
  125. cribl_control_plane/models/outputgooglepubsub.py +31 -10
  126. cribl_control_plane/models/outputgrafanacloud.py +97 -32
  127. cribl_control_plane/models/outputgraphite.py +31 -14
  128. cribl_control_plane/models/outputhoneycomb.py +35 -12
  129. cribl_control_plane/models/outputhumiohec.py +43 -16
  130. cribl_control_plane/models/outputinfluxdb.py +42 -16
  131. cribl_control_plane/models/outputkafka.py +69 -40
  132. cribl_control_plane/models/outputkinesis.py +40 -16
  133. cribl_control_plane/models/outputloki.py +41 -16
  134. cribl_control_plane/models/outputminio.py +65 -24
  135. cribl_control_plane/models/outputmsk.py +77 -42
  136. cribl_control_plane/models/outputnewrelic.py +43 -18
  137. cribl_control_plane/models/outputnewrelicevents.py +41 -14
  138. cribl_control_plane/models/outputopentelemetry.py +67 -26
  139. cribl_control_plane/models/outputprometheus.py +35 -12
  140. cribl_control_plane/models/outputring.py +19 -8
  141. cribl_control_plane/models/outputs3.py +68 -26
  142. cribl_control_plane/models/outputsecuritylake.py +52 -18
  143. cribl_control_plane/models/outputsentinel.py +45 -18
  144. cribl_control_plane/models/outputsentineloneaisiem.py +50 -18
  145. cribl_control_plane/models/outputservicenow.py +60 -24
  146. cribl_control_plane/models/outputsignalfx.py +37 -14
  147. cribl_control_plane/models/outputsns.py +36 -14
  148. cribl_control_plane/models/outputsplunk.py +60 -24
  149. cribl_control_plane/models/outputsplunkhec.py +35 -12
  150. cribl_control_plane/models/outputsplunklb.py +77 -30
  151. cribl_control_plane/models/outputsqs.py +41 -16
  152. cribl_control_plane/models/outputstatsd.py +30 -14
  153. cribl_control_plane/models/outputstatsdext.py +29 -12
  154. cribl_control_plane/models/outputsumologic.py +35 -12
  155. cribl_control_plane/models/outputsyslog.py +58 -24
  156. cribl_control_plane/models/outputtcpjson.py +52 -20
  157. cribl_control_plane/models/outputwavefront.py +35 -12
  158. cribl_control_plane/models/outputwebhook.py +58 -22
  159. cribl_control_plane/models/outputxsiam.py +35 -14
  160. cribl_control_plane/models/productscore.py +2 -1
  161. cribl_control_plane/models/rbacresource.py +2 -1
  162. cribl_control_plane/models/resourcepolicy.py +4 -2
  163. cribl_control_plane/models/routeconf.py +3 -4
  164. cribl_control_plane/models/runnablejobcollection.py +30 -13
  165. cribl_control_plane/models/runnablejobexecutor.py +13 -4
  166. cribl_control_plane/models/runnablejobscheduledsearch.py +7 -2
  167. cribl_control_plane/models/updateconfiggroupbyproductandidop.py +8 -2
  168. cribl_control_plane/models/updateconfiggroupdeploybyproductandidop.py +8 -2
  169. cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +6 -5
  170. cribl_control_plane/models/workertypes.py +2 -1
  171. {cribl_control_plane-0.0.50.dist-info → cribl_control_plane-0.0.50rc2.dist-info}/METADATA +1 -1
  172. cribl_control_plane-0.0.50rc2.dist-info/RECORD +327 -0
  173. cribl_control_plane/models/appmode.py +0 -13
  174. cribl_control_plane/models/routecloneconf.py +0 -13
  175. cribl_control_plane-0.0.50.dist-info/RECORD +0 -325
  176. {cribl_control_plane-0.0.50.dist-info → cribl_control_plane-0.0.50rc2.dist-info}/WHEEL +0 -0
@@ -1,9 +1,12 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic.functional_validators import PlainValidator
7
10
  from typing import List, Optional
8
11
  from typing_extensions import Annotated, NotRequired, TypedDict
9
12
 
@@ -12,7 +15,7 @@ class OutputWebhookType(str, Enum):
12
15
  WEBHOOK = "webhook"
13
16
 
14
17
 
15
- class OutputWebhookMethod(str, Enum):
18
+ class OutputWebhookMethod(str, Enum, metaclass=utils.OpenEnumMeta):
16
19
  r"""The method to use when sending events"""
17
20
 
18
21
  POST = "POST"
@@ -20,7 +23,7 @@ class OutputWebhookMethod(str, Enum):
20
23
  PATCH = "PATCH"
21
24
 
22
25
 
23
- class OutputWebhookFormat(str, Enum):
26
+ class OutputWebhookFormat(str, Enum, metaclass=utils.OpenEnumMeta):
24
27
  r"""How to format events before sending out"""
25
28
 
26
29
  NDJSON = "ndjson"
@@ -40,7 +43,7 @@ class OutputWebhookExtraHTTPHeader(BaseModel):
40
43
  name: Optional[str] = None
41
44
 
42
45
 
43
- class OutputWebhookFailedRequestLoggingMode(str, Enum):
46
+ class OutputWebhookFailedRequestLoggingMode(str, Enum, metaclass=utils.OpenEnumMeta):
44
47
  r"""Data to log when a request fails. All headers are redacted by default, unless listed as safe headers below."""
45
48
 
46
49
  PAYLOAD = "payload"
@@ -102,7 +105,7 @@ class OutputWebhookTimeoutRetrySettings(BaseModel):
102
105
  r"""The maximum backoff interval, in milliseconds, Cribl Stream should apply. Default (and minimum) is 10,000 ms (10 seconds); maximum is 180,000 ms (180 seconds)."""
103
106
 
104
107
 
105
- class OutputWebhookBackpressureBehavior(str, Enum):
108
+ class OutputWebhookBackpressureBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
106
109
  r"""How to handle events when all receivers are exerting backpressure"""
107
110
 
108
111
  BLOCK = "block"
@@ -110,7 +113,7 @@ class OutputWebhookBackpressureBehavior(str, Enum):
110
113
  QUEUE = "queue"
111
114
 
112
115
 
113
- class OutputWebhookAuthenticationType(str, Enum):
116
+ class OutputWebhookAuthenticationType(str, Enum, metaclass=utils.OpenEnumMeta):
114
117
  r"""Authentication method to use for the HTTP request"""
115
118
 
116
119
  NONE = "none"
@@ -121,14 +124,14 @@ class OutputWebhookAuthenticationType(str, Enum):
121
124
  OAUTH = "oauth"
122
125
 
123
126
 
124
- class OutputWebhookMinimumTLSVersion(str, Enum):
127
+ class OutputWebhookMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
125
128
  TL_SV1 = "TLSv1"
126
129
  TL_SV1_1 = "TLSv1.1"
127
130
  TL_SV1_2 = "TLSv1.2"
128
131
  TL_SV1_3 = "TLSv1.3"
129
132
 
130
133
 
131
- class OutputWebhookMaximumTLSVersion(str, Enum):
134
+ class OutputWebhookMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
132
135
  TL_SV1 = "TLSv1"
133
136
  TL_SV1_1 = "TLSv1.1"
134
137
  TL_SV1_2 = "TLSv1.2"
@@ -177,29 +180,37 @@ class OutputWebhookTLSSettingsClientSide(BaseModel):
177
180
  r"""Passphrase to use to decrypt private key"""
178
181
 
179
182
  min_version: Annotated[
180
- Optional[OutputWebhookMinimumTLSVersion], pydantic.Field(alias="minVersion")
183
+ Annotated[
184
+ Optional[OutputWebhookMinimumTLSVersion],
185
+ PlainValidator(validate_open_enum(False)),
186
+ ],
187
+ pydantic.Field(alias="minVersion"),
181
188
  ] = None
182
189
 
183
190
  max_version: Annotated[
184
- Optional[OutputWebhookMaximumTLSVersion], pydantic.Field(alias="maxVersion")
191
+ Annotated[
192
+ Optional[OutputWebhookMaximumTLSVersion],
193
+ PlainValidator(validate_open_enum(False)),
194
+ ],
195
+ pydantic.Field(alias="maxVersion"),
185
196
  ] = None
186
197
 
187
198
 
188
- class OutputWebhookCompression(str, Enum):
199
+ class OutputWebhookCompression(str, Enum, metaclass=utils.OpenEnumMeta):
189
200
  r"""Codec to use to compress the persisted data"""
190
201
 
191
202
  NONE = "none"
192
203
  GZIP = "gzip"
193
204
 
194
205
 
195
- class OutputWebhookQueueFullBehavior(str, Enum):
206
+ class OutputWebhookQueueFullBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
196
207
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
197
208
 
198
209
  BLOCK = "block"
199
210
  DROP = "drop"
200
211
 
201
212
 
202
- class OutputWebhookMode(str, Enum):
213
+ class OutputWebhookMode(str, Enum, metaclass=utils.OpenEnumMeta):
203
214
  r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
204
215
 
205
216
  ERROR = "error"
@@ -404,11 +415,16 @@ class OutputWebhook(BaseModel):
404
415
  streamtags: Optional[List[str]] = None
405
416
  r"""Tags for filtering and grouping in @{product}"""
406
417
 
407
- method: Optional[OutputWebhookMethod] = OutputWebhookMethod.POST
418
+ method: Annotated[
419
+ Optional[OutputWebhookMethod], PlainValidator(validate_open_enum(False))
420
+ ] = OutputWebhookMethod.POST
408
421
  r"""The method to use when sending events"""
409
422
 
410
423
  format_: Annotated[
411
- Optional[OutputWebhookFormat], pydantic.Field(alias="format")
424
+ Annotated[
425
+ Optional[OutputWebhookFormat], PlainValidator(validate_open_enum(False))
426
+ ],
427
+ pydantic.Field(alias="format"),
412
428
  ] = OutputWebhookFormat.NDJSON
413
429
  r"""How to format events before sending out"""
414
430
 
@@ -459,7 +475,10 @@ class OutputWebhook(BaseModel):
459
475
  r"""Enable round-robin DNS lookup. When a DNS server returns multiple addresses, @{product} will cycle through them in the order returned. For optimal performance, consider enabling this setting for non-load balanced destinations."""
460
476
 
461
477
  failed_request_logging_mode: Annotated[
462
- Optional[OutputWebhookFailedRequestLoggingMode],
478
+ Annotated[
479
+ Optional[OutputWebhookFailedRequestLoggingMode],
480
+ PlainValidator(validate_open_enum(False)),
481
+ ],
463
482
  pydantic.Field(alias="failedRequestLoggingMode"),
464
483
  ] = OutputWebhookFailedRequestLoggingMode.NONE
465
484
  r"""Data to log when a request fails. All headers are redacted by default, unless listed as safe headers below."""
@@ -486,13 +505,20 @@ class OutputWebhook(BaseModel):
486
505
  r"""Honor any Retry-After header that specifies a delay (in seconds) no longer than 180 seconds after the retry request. @{product} limits the delay to 180 seconds, even if the Retry-After header specifies a longer delay. When enabled, takes precedence over user-configured retry options. When disabled, all Retry-After headers are ignored."""
487
506
 
488
507
  on_backpressure: Annotated[
489
- Optional[OutputWebhookBackpressureBehavior],
508
+ Annotated[
509
+ Optional[OutputWebhookBackpressureBehavior],
510
+ PlainValidator(validate_open_enum(False)),
511
+ ],
490
512
  pydantic.Field(alias="onBackpressure"),
491
513
  ] = OutputWebhookBackpressureBehavior.BLOCK
492
514
  r"""How to handle events when all receivers are exerting backpressure"""
493
515
 
494
516
  auth_type: Annotated[
495
- Optional[OutputWebhookAuthenticationType], pydantic.Field(alias="authType")
517
+ Annotated[
518
+ Optional[OutputWebhookAuthenticationType],
519
+ PlainValidator(validate_open_enum(False)),
520
+ ],
521
+ pydantic.Field(alias="authType"),
496
522
  ] = OutputWebhookAuthenticationType.NONE
497
523
  r"""Authentication method to use for the HTTP request"""
498
524
 
@@ -564,19 +590,29 @@ class OutputWebhook(BaseModel):
564
590
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/<output-id>."""
565
591
 
566
592
  pq_compress: Annotated[
567
- Optional[OutputWebhookCompression], pydantic.Field(alias="pqCompress")
593
+ Annotated[
594
+ Optional[OutputWebhookCompression],
595
+ PlainValidator(validate_open_enum(False)),
596
+ ],
597
+ pydantic.Field(alias="pqCompress"),
568
598
  ] = OutputWebhookCompression.NONE
569
599
  r"""Codec to use to compress the persisted data"""
570
600
 
571
601
  pq_on_backpressure: Annotated[
572
- Optional[OutputWebhookQueueFullBehavior],
602
+ Annotated[
603
+ Optional[OutputWebhookQueueFullBehavior],
604
+ PlainValidator(validate_open_enum(False)),
605
+ ],
573
606
  pydantic.Field(alias="pqOnBackpressure"),
574
607
  ] = OutputWebhookQueueFullBehavior.BLOCK
575
608
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
576
609
 
577
- pq_mode: Annotated[Optional[OutputWebhookMode], pydantic.Field(alias="pqMode")] = (
578
- OutputWebhookMode.ERROR
579
- )
610
+ pq_mode: Annotated[
611
+ Annotated[
612
+ Optional[OutputWebhookMode], PlainValidator(validate_open_enum(False))
613
+ ],
614
+ pydantic.Field(alias="pqMode"),
615
+ ] = OutputWebhookMode.ERROR
580
616
  r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
581
617
 
582
618
  pq_controls: Annotated[
@@ -1,9 +1,12 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic.functional_validators import PlainValidator
7
10
  from typing import Any, List, Optional
8
11
  from typing_extensions import Annotated, NotRequired, TypedDict
9
12
 
@@ -23,7 +26,7 @@ class OutputXsiamExtraHTTPHeader(BaseModel):
23
26
  name: Optional[str] = None
24
27
 
25
28
 
26
- class OutputXsiamFailedRequestLoggingMode(str, Enum):
29
+ class OutputXsiamFailedRequestLoggingMode(str, Enum, metaclass=utils.OpenEnumMeta):
27
30
  r"""Data to log when a request fails. All headers are redacted by default, unless listed as safe headers below."""
28
31
 
29
32
  PAYLOAD = "payload"
@@ -31,7 +34,7 @@ class OutputXsiamFailedRequestLoggingMode(str, Enum):
31
34
  NONE = "none"
32
35
 
33
36
 
34
- class OutputXsiamAuthenticationMethod(str, Enum):
37
+ class OutputXsiamAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
35
38
  r"""Enter a token directly, or provide a secret referencing a token"""
36
39
 
37
40
  TOKEN = "token"
@@ -92,7 +95,7 @@ class OutputXsiamTimeoutRetrySettings(BaseModel):
92
95
  r"""The maximum backoff interval, in milliseconds, Cribl Stream should apply. Default (and minimum) is 10,000 ms (10 seconds); maximum is 180,000 ms (180 seconds)."""
93
96
 
94
97
 
95
- class OutputXsiamBackpressureBehavior(str, Enum):
98
+ class OutputXsiamBackpressureBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
96
99
  r"""How to handle events when all receivers are exerting backpressure"""
97
100
 
98
101
  BLOCK = "block"
@@ -113,21 +116,21 @@ class OutputXsiamURL(BaseModel):
113
116
  r"""Assign a weight (>0) to each endpoint to indicate its traffic-handling capability"""
114
117
 
115
118
 
116
- class OutputXsiamCompression(str, Enum):
119
+ class OutputXsiamCompression(str, Enum, metaclass=utils.OpenEnumMeta):
117
120
  r"""Codec to use to compress the persisted data"""
118
121
 
119
122
  NONE = "none"
120
123
  GZIP = "gzip"
121
124
 
122
125
 
123
- class OutputXsiamQueueFullBehavior(str, Enum):
126
+ class OutputXsiamQueueFullBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
124
127
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
125
128
 
126
129
  BLOCK = "block"
127
130
  DROP = "drop"
128
131
 
129
132
 
130
- class OutputXsiamMode(str, Enum):
133
+ class OutputXsiamMode(str, Enum, metaclass=utils.OpenEnumMeta):
131
134
  r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
132
135
 
133
136
  ERROR = "error"
@@ -283,7 +286,10 @@ class OutputXsiam(BaseModel):
283
286
  r"""Headers to add to all events"""
284
287
 
285
288
  failed_request_logging_mode: Annotated[
286
- Optional[OutputXsiamFailedRequestLoggingMode],
289
+ Annotated[
290
+ Optional[OutputXsiamFailedRequestLoggingMode],
291
+ PlainValidator(validate_open_enum(False)),
292
+ ],
287
293
  pydantic.Field(alias="failedRequestLoggingMode"),
288
294
  ] = OutputXsiamFailedRequestLoggingMode.NONE
289
295
  r"""Data to log when a request fails. All headers are redacted by default, unless listed as safe headers below."""
@@ -294,7 +300,11 @@ class OutputXsiam(BaseModel):
294
300
  r"""List of headers that are safe to log in plain text"""
295
301
 
296
302
  auth_type: Annotated[
297
- Optional[OutputXsiamAuthenticationMethod], pydantic.Field(alias="authType")
303
+ Annotated[
304
+ Optional[OutputXsiamAuthenticationMethod],
305
+ PlainValidator(validate_open_enum(False)),
306
+ ],
307
+ pydantic.Field(alias="authType"),
298
308
  ] = OutputXsiamAuthenticationMethod.TOKEN
299
309
  r"""Enter a token directly, or provide a secret referencing a token"""
300
310
 
@@ -320,7 +330,10 @@ class OutputXsiam(BaseModel):
320
330
  r"""Maximum number of requests to limit to per second"""
321
331
 
322
332
  on_backpressure: Annotated[
323
- Optional[OutputXsiamBackpressureBehavior],
333
+ Annotated[
334
+ Optional[OutputXsiamBackpressureBehavior],
335
+ PlainValidator(validate_open_enum(False)),
336
+ ],
324
337
  pydantic.Field(alias="onBackpressure"),
325
338
  ] = OutputXsiamBackpressureBehavior.BLOCK
326
339
  r"""How to handle events when all receivers are exerting backpressure"""
@@ -375,18 +388,26 @@ class OutputXsiam(BaseModel):
375
388
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/<output-id>."""
376
389
 
377
390
  pq_compress: Annotated[
378
- Optional[OutputXsiamCompression], pydantic.Field(alias="pqCompress")
391
+ Annotated[
392
+ Optional[OutputXsiamCompression], PlainValidator(validate_open_enum(False))
393
+ ],
394
+ pydantic.Field(alias="pqCompress"),
379
395
  ] = OutputXsiamCompression.NONE
380
396
  r"""Codec to use to compress the persisted data"""
381
397
 
382
398
  pq_on_backpressure: Annotated[
383
- Optional[OutputXsiamQueueFullBehavior], pydantic.Field(alias="pqOnBackpressure")
399
+ Annotated[
400
+ Optional[OutputXsiamQueueFullBehavior],
401
+ PlainValidator(validate_open_enum(False)),
402
+ ],
403
+ pydantic.Field(alias="pqOnBackpressure"),
384
404
  ] = OutputXsiamQueueFullBehavior.BLOCK
385
405
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
386
406
 
387
- pq_mode: Annotated[Optional[OutputXsiamMode], pydantic.Field(alias="pqMode")] = (
388
- OutputXsiamMode.ERROR
389
- )
407
+ pq_mode: Annotated[
408
+ Annotated[Optional[OutputXsiamMode], PlainValidator(validate_open_enum(False))],
409
+ pydantic.Field(alias="pqMode"),
410
+ ] = OutputXsiamMode.ERROR
390
411
  r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
391
412
 
392
413
  pq_controls: Annotated[
@@ -1,9 +1,10 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from enum import Enum
5
6
 
6
7
 
7
- class ProductsCore(str, Enum):
8
+ class ProductsCore(str, Enum, metaclass=utils.OpenEnumMeta):
8
9
  STREAM = "stream"
9
10
  EDGE = "edge"
@@ -1,10 +1,11 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from enum import Enum
5
6
 
6
7
 
7
- class RbacResource(str, Enum):
8
+ class RbacResource(str, Enum, metaclass=utils.OpenEnumMeta):
8
9
  GROUPS = "groups"
9
10
  DATASETS = "datasets"
10
11
  DATASET_PROVIDERS = "dataset-providers"
@@ -3,8 +3,10 @@
3
3
  from __future__ import annotations
4
4
  from .rbacresource import RbacResource
5
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
7
+ from pydantic.functional_validators import PlainValidator
6
8
  from typing import Optional
7
- from typing_extensions import NotRequired, TypedDict
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
8
10
 
9
11
 
10
12
  class ResourcePolicyTypedDict(TypedDict):
@@ -19,6 +21,6 @@ class ResourcePolicy(BaseModel):
19
21
 
20
22
  policy: str
21
23
 
22
- type: RbacResource
24
+ type: Annotated[RbacResource, PlainValidator(validate_open_enum(False))]
23
25
 
24
26
  id: Optional[str] = None
@@ -1,10 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .routecloneconf import RouteCloneConf, RouteCloneConfTypedDict
5
4
  from cribl_control_plane.types import BaseModel
6
5
  import pydantic
7
- from typing import List, Optional
6
+ from typing import Dict, List, Optional
8
7
  from typing_extensions import Annotated, NotRequired, TypedDict
9
8
 
10
9
 
@@ -13,7 +12,7 @@ class RouteConfTypedDict(TypedDict):
13
12
  id: str
14
13
  name: str
15
14
  pipeline: str
16
- clones: NotRequired[List[RouteCloneConfTypedDict]]
15
+ clones: NotRequired[List[Dict[str, str]]]
17
16
  context: NotRequired[str]
18
17
  description: NotRequired[str]
19
18
  disabled: NotRequired[bool]
@@ -33,7 +32,7 @@ class RouteConf(BaseModel):
33
32
 
34
33
  pipeline: str
35
34
 
36
- clones: Optional[List[RouteCloneConf]] = None
35
+ clones: Optional[List[Dict[str, str]]] = None
37
36
 
38
37
  context: Optional[str] = None
39
38
 
@@ -1,14 +1,17 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic.functional_validators import PlainValidator
7
10
  from typing import Any, List, Optional
8
11
  from typing_extensions import Annotated, NotRequired, TypedDict
9
12
 
10
13
 
11
- class RunnableJobCollectionJobType(str, Enum):
14
+ class RunnableJobCollectionJobType(str, Enum, metaclass=utils.OpenEnumMeta):
12
15
  COLLECTION = "collection"
13
16
  EXECUTOR = "executor"
14
17
  SCHEDULED_SEARCH = "scheduledSearch"
@@ -237,7 +240,7 @@ class Collector(BaseModel):
237
240
  r"""Character encoding to use when parsing ingested data. When not set, @{product} will default to UTF-8 but may incorrectly interpret multi-byte characters."""
238
241
 
239
242
 
240
- class RunnableJobCollectionType(str, Enum):
243
+ class InputType(str, Enum, metaclass=utils.OpenEnumMeta):
241
244
  COLLECTION = "collection"
242
245
 
243
246
 
@@ -273,7 +276,7 @@ class RunnableJobCollectionMetadatum(BaseModel):
273
276
 
274
277
 
275
278
  class RunnableJobCollectionInputTypedDict(TypedDict):
276
- type: NotRequired[RunnableJobCollectionType]
279
+ type: NotRequired[InputType]
277
280
  breaker_rulesets: NotRequired[List[str]]
278
281
  r"""A list of event-breaking rulesets that will be applied, in order, to the input data stream"""
279
282
  stale_channel_flush_ms: NotRequired[float]
@@ -292,7 +295,9 @@ class RunnableJobCollectionInputTypedDict(TypedDict):
292
295
 
293
296
 
294
297
  class RunnableJobCollectionInput(BaseModel):
295
- type: Optional[RunnableJobCollectionType] = RunnableJobCollectionType.COLLECTION
298
+ type: Annotated[Optional[InputType], PlainValidator(validate_open_enum(False))] = (
299
+ InputType.COLLECTION
300
+ )
296
301
 
297
302
  breaker_rulesets: Annotated[
298
303
  Optional[List[str]], pydantic.Field(alias="breakerRulesets")
@@ -326,7 +331,7 @@ class RunnableJobCollectionInput(BaseModel):
326
331
  r"""Destination to send results to"""
327
332
 
328
333
 
329
- class RunnableJobCollectionLogLevel(str, Enum):
334
+ class RunnableJobCollectionLogLevel(str, Enum, metaclass=utils.OpenEnumMeta):
330
335
  r"""Level at which to set task logging"""
331
336
 
332
337
  ERROR = "error"
@@ -336,7 +341,7 @@ class RunnableJobCollectionLogLevel(str, Enum):
336
341
  SILLY = "silly"
337
342
 
338
343
 
339
- class RunnableJobCollectionMode(str, Enum):
344
+ class RunnableJobCollectionMode(str, Enum, metaclass=utils.OpenEnumMeta):
340
345
  r"""Job run mode. Preview will either return up to N matching results, or will run until capture time T is reached. Discovery will gather the list of files to turn into streaming tasks, without running the data collection job. Full Run will run the collection job."""
341
346
 
342
347
  LIST = "list"
@@ -344,7 +349,7 @@ class RunnableJobCollectionMode(str, Enum):
344
349
  RUN = "run"
345
350
 
346
351
 
347
- class TimeRange(str, Enum):
352
+ class TimeRange(str, Enum, metaclass=utils.OpenEnumMeta):
348
353
  ABSOLUTE = "absolute"
349
354
  RELATIVE = "relative"
350
355
 
@@ -357,7 +362,7 @@ class RunnableJobCollectionTimeWarning(BaseModel):
357
362
  pass
358
363
 
359
364
 
360
- class WhereToCapture(int, Enum):
365
+ class WhereToCapture(int, Enum, metaclass=utils.OpenEnumMeta):
361
366
  ZERO = 0
362
367
  ONE = 1
363
368
  TWO = 2
@@ -379,7 +384,9 @@ class CaptureSettings(BaseModel):
379
384
  max_events: Annotated[Optional[float], pydantic.Field(alias="maxEvents")] = 100
380
385
  r"""Maximum number of events to capture"""
381
386
 
382
- level: Optional[WhereToCapture] = WhereToCapture.ZERO
387
+ level: Annotated[
388
+ Optional[WhereToCapture], PlainValidator(validate_open_enum(True))
389
+ ] = WhereToCapture.ZERO
383
390
 
384
391
 
385
392
  class RunnableJobCollectionRunTypedDict(TypedDict):
@@ -446,18 +453,25 @@ class RunnableJobCollectionRun(BaseModel):
446
453
  r"""Maximum number of times a task can be rescheduled"""
447
454
 
448
455
  log_level: Annotated[
449
- Optional[RunnableJobCollectionLogLevel], pydantic.Field(alias="logLevel")
456
+ Annotated[
457
+ Optional[RunnableJobCollectionLogLevel],
458
+ PlainValidator(validate_open_enum(False)),
459
+ ],
460
+ pydantic.Field(alias="logLevel"),
450
461
  ] = RunnableJobCollectionLogLevel.INFO
451
462
  r"""Level at which to set task logging"""
452
463
 
453
464
  job_timeout: Annotated[Optional[str], pydantic.Field(alias="jobTimeout")] = "0"
454
465
  r"""Maximum time the job is allowed to run. Time unit defaults to seconds if not specified (examples: 30, 45s, 15m). Enter 0 for unlimited time."""
455
466
 
456
- mode: Optional[RunnableJobCollectionMode] = RunnableJobCollectionMode.LIST
467
+ mode: Annotated[
468
+ Optional[RunnableJobCollectionMode], PlainValidator(validate_open_enum(False))
469
+ ] = RunnableJobCollectionMode.LIST
457
470
  r"""Job run mode. Preview will either return up to N matching results, or will run until capture time T is reached. Discovery will gather the list of files to turn into streaming tasks, without running the data collection job. Full Run will run the collection job."""
458
471
 
459
472
  time_range_type: Annotated[
460
- Optional[TimeRange], pydantic.Field(alias="timeRangeType")
473
+ Annotated[Optional[TimeRange], PlainValidator(validate_open_enum(False))],
474
+ pydantic.Field(alias="timeRangeType"),
461
475
  ] = TimeRange.RELATIVE
462
476
 
463
477
  earliest: Optional[float] = None
@@ -552,7 +566,10 @@ class RunnableJobCollection(BaseModel):
552
566
 
553
567
  description: Optional[str] = None
554
568
 
555
- type: Optional[RunnableJobCollectionJobType] = None
569
+ type: Annotated[
570
+ Optional[RunnableJobCollectionJobType],
571
+ PlainValidator(validate_open_enum(False)),
572
+ ] = None
556
573
 
557
574
  ttl: Optional[str] = "4h"
558
575
  r"""Time to keep the job's artifacts on disk after job completion. This also affects how long a job is listed in the Job Inspector."""
@@ -1,14 +1,17 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic.functional_validators import PlainValidator
7
10
  from typing import Any, List, Optional
8
11
  from typing_extensions import Annotated, NotRequired, TypedDict
9
12
 
10
13
 
11
- class RunnableJobExecutorJobType(str, Enum):
14
+ class RunnableJobExecutorJobType(str, Enum, metaclass=utils.OpenEnumMeta):
12
15
  COLLECTION = "collection"
13
16
  EXECUTOR = "executor"
14
17
  SCHEDULED_SEARCH = "scheduledSearch"
@@ -232,7 +235,7 @@ class Executor(BaseModel):
232
235
  conf: Optional[ExecutorSpecificSettings] = None
233
236
 
234
237
 
235
- class RunnableJobExecutorLogLevel(str, Enum):
238
+ class RunnableJobExecutorLogLevel(str, Enum, metaclass=utils.OpenEnumMeta):
236
239
  r"""Level at which to set task logging"""
237
240
 
238
241
  ERROR = "error"
@@ -265,7 +268,11 @@ class RunnableJobExecutorRun(BaseModel):
265
268
  r"""Maximum number of times a task can be rescheduled"""
266
269
 
267
270
  log_level: Annotated[
268
- Optional[RunnableJobExecutorLogLevel], pydantic.Field(alias="logLevel")
271
+ Annotated[
272
+ Optional[RunnableJobExecutorLogLevel],
273
+ PlainValidator(validate_open_enum(False)),
274
+ ],
275
+ pydantic.Field(alias="logLevel"),
269
276
  ] = RunnableJobExecutorLogLevel.INFO
270
277
  r"""Level at which to set task logging"""
271
278
 
@@ -306,7 +313,9 @@ class RunnableJobExecutor(BaseModel):
306
313
 
307
314
  description: Optional[str] = None
308
315
 
309
- type: Optional[RunnableJobExecutorJobType] = None
316
+ type: Annotated[
317
+ Optional[RunnableJobExecutorJobType], PlainValidator(validate_open_enum(False))
318
+ ] = None
310
319
 
311
320
  ttl: Optional[str] = "4h"
312
321
  r"""Time to keep the job's artifacts on disk after job completion. This also affects how long a job is listed in the Job Inspector."""
@@ -1,14 +1,17 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic.functional_validators import PlainValidator
7
10
  from typing import Any, List, Optional
8
11
  from typing_extensions import Annotated, NotRequired, TypedDict
9
12
 
10
13
 
11
- class RunnableJobScheduledSearchJobType(str, Enum):
14
+ class RunnableJobScheduledSearchJobType(str, Enum, metaclass=utils.OpenEnumMeta):
12
15
  COLLECTION = "collection"
13
16
  EXECUTOR = "executor"
14
17
  SCHEDULED_SEARCH = "scheduledSearch"
@@ -229,7 +232,9 @@ class RunnableJobScheduledSearchTypedDict(TypedDict):
229
232
 
230
233
 
231
234
  class RunnableJobScheduledSearch(BaseModel):
232
- type: RunnableJobScheduledSearchJobType
235
+ type: Annotated[
236
+ RunnableJobScheduledSearchJobType, PlainValidator(validate_open_enum(False))
237
+ ]
233
238
 
234
239
  saved_query_id: Annotated[str, pydantic.Field(alias="savedQueryId")]
235
240
  r"""Identifies which search query to run"""
@@ -4,8 +4,14 @@ from __future__ import annotations
4
4
  from .configgroup import ConfigGroup, ConfigGroupTypedDict
5
5
  from .productscore import ProductsCore
6
6
  from cribl_control_plane.types import BaseModel
7
- from cribl_control_plane.utils import FieldMetadata, PathParamMetadata, RequestMetadata
7
+ from cribl_control_plane.utils import (
8
+ FieldMetadata,
9
+ PathParamMetadata,
10
+ RequestMetadata,
11
+ validate_open_enum,
12
+ )
8
13
  import pydantic
14
+ from pydantic.functional_validators import PlainValidator
9
15
  from typing import List, Optional
10
16
  from typing_extensions import Annotated, NotRequired, TypedDict
11
17
 
@@ -21,7 +27,7 @@ class UpdateConfigGroupByProductAndIDRequestTypedDict(TypedDict):
21
27
 
22
28
  class UpdateConfigGroupByProductAndIDRequest(BaseModel):
23
29
  product: Annotated[
24
- ProductsCore,
30
+ Annotated[ProductsCore, PlainValidator(validate_open_enum(False))],
25
31
  FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
26
32
  ]
27
33
  r"""Name of the Cribl product to get the Worker Groups or Edge Fleets for."""