cribl-control-plane 0.0.13__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 (197) hide show
  1. cribl_control_plane/__init__.py +17 -0
  2. cribl_control_plane/_hooks/__init__.py +5 -0
  3. cribl_control_plane/_hooks/clientcredentials.py +211 -0
  4. cribl_control_plane/_hooks/registration.py +13 -0
  5. cribl_control_plane/_hooks/sdkhooks.py +81 -0
  6. cribl_control_plane/_hooks/types.py +112 -0
  7. cribl_control_plane/_version.py +15 -0
  8. cribl_control_plane/auth_sdk.py +184 -0
  9. cribl_control_plane/basesdk.py +358 -0
  10. cribl_control_plane/errors/__init__.py +60 -0
  11. cribl_control_plane/errors/apierror.py +38 -0
  12. cribl_control_plane/errors/criblcontrolplaneerror.py +26 -0
  13. cribl_control_plane/errors/error.py +24 -0
  14. cribl_control_plane/errors/healthstatus_error.py +38 -0
  15. cribl_control_plane/errors/no_response_error.py +13 -0
  16. cribl_control_plane/errors/responsevalidationerror.py +25 -0
  17. cribl_control_plane/health.py +166 -0
  18. cribl_control_plane/httpclient.py +126 -0
  19. cribl_control_plane/models/__init__.py +7305 -0
  20. cribl_control_plane/models/addhectokenrequest.py +34 -0
  21. cribl_control_plane/models/authtoken.py +13 -0
  22. cribl_control_plane/models/createinputhectokenbyidop.py +45 -0
  23. cribl_control_plane/models/createinputop.py +24 -0
  24. cribl_control_plane/models/createoutputop.py +24 -0
  25. cribl_control_plane/models/createoutputtestbyidop.py +46 -0
  26. cribl_control_plane/models/criblevent.py +14 -0
  27. cribl_control_plane/models/deleteinputbyidop.py +37 -0
  28. cribl_control_plane/models/deleteoutputbyidop.py +37 -0
  29. cribl_control_plane/models/deleteoutputpqbyidop.py +36 -0
  30. cribl_control_plane/models/getinputbyidop.py +37 -0
  31. cribl_control_plane/models/getoutputbyidop.py +37 -0
  32. cribl_control_plane/models/getoutputpqbyidop.py +36 -0
  33. cribl_control_plane/models/getoutputsamplesbyidop.py +37 -0
  34. cribl_control_plane/models/healthstatus.py +36 -0
  35. cribl_control_plane/models/input.py +199 -0
  36. cribl_control_plane/models/inputappscope.py +448 -0
  37. cribl_control_plane/models/inputazureblob.py +308 -0
  38. cribl_control_plane/models/inputcollection.py +208 -0
  39. cribl_control_plane/models/inputconfluentcloud.py +585 -0
  40. cribl_control_plane/models/inputcribl.py +165 -0
  41. cribl_control_plane/models/inputcriblhttp.py +341 -0
  42. cribl_control_plane/models/inputcribllakehttp.py +342 -0
  43. cribl_control_plane/models/inputcriblmetrics.py +175 -0
  44. cribl_control_plane/models/inputcribltcp.py +299 -0
  45. cribl_control_plane/models/inputcrowdstrike.py +410 -0
  46. cribl_control_plane/models/inputdatadogagent.py +364 -0
  47. cribl_control_plane/models/inputdatagen.py +180 -0
  48. cribl_control_plane/models/inputedgeprometheus.py +551 -0
  49. cribl_control_plane/models/inputelastic.py +494 -0
  50. cribl_control_plane/models/inputeventhub.py +360 -0
  51. cribl_control_plane/models/inputexec.py +213 -0
  52. cribl_control_plane/models/inputfile.py +259 -0
  53. cribl_control_plane/models/inputfirehose.py +341 -0
  54. cribl_control_plane/models/inputgooglepubsub.py +247 -0
  55. cribl_control_plane/models/inputgrafana_union.py +1247 -0
  56. cribl_control_plane/models/inputhttp.py +403 -0
  57. cribl_control_plane/models/inputhttpraw.py +407 -0
  58. cribl_control_plane/models/inputjournalfiles.py +208 -0
  59. cribl_control_plane/models/inputkafka.py +581 -0
  60. cribl_control_plane/models/inputkinesis.py +363 -0
  61. cribl_control_plane/models/inputkubeevents.py +182 -0
  62. cribl_control_plane/models/inputkubelogs.py +256 -0
  63. cribl_control_plane/models/inputkubemetrics.py +233 -0
  64. cribl_control_plane/models/inputloki.py +468 -0
  65. cribl_control_plane/models/inputmetrics.py +290 -0
  66. cribl_control_plane/models/inputmodeldriventelemetry.py +274 -0
  67. cribl_control_plane/models/inputmsk.py +654 -0
  68. cribl_control_plane/models/inputnetflow.py +224 -0
  69. cribl_control_plane/models/inputoffice365mgmt.py +384 -0
  70. cribl_control_plane/models/inputoffice365msgtrace.py +449 -0
  71. cribl_control_plane/models/inputoffice365service.py +377 -0
  72. cribl_control_plane/models/inputopentelemetry.py +516 -0
  73. cribl_control_plane/models/inputprometheus.py +464 -0
  74. cribl_control_plane/models/inputprometheusrw.py +470 -0
  75. cribl_control_plane/models/inputrawudp.py +207 -0
  76. cribl_control_plane/models/inputs3.py +416 -0
  77. cribl_control_plane/models/inputs3inventory.py +440 -0
  78. cribl_control_plane/models/inputsecuritylake.py +425 -0
  79. cribl_control_plane/models/inputsnmp.py +274 -0
  80. cribl_control_plane/models/inputsplunk.py +387 -0
  81. cribl_control_plane/models/inputsplunkhec.py +478 -0
  82. cribl_control_plane/models/inputsplunksearch.py +537 -0
  83. cribl_control_plane/models/inputsqs.py +320 -0
  84. cribl_control_plane/models/inputsyslog_union.py +759 -0
  85. cribl_control_plane/models/inputsystemmetrics.py +533 -0
  86. cribl_control_plane/models/inputsystemstate.py +417 -0
  87. cribl_control_plane/models/inputtcp.py +359 -0
  88. cribl_control_plane/models/inputtcpjson.py +334 -0
  89. cribl_control_plane/models/inputwef.py +498 -0
  90. cribl_control_plane/models/inputwindowsmetrics.py +457 -0
  91. cribl_control_plane/models/inputwineventlogs.py +222 -0
  92. cribl_control_plane/models/inputwiz.py +334 -0
  93. cribl_control_plane/models/inputzscalerhec.py +439 -0
  94. cribl_control_plane/models/listinputop.py +24 -0
  95. cribl_control_plane/models/listoutputop.py +24 -0
  96. cribl_control_plane/models/logininfo.py +16 -0
  97. cribl_control_plane/models/output.py +229 -0
  98. cribl_control_plane/models/outputazureblob.py +471 -0
  99. cribl_control_plane/models/outputazuredataexplorer.py +660 -0
  100. cribl_control_plane/models/outputazureeventhub.py +321 -0
  101. cribl_control_plane/models/outputazurelogs.py +386 -0
  102. cribl_control_plane/models/outputclickhouse.py +650 -0
  103. cribl_control_plane/models/outputcloudwatch.py +273 -0
  104. cribl_control_plane/models/outputconfluentcloud.py +591 -0
  105. cribl_control_plane/models/outputcriblhttp.py +494 -0
  106. cribl_control_plane/models/outputcribllake.py +396 -0
  107. cribl_control_plane/models/outputcribltcp.py +387 -0
  108. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +410 -0
  109. cribl_control_plane/models/outputdatadog.py +472 -0
  110. cribl_control_plane/models/outputdataset.py +437 -0
  111. cribl_control_plane/models/outputdefault.py +55 -0
  112. cribl_control_plane/models/outputdevnull.py +50 -0
  113. cribl_control_plane/models/outputdiskspool.py +89 -0
  114. cribl_control_plane/models/outputdls3.py +560 -0
  115. cribl_control_plane/models/outputdynatracehttp.py +454 -0
  116. cribl_control_plane/models/outputdynatraceotlp.py +486 -0
  117. cribl_control_plane/models/outputelastic.py +494 -0
  118. cribl_control_plane/models/outputelasticcloud.py +407 -0
  119. cribl_control_plane/models/outputexabeam.py +297 -0
  120. cribl_control_plane/models/outputfilesystem.py +357 -0
  121. cribl_control_plane/models/outputgooglechronicle.py +486 -0
  122. cribl_control_plane/models/outputgooglecloudlogging.py +557 -0
  123. cribl_control_plane/models/outputgooglecloudstorage.py +499 -0
  124. cribl_control_plane/models/outputgooglepubsub.py +274 -0
  125. cribl_control_plane/models/outputgrafanacloud_union.py +1024 -0
  126. cribl_control_plane/models/outputgraphite.py +225 -0
  127. cribl_control_plane/models/outputhoneycomb.py +369 -0
  128. cribl_control_plane/models/outputhumiohec.py +389 -0
  129. cribl_control_plane/models/outputinfluxdb.py +523 -0
  130. cribl_control_plane/models/outputkafka.py +581 -0
  131. cribl_control_plane/models/outputkinesis.py +312 -0
  132. cribl_control_plane/models/outputloki.py +425 -0
  133. cribl_control_plane/models/outputminio.py +512 -0
  134. cribl_control_plane/models/outputmsk.py +654 -0
  135. cribl_control_plane/models/outputnetflow.py +80 -0
  136. cribl_control_plane/models/outputnewrelic.py +424 -0
  137. cribl_control_plane/models/outputnewrelicevents.py +401 -0
  138. cribl_control_plane/models/outputopentelemetry.py +669 -0
  139. cribl_control_plane/models/outputprometheus.py +485 -0
  140. cribl_control_plane/models/outputring.py +121 -0
  141. cribl_control_plane/models/outputrouter.py +83 -0
  142. cribl_control_plane/models/outputs3.py +556 -0
  143. cribl_control_plane/models/outputsamplesresponse.py +14 -0
  144. cribl_control_plane/models/outputsecuritylake.py +505 -0
  145. cribl_control_plane/models/outputsentinel.py +488 -0
  146. cribl_control_plane/models/outputsentineloneaisiem.py +505 -0
  147. cribl_control_plane/models/outputservicenow.py +543 -0
  148. cribl_control_plane/models/outputsignalfx.py +369 -0
  149. cribl_control_plane/models/outputsnmp.py +80 -0
  150. cribl_control_plane/models/outputsns.py +274 -0
  151. cribl_control_plane/models/outputsplunk.py +383 -0
  152. cribl_control_plane/models/outputsplunkhec.py +434 -0
  153. cribl_control_plane/models/outputsplunklb.py +558 -0
  154. cribl_control_plane/models/outputsqs.py +328 -0
  155. cribl_control_plane/models/outputstatsd.py +224 -0
  156. cribl_control_plane/models/outputstatsdext.py +225 -0
  157. cribl_control_plane/models/outputsumologic.py +378 -0
  158. cribl_control_plane/models/outputsyslog.py +415 -0
  159. cribl_control_plane/models/outputtcpjson.py +413 -0
  160. cribl_control_plane/models/outputtestrequest.py +15 -0
  161. cribl_control_plane/models/outputtestresponse.py +29 -0
  162. cribl_control_plane/models/outputwavefront.py +369 -0
  163. cribl_control_plane/models/outputwebhook.py +689 -0
  164. cribl_control_plane/models/outputxsiam.py +415 -0
  165. cribl_control_plane/models/schemeclientoauth.py +24 -0
  166. cribl_control_plane/models/security.py +36 -0
  167. cribl_control_plane/models/updatehectokenrequest.py +31 -0
  168. cribl_control_plane/models/updateinputbyidop.py +44 -0
  169. cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +52 -0
  170. cribl_control_plane/models/updateoutputbyidop.py +44 -0
  171. cribl_control_plane/outputs.py +1615 -0
  172. cribl_control_plane/py.typed +1 -0
  173. cribl_control_plane/sdk.py +164 -0
  174. cribl_control_plane/sdkconfiguration.py +36 -0
  175. cribl_control_plane/sources.py +1355 -0
  176. cribl_control_plane/types/__init__.py +21 -0
  177. cribl_control_plane/types/basemodel.py +39 -0
  178. cribl_control_plane/utils/__init__.py +187 -0
  179. cribl_control_plane/utils/annotations.py +55 -0
  180. cribl_control_plane/utils/datetimes.py +23 -0
  181. cribl_control_plane/utils/enums.py +74 -0
  182. cribl_control_plane/utils/eventstreaming.py +238 -0
  183. cribl_control_plane/utils/forms.py +223 -0
  184. cribl_control_plane/utils/headers.py +136 -0
  185. cribl_control_plane/utils/logger.py +27 -0
  186. cribl_control_plane/utils/metadata.py +118 -0
  187. cribl_control_plane/utils/queryparams.py +205 -0
  188. cribl_control_plane/utils/requestbodies.py +66 -0
  189. cribl_control_plane/utils/retries.py +217 -0
  190. cribl_control_plane/utils/security.py +207 -0
  191. cribl_control_plane/utils/serializers.py +249 -0
  192. cribl_control_plane/utils/unmarshal_json_response.py +24 -0
  193. cribl_control_plane/utils/url.py +155 -0
  194. cribl_control_plane/utils/values.py +137 -0
  195. cribl_control_plane-0.0.13.dist-info/METADATA +489 -0
  196. cribl_control_plane-0.0.13.dist-info/RECORD +197 -0
  197. cribl_control_plane-0.0.13.dist-info/WHEEL +4 -0
@@ -0,0 +1,498 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from cribl_control_plane import utils
5
+ from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
7
+ from enum import Enum
8
+ import pydantic
9
+ from pydantic.functional_validators import PlainValidator
10
+ from typing import Any, List, Optional
11
+ from typing_extensions import Annotated, NotRequired, TypedDict
12
+
13
+
14
+ class InputWefType(str, Enum, metaclass=utils.OpenEnumMeta):
15
+ WEF = "wef"
16
+
17
+
18
+ class InputWefConnectionTypedDict(TypedDict):
19
+ output: str
20
+ pipeline: NotRequired[str]
21
+
22
+
23
+ class InputWefConnection(BaseModel):
24
+ output: str
25
+
26
+ pipeline: Optional[str] = None
27
+
28
+
29
+ class InputWefMode(str, Enum, metaclass=utils.OpenEnumMeta):
30
+ r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
31
+
32
+ SMART = "smart"
33
+ ALWAYS = "always"
34
+
35
+
36
+ class InputWefCompression(str, Enum, metaclass=utils.OpenEnumMeta):
37
+ r"""Codec to use to compress the persisted data"""
38
+
39
+ NONE = "none"
40
+ GZIP = "gzip"
41
+
42
+
43
+ class InputWefPqTypedDict(TypedDict):
44
+ mode: NotRequired[InputWefMode]
45
+ r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
46
+ max_buffer_size: NotRequired[float]
47
+ r"""The maximum number of events to hold in memory before writing the events to disk"""
48
+ commit_frequency: NotRequired[float]
49
+ r"""The number of events to send downstream before committing that Stream has read them"""
50
+ max_file_size: NotRequired[str]
51
+ r"""The maximum size to store in each queue file before closing and optionally compressing. Enter a numeral with units of KB, MB, etc."""
52
+ max_size: NotRequired[str]
53
+ r"""The maximum disk space that the queue can consume (as an average per Worker Process) before queueing stops. Enter a numeral with units of KB, MB, etc."""
54
+ path: NotRequired[str]
55
+ r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
56
+ compress: NotRequired[InputWefCompression]
57
+ r"""Codec to use to compress the persisted data"""
58
+
59
+
60
+ class InputWefPq(BaseModel):
61
+ mode: Annotated[
62
+ Optional[InputWefMode], PlainValidator(validate_open_enum(False))
63
+ ] = InputWefMode.ALWAYS
64
+ r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
65
+
66
+ max_buffer_size: Annotated[
67
+ Optional[float], pydantic.Field(alias="maxBufferSize")
68
+ ] = 1000
69
+ r"""The maximum number of events to hold in memory before writing the events to disk"""
70
+
71
+ commit_frequency: Annotated[
72
+ Optional[float], pydantic.Field(alias="commitFrequency")
73
+ ] = 42
74
+ r"""The number of events to send downstream before committing that Stream has read them"""
75
+
76
+ max_file_size: Annotated[Optional[str], pydantic.Field(alias="maxFileSize")] = (
77
+ "1 MB"
78
+ )
79
+ r"""The maximum size to store in each queue file before closing and optionally compressing. Enter a numeral with units of KB, MB, etc."""
80
+
81
+ max_size: Annotated[Optional[str], pydantic.Field(alias="maxSize")] = "5GB"
82
+ r"""The maximum disk space that the queue can consume (as an average per Worker Process) before queueing stops. Enter a numeral with units of KB, MB, etc."""
83
+
84
+ path: Optional[str] = "$CRIBL_HOME/state/queues"
85
+ r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
86
+
87
+ compress: Annotated[
88
+ Optional[InputWefCompression], PlainValidator(validate_open_enum(False))
89
+ ] = InputWefCompression.NONE
90
+ r"""Codec to use to compress the persisted data"""
91
+
92
+
93
+ class InputWefAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
94
+ r"""How to authenticate incoming client connections"""
95
+
96
+ CLIENT_CERT = "clientCert"
97
+ KERBEROS = "kerberos"
98
+
99
+
100
+ class InputWefMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
101
+ TL_SV1 = "TLSv1"
102
+ TL_SV1_1 = "TLSv1.1"
103
+ TL_SV1_2 = "TLSv1.2"
104
+ TL_SV1_3 = "TLSv1.3"
105
+
106
+
107
+ class InputWefMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
108
+ TL_SV1 = "TLSv1"
109
+ TL_SV1_1 = "TLSv1.1"
110
+ TL_SV1_2 = "TLSv1.2"
111
+ TL_SV1_3 = "TLSv1.3"
112
+
113
+
114
+ class MTLSSettingsTypedDict(TypedDict):
115
+ priv_key_path: str
116
+ r"""Path on server containing the private key to use. PEM format. Can reference $ENV_VARS."""
117
+ cert_path: str
118
+ r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
119
+ ca_path: str
120
+ r"""Server path containing CA certificates (in PEM format) to use. Can reference $ENV_VARS. If multiple certificates are present in a .pem, each must directly certify the one preceding it."""
121
+ disabled: NotRequired[bool]
122
+ r"""Enable TLS"""
123
+ reject_unauthorized: NotRequired[bool]
124
+ r"""Required for WEF certificate authentication"""
125
+ request_cert: NotRequired[bool]
126
+ r"""Required for WEF certificate authentication"""
127
+ certificate_name: NotRequired[str]
128
+ r"""Name of the predefined certificate"""
129
+ passphrase: NotRequired[str]
130
+ r"""Passphrase to use to decrypt private key"""
131
+ common_name_regex: NotRequired[str]
132
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
133
+ min_version: NotRequired[InputWefMinimumTLSVersion]
134
+ max_version: NotRequired[InputWefMaximumTLSVersion]
135
+ ocsp_check: NotRequired[bool]
136
+ r"""Enable OCSP check of certificate"""
137
+ keytab: NotRequired[Any]
138
+ principal: NotRequired[Any]
139
+ ocsp_check_fail_close: NotRequired[bool]
140
+ r"""If enabled, checks will fail on any OCSP error. Otherwise, checks will fail only when a certificate is revoked, ignoring other errors."""
141
+
142
+
143
+ class MTLSSettings(BaseModel):
144
+ priv_key_path: Annotated[str, pydantic.Field(alias="privKeyPath")]
145
+ r"""Path on server containing the private key to use. PEM format. Can reference $ENV_VARS."""
146
+
147
+ cert_path: Annotated[str, pydantic.Field(alias="certPath")]
148
+ r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
149
+
150
+ ca_path: Annotated[str, pydantic.Field(alias="caPath")]
151
+ r"""Server path containing CA certificates (in PEM format) to use. Can reference $ENV_VARS. If multiple certificates are present in a .pem, each must directly certify the one preceding it."""
152
+
153
+ disabled: Optional[bool] = False
154
+ r"""Enable TLS"""
155
+
156
+ reject_unauthorized: Annotated[
157
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
158
+ ] = True
159
+ r"""Required for WEF certificate authentication"""
160
+
161
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = True
162
+ r"""Required for WEF certificate authentication"""
163
+
164
+ certificate_name: Annotated[
165
+ Optional[str], pydantic.Field(alias="certificateName")
166
+ ] = None
167
+ r"""Name of the predefined certificate"""
168
+
169
+ passphrase: Optional[str] = None
170
+ r"""Passphrase to use to decrypt private key"""
171
+
172
+ common_name_regex: Annotated[
173
+ Optional[str], pydantic.Field(alias="commonNameRegex")
174
+ ] = "/.*/"
175
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
176
+
177
+ min_version: Annotated[
178
+ Annotated[
179
+ Optional[InputWefMinimumTLSVersion],
180
+ PlainValidator(validate_open_enum(False)),
181
+ ],
182
+ pydantic.Field(alias="minVersion"),
183
+ ] = None
184
+
185
+ max_version: Annotated[
186
+ Annotated[
187
+ Optional[InputWefMaximumTLSVersion],
188
+ PlainValidator(validate_open_enum(False)),
189
+ ],
190
+ pydantic.Field(alias="maxVersion"),
191
+ ] = None
192
+
193
+ ocsp_check: Annotated[Optional[bool], pydantic.Field(alias="ocspCheck")] = False
194
+ r"""Enable OCSP check of certificate"""
195
+
196
+ keytab: Optional[Any] = None
197
+
198
+ principal: Optional[Any] = None
199
+
200
+ ocsp_check_fail_close: Annotated[
201
+ Optional[bool], pydantic.Field(alias="ocspCheckFailClose")
202
+ ] = False
203
+ r"""If enabled, checks will fail on any OCSP error. Otherwise, checks will fail only when a certificate is revoked, ignoring other errors."""
204
+
205
+
206
+ class InputWefFormat(str, Enum, metaclass=utils.OpenEnumMeta):
207
+ r"""Content format in which the endpoint should deliver events"""
208
+
209
+ RAW = "Raw"
210
+ RENDERED_TEXT = "RenderedText"
211
+
212
+
213
+ class QueryBuilderMode(str, Enum, metaclass=utils.OpenEnumMeta):
214
+ SIMPLE = "simple"
215
+ XML = "xml"
216
+
217
+
218
+ class SubscriptionMetadatumTypedDict(TypedDict):
219
+ name: str
220
+ value: str
221
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
222
+
223
+
224
+ class SubscriptionMetadatum(BaseModel):
225
+ name: str
226
+
227
+ value: str
228
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
229
+
230
+
231
+ class SubscriptionTypedDict(TypedDict):
232
+ subscription_name: str
233
+ targets: List[str]
234
+ r"""The DNS names of the endpoints that should forward these events. You may use wildcards, such as *.mydomain.com"""
235
+ version: NotRequired[str]
236
+ r"""Version UUID for this subscription. If any subscription parameters are modified, this value will change."""
237
+ content_format: NotRequired[InputWefFormat]
238
+ r"""Content format in which the endpoint should deliver events"""
239
+ heartbeat_interval: NotRequired[float]
240
+ r"""Maximum time (in seconds) between endpoint checkins before considering it unavailable"""
241
+ batch_timeout: NotRequired[float]
242
+ r"""Interval (in seconds) over which the endpoint should collect events before sending them to Stream"""
243
+ read_existing_events: NotRequired[bool]
244
+ r"""Newly subscribed endpoints will send previously existing events. Disable to receive new events only."""
245
+ send_bookmarks: NotRequired[bool]
246
+ r"""Keep track of which events have been received, resuming from that point after a re-subscription. This setting takes precedence over 'Read existing events'. See [Cribl Docs](https://docs.cribl.io/stream/sources-wef/#subscriptions) for more details."""
247
+ compress: NotRequired[bool]
248
+ r"""Receive compressed events from the source"""
249
+ locale: NotRequired[str]
250
+ r"""The RFC-3066 locale the Windows clients should use when sending events. Defaults to \"en-US\"."""
251
+ query_selector: NotRequired[QueryBuilderMode]
252
+ metadata: NotRequired[List[SubscriptionMetadatumTypedDict]]
253
+ r"""Fields to add to events ingested under this subscription"""
254
+
255
+
256
+ class Subscription(BaseModel):
257
+ subscription_name: Annotated[str, pydantic.Field(alias="subscriptionName")]
258
+
259
+ targets: List[str]
260
+ r"""The DNS names of the endpoints that should forward these events. You may use wildcards, such as *.mydomain.com"""
261
+
262
+ version: Optional[str] = None
263
+ r"""Version UUID for this subscription. If any subscription parameters are modified, this value will change."""
264
+
265
+ content_format: Annotated[
266
+ Annotated[Optional[InputWefFormat], PlainValidator(validate_open_enum(False))],
267
+ pydantic.Field(alias="contentFormat"),
268
+ ] = InputWefFormat.RAW
269
+ r"""Content format in which the endpoint should deliver events"""
270
+
271
+ heartbeat_interval: Annotated[
272
+ Optional[float], pydantic.Field(alias="heartbeatInterval")
273
+ ] = 60
274
+ r"""Maximum time (in seconds) between endpoint checkins before considering it unavailable"""
275
+
276
+ batch_timeout: Annotated[Optional[float], pydantic.Field(alias="batchTimeout")] = 60
277
+ r"""Interval (in seconds) over which the endpoint should collect events before sending them to Stream"""
278
+
279
+ read_existing_events: Annotated[
280
+ Optional[bool], pydantic.Field(alias="readExistingEvents")
281
+ ] = False
282
+ r"""Newly subscribed endpoints will send previously existing events. Disable to receive new events only."""
283
+
284
+ send_bookmarks: Annotated[Optional[bool], pydantic.Field(alias="sendBookmarks")] = (
285
+ True
286
+ )
287
+ r"""Keep track of which events have been received, resuming from that point after a re-subscription. This setting takes precedence over 'Read existing events'. See [Cribl Docs](https://docs.cribl.io/stream/sources-wef/#subscriptions) for more details."""
288
+
289
+ compress: Optional[bool] = True
290
+ r"""Receive compressed events from the source"""
291
+
292
+ locale: Optional[str] = "en-US"
293
+ r"""The RFC-3066 locale the Windows clients should use when sending events. Defaults to \"en-US\"."""
294
+
295
+ query_selector: Annotated[
296
+ Annotated[
297
+ Optional[QueryBuilderMode], PlainValidator(validate_open_enum(False))
298
+ ],
299
+ pydantic.Field(alias="querySelector"),
300
+ ] = QueryBuilderMode.SIMPLE
301
+
302
+ metadata: Optional[List[SubscriptionMetadatum]] = None
303
+ r"""Fields to add to events ingested under this subscription"""
304
+
305
+
306
+ class InputWefMetadatumTypedDict(TypedDict):
307
+ name: str
308
+ value: str
309
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
310
+
311
+
312
+ class InputWefMetadatum(BaseModel):
313
+ name: str
314
+
315
+ value: str
316
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
317
+
318
+
319
+ class InputWefTypedDict(TypedDict):
320
+ type: InputWefType
321
+ subscriptions: List[SubscriptionTypedDict]
322
+ r"""Subscriptions to events on forwarding endpoints"""
323
+ id: NotRequired[str]
324
+ r"""Unique ID for this input"""
325
+ disabled: NotRequired[bool]
326
+ pipeline: NotRequired[str]
327
+ r"""Pipeline to process data from this Source before sending it through the Routes"""
328
+ send_to_routes: NotRequired[bool]
329
+ r"""Select whether to send data to Routes, or directly to Destinations."""
330
+ environment: NotRequired[str]
331
+ r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
332
+ pq_enabled: NotRequired[bool]
333
+ r"""Use a disk queue to minimize data loss when connected services block. See [Cribl Docs](https://docs.cribl.io/stream/persistent-queues) for PQ defaults (Cribl-managed Cloud Workers) and configuration options (on-prem and hybrid Workers)."""
334
+ streamtags: NotRequired[List[str]]
335
+ r"""Tags for filtering and grouping in @{product}"""
336
+ connections: NotRequired[List[InputWefConnectionTypedDict]]
337
+ r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
338
+ pq: NotRequired[InputWefPqTypedDict]
339
+ host: NotRequired[str]
340
+ r"""Address to bind on. Defaults to 0.0.0.0 (all addresses)."""
341
+ port: NotRequired[float]
342
+ r"""Port to listen on"""
343
+ auth_method: NotRequired[InputWefAuthenticationMethod]
344
+ r"""How to authenticate incoming client connections"""
345
+ tls: NotRequired[MTLSSettingsTypedDict]
346
+ max_active_req: NotRequired[float]
347
+ r"""Maximum number of active requests allowed per Worker Process. Set to 0 for unlimited. Caution: Increasing the limit above the default value, or setting it to unlimited, may degrade performance and reduce throughput."""
348
+ max_requests_per_socket: NotRequired[int]
349
+ r"""Maximum number of requests per socket before @{product} instructs the client to close the connection. Default is 0 (unlimited)."""
350
+ enable_proxy_header: NotRequired[bool]
351
+ r"""Preserve the client’s original IP address in the __srcIpPort field when connecting through an HTTP proxy that supports the X-Forwarded-For header. This does not apply to TCP-layer Proxy Protocol v1/v2."""
352
+ capture_headers: NotRequired[bool]
353
+ r"""Add request headers to events in the __headers field"""
354
+ keep_alive_timeout: NotRequired[float]
355
+ r"""After the last response is sent, @{product} will wait this long for additional data before closing the socket connection. Minimum 1 second, maximum 600 seconds (10 minutes)."""
356
+ enable_health_check: NotRequired[bool]
357
+ r"""Expose the /cribl_health endpoint, which returns 200 OK when this Source is healthy"""
358
+ ip_allowlist_regex: NotRequired[str]
359
+ r"""Messages from matched IP addresses will be processed, unless also matched by the denylist"""
360
+ ip_denylist_regex: NotRequired[str]
361
+ r"""Messages from matched IP addresses will be ignored. This takes precedence over the allowlist."""
362
+ socket_timeout: NotRequired[float]
363
+ r"""How long @{product} should wait before assuming that an inactive socket has timed out. To wait forever, set to 0."""
364
+ ca_fingerprint: NotRequired[str]
365
+ r"""SHA1 fingerprint expected by the client, if it does not match the first certificate in the configured CA chain"""
366
+ keytab: NotRequired[str]
367
+ r"""Path to the keytab file containing the service principal credentials. @{product} will use `/etc/krb5.keytab` if not provided."""
368
+ principal: NotRequired[str]
369
+ r"""Kerberos principal used for authentication, typically in the form HTTP/<hostname>@<REALM>"""
370
+ allow_machine_id_mismatch: NotRequired[bool]
371
+ r"""Allow events to be ingested even if their MachineID does not match the client certificate CN"""
372
+ metadata: NotRequired[List[InputWefMetadatumTypedDict]]
373
+ r"""Fields to add to events from this input"""
374
+ description: NotRequired[str]
375
+ log_fingerprint_mismatch: NotRequired[bool]
376
+ r"""Log a warning if the client certificate authority (CA) fingerprint does not match the expected value. A mismatch prevents Cribl from receiving events from the Windows Event Forwarder."""
377
+
378
+
379
+ class InputWef(BaseModel):
380
+ type: Annotated[InputWefType, PlainValidator(validate_open_enum(False))]
381
+
382
+ subscriptions: List[Subscription]
383
+ r"""Subscriptions to events on forwarding endpoints"""
384
+
385
+ id: Optional[str] = None
386
+ r"""Unique ID for this input"""
387
+
388
+ disabled: Optional[bool] = False
389
+
390
+ pipeline: Optional[str] = None
391
+ r"""Pipeline to process data from this Source before sending it through the Routes"""
392
+
393
+ send_to_routes: Annotated[Optional[bool], pydantic.Field(alias="sendToRoutes")] = (
394
+ True
395
+ )
396
+ r"""Select whether to send data to Routes, or directly to Destinations."""
397
+
398
+ environment: Optional[str] = None
399
+ r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
400
+
401
+ pq_enabled: Annotated[Optional[bool], pydantic.Field(alias="pqEnabled")] = False
402
+ r"""Use a disk queue to minimize data loss when connected services block. See [Cribl Docs](https://docs.cribl.io/stream/persistent-queues) for PQ defaults (Cribl-managed Cloud Workers) and configuration options (on-prem and hybrid Workers)."""
403
+
404
+ streamtags: Optional[List[str]] = None
405
+ r"""Tags for filtering and grouping in @{product}"""
406
+
407
+ connections: Optional[List[InputWefConnection]] = None
408
+ r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
409
+
410
+ pq: Optional[InputWefPq] = None
411
+
412
+ host: Optional[str] = "0.0.0.0"
413
+ r"""Address to bind on. Defaults to 0.0.0.0 (all addresses)."""
414
+
415
+ port: Optional[float] = 5986
416
+ r"""Port to listen on"""
417
+
418
+ auth_method: Annotated[
419
+ Annotated[
420
+ Optional[InputWefAuthenticationMethod],
421
+ PlainValidator(validate_open_enum(False)),
422
+ ],
423
+ pydantic.Field(alias="authMethod"),
424
+ ] = InputWefAuthenticationMethod.CLIENT_CERT
425
+ r"""How to authenticate incoming client connections"""
426
+
427
+ tls: Optional[MTLSSettings] = None
428
+
429
+ max_active_req: Annotated[Optional[float], pydantic.Field(alias="maxActiveReq")] = (
430
+ 256
431
+ )
432
+ r"""Maximum number of active requests allowed per Worker Process. Set to 0 for unlimited. Caution: Increasing the limit above the default value, or setting it to unlimited, may degrade performance and reduce throughput."""
433
+
434
+ max_requests_per_socket: Annotated[
435
+ Optional[int], pydantic.Field(alias="maxRequestsPerSocket")
436
+ ] = 0
437
+ r"""Maximum number of requests per socket before @{product} instructs the client to close the connection. Default is 0 (unlimited)."""
438
+
439
+ enable_proxy_header: Annotated[
440
+ Optional[bool], pydantic.Field(alias="enableProxyHeader")
441
+ ] = False
442
+ r"""Preserve the client’s original IP address in the __srcIpPort field when connecting through an HTTP proxy that supports the X-Forwarded-For header. This does not apply to TCP-layer Proxy Protocol v1/v2."""
443
+
444
+ capture_headers: Annotated[
445
+ Optional[bool], pydantic.Field(alias="captureHeaders")
446
+ ] = False
447
+ r"""Add request headers to events in the __headers field"""
448
+
449
+ keep_alive_timeout: Annotated[
450
+ Optional[float], pydantic.Field(alias="keepAliveTimeout")
451
+ ] = 90
452
+ r"""After the last response is sent, @{product} will wait this long for additional data before closing the socket connection. Minimum 1 second, maximum 600 seconds (10 minutes)."""
453
+
454
+ enable_health_check: Annotated[
455
+ Optional[bool], pydantic.Field(alias="enableHealthCheck")
456
+ ] = False
457
+ r"""Expose the /cribl_health endpoint, which returns 200 OK when this Source is healthy"""
458
+
459
+ ip_allowlist_regex: Annotated[
460
+ Optional[str], pydantic.Field(alias="ipAllowlistRegex")
461
+ ] = "/.*/"
462
+ r"""Messages from matched IP addresses will be processed, unless also matched by the denylist"""
463
+
464
+ ip_denylist_regex: Annotated[
465
+ Optional[str], pydantic.Field(alias="ipDenylistRegex")
466
+ ] = "/^$/"
467
+ r"""Messages from matched IP addresses will be ignored. This takes precedence over the allowlist."""
468
+
469
+ socket_timeout: Annotated[
470
+ Optional[float], pydantic.Field(alias="socketTimeout")
471
+ ] = 0
472
+ r"""How long @{product} should wait before assuming that an inactive socket has timed out. To wait forever, set to 0."""
473
+
474
+ ca_fingerprint: Annotated[Optional[str], pydantic.Field(alias="caFingerprint")] = (
475
+ None
476
+ )
477
+ r"""SHA1 fingerprint expected by the client, if it does not match the first certificate in the configured CA chain"""
478
+
479
+ keytab: Optional[str] = None
480
+ r"""Path to the keytab file containing the service principal credentials. @{product} will use `/etc/krb5.keytab` if not provided."""
481
+
482
+ principal: Optional[str] = None
483
+ r"""Kerberos principal used for authentication, typically in the form HTTP/<hostname>@<REALM>"""
484
+
485
+ allow_machine_id_mismatch: Annotated[
486
+ Optional[bool], pydantic.Field(alias="allowMachineIdMismatch")
487
+ ] = False
488
+ r"""Allow events to be ingested even if their MachineID does not match the client certificate CN"""
489
+
490
+ metadata: Optional[List[InputWefMetadatum]] = None
491
+ r"""Fields to add to events from this input"""
492
+
493
+ description: Optional[str] = None
494
+
495
+ log_fingerprint_mismatch: Annotated[
496
+ Optional[bool], pydantic.Field(alias="logFingerprintMismatch")
497
+ ] = False
498
+ r"""Log a warning if the client certificate authority (CA) fingerprint does not match the expected value. A mismatch prevents Cribl from receiving events from the Windows Event Forwarder."""