cribl-control-plane 0.3.0b3__py3-none-any.whl → 0.3.0b12__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 (158) hide show
  1. cribl_control_plane/_version.py +4 -4
  2. cribl_control_plane/groups_sdk.py +2 -2
  3. cribl_control_plane/lakedatasets.py +28 -0
  4. cribl_control_plane/models/__init__.py +124 -5
  5. cribl_control_plane/models/cacheconnection.py +20 -0
  6. cribl_control_plane/models/configgroup.py +20 -1
  7. cribl_control_plane/models/configgroupcloud.py +11 -1
  8. cribl_control_plane/models/createconfiggroupbyproductop.py +13 -2
  9. cribl_control_plane/models/cribllakedataset.py +15 -1
  10. cribl_control_plane/models/cribllakedatasetupdate.py +15 -1
  11. cribl_control_plane/models/datasetmetadata.py +11 -1
  12. cribl_control_plane/models/deleteconfiggroupbyproductandidop.py +11 -0
  13. cribl_control_plane/models/getconfiggroupaclbyproductandidop.py +20 -0
  14. cribl_control_plane/models/getconfiggroupaclteamsbyproductandidop.py +20 -0
  15. cribl_control_plane/models/getconfiggroupbyproductandidop.py +11 -0
  16. cribl_control_plane/models/getconfiggroupconfigversionbyproductandidop.py +11 -0
  17. cribl_control_plane/models/getsummaryop.py +11 -0
  18. cribl_control_plane/models/groupcreaterequest.py +20 -1
  19. cribl_control_plane/models/hbcriblinfo.py +11 -1
  20. cribl_control_plane/models/healthserverstatus.py +20 -1
  21. cribl_control_plane/models/input.py +15 -15
  22. cribl_control_plane/models/inputappscope.py +76 -17
  23. cribl_control_plane/models/inputazureblob.py +29 -1
  24. cribl_control_plane/models/inputcollection.py +20 -1
  25. cribl_control_plane/models/inputconfluentcloud.py +188 -1
  26. cribl_control_plane/models/inputcribl.py +20 -1
  27. cribl_control_plane/models/inputcriblhttp.py +58 -17
  28. cribl_control_plane/models/inputcribllakehttp.py +58 -17
  29. cribl_control_plane/models/inputcriblmetrics.py +20 -1
  30. cribl_control_plane/models/inputcribltcp.py +58 -17
  31. cribl_control_plane/models/inputcrowdstrike.py +47 -1
  32. cribl_control_plane/models/inputdatadogagent.py +58 -17
  33. cribl_control_plane/models/inputdatagen.py +20 -1
  34. cribl_control_plane/models/inputedgeprometheus.py +138 -37
  35. cribl_control_plane/models/inputelastic.py +108 -27
  36. cribl_control_plane/models/inputeventhub.py +176 -1
  37. cribl_control_plane/models/inputexec.py +29 -1
  38. cribl_control_plane/models/inputfile.py +40 -7
  39. cribl_control_plane/models/inputfirehose.py +58 -17
  40. cribl_control_plane/models/inputgooglepubsub.py +29 -1
  41. cribl_control_plane/models/inputgrafana.py +149 -32
  42. cribl_control_plane/models/inputhttp.py +58 -17
  43. cribl_control_plane/models/inputhttpraw.py +58 -17
  44. cribl_control_plane/models/inputjournalfiles.py +20 -1
  45. cribl_control_plane/models/inputkafka.py +182 -1
  46. cribl_control_plane/models/inputkinesis.py +65 -1
  47. cribl_control_plane/models/inputkubeevents.py +20 -1
  48. cribl_control_plane/models/inputkubelogs.py +29 -1
  49. cribl_control_plane/models/inputkubemetrics.py +29 -1
  50. cribl_control_plane/models/inputloki.py +67 -17
  51. cribl_control_plane/models/inputmetrics.py +58 -17
  52. cribl_control_plane/models/inputmodeldriventelemetry.py +58 -17
  53. cribl_control_plane/models/inputmsk.py +74 -1
  54. cribl_control_plane/models/inputnetflow.py +20 -1
  55. cribl_control_plane/models/inputoffice365mgmt.py +56 -1
  56. cribl_control_plane/models/inputoffice365msgtrace.py +56 -1
  57. cribl_control_plane/models/inputoffice365service.py +56 -1
  58. cribl_control_plane/models/inputopentelemetry.py +84 -16
  59. cribl_control_plane/models/inputprometheus.py +131 -37
  60. cribl_control_plane/models/inputprometheusrw.py +67 -17
  61. cribl_control_plane/models/inputrawudp.py +20 -1
  62. cribl_control_plane/models/inputs3.py +38 -1
  63. cribl_control_plane/models/inputs3inventory.py +47 -1
  64. cribl_control_plane/models/inputsecuritylake.py +47 -1
  65. cribl_control_plane/models/inputsnmp.py +29 -1
  66. cribl_control_plane/models/inputsplunk.py +76 -17
  67. cribl_control_plane/models/inputsplunkhec.py +66 -16
  68. cribl_control_plane/models/inputsplunksearch.py +56 -1
  69. cribl_control_plane/models/inputsqs.py +47 -1
  70. cribl_control_plane/models/inputsyslog.py +113 -32
  71. cribl_control_plane/models/inputsystemmetrics.py +110 -9
  72. cribl_control_plane/models/inputsystemstate.py +29 -1
  73. cribl_control_plane/models/inputtcp.py +77 -17
  74. cribl_control_plane/models/inputtcpjson.py +67 -17
  75. cribl_control_plane/models/inputwef.py +65 -1
  76. cribl_control_plane/models/inputwindowsmetrics.py +101 -9
  77. cribl_control_plane/models/inputwineventlogs.py +52 -1
  78. cribl_control_plane/models/inputwiz.py +38 -1
  79. cribl_control_plane/models/inputwizwebhook.py +58 -17
  80. cribl_control_plane/models/inputzscalerhec.py +66 -16
  81. cribl_control_plane/models/jobinfo.py +10 -4
  82. cribl_control_plane/models/jobstatus.py +34 -3
  83. cribl_control_plane/models/lakedatasetmetrics.py +17 -0
  84. cribl_control_plane/models/listconfiggroupbyproductop.py +11 -0
  85. cribl_control_plane/models/masterworkerentry.py +11 -1
  86. cribl_control_plane/models/nodeupgradestatus.py +38 -0
  87. cribl_control_plane/models/output.py +21 -21
  88. cribl_control_plane/models/outputazureblob.py +90 -1
  89. cribl_control_plane/models/outputazuredataexplorer.py +430 -93
  90. cribl_control_plane/models/outputazureeventhub.py +267 -22
  91. cribl_control_plane/models/outputazurelogs.py +105 -22
  92. cribl_control_plane/models/outputchronicle.py +105 -22
  93. cribl_control_plane/models/outputclickhouse.py +141 -22
  94. cribl_control_plane/models/outputcloudwatch.py +96 -22
  95. cribl_control_plane/models/outputconfluentcloud.py +292 -23
  96. cribl_control_plane/models/outputcriblhttp.py +123 -22
  97. cribl_control_plane/models/outputcribllake.py +76 -1
  98. cribl_control_plane/models/outputcribltcp.py +123 -22
  99. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +117 -23
  100. cribl_control_plane/models/outputdatabricks.py +76 -5
  101. cribl_control_plane/models/outputdatadog.py +132 -22
  102. cribl_control_plane/models/outputdataset.py +123 -22
  103. cribl_control_plane/models/outputdiskspool.py +11 -1
  104. cribl_control_plane/models/outputdls3.py +117 -1
  105. cribl_control_plane/models/outputdynatracehttp.py +141 -22
  106. cribl_control_plane/models/outputdynatraceotlp.py +141 -22
  107. cribl_control_plane/models/outputelastic.py +148 -22
  108. cribl_control_plane/models/outputelasticcloud.py +130 -22
  109. cribl_control_plane/models/outputexabeam.py +47 -1
  110. cribl_control_plane/models/outputfilesystem.py +72 -1
  111. cribl_control_plane/models/outputgooglechronicle.py +148 -23
  112. cribl_control_plane/models/outputgooglecloudlogging.py +115 -23
  113. cribl_control_plane/models/outputgooglecloudstorage.py +108 -1
  114. cribl_control_plane/models/outputgooglepubsub.py +96 -22
  115. cribl_control_plane/models/outputgrafanacloud.py +244 -43
  116. cribl_control_plane/models/outputgraphite.py +96 -22
  117. cribl_control_plane/models/outputhoneycomb.py +105 -22
  118. cribl_control_plane/models/outputhumiohec.py +114 -22
  119. cribl_control_plane/models/outputinfluxdb.py +114 -22
  120. cribl_control_plane/models/outputkafka.py +283 -20
  121. cribl_control_plane/models/outputkinesis.py +121 -22
  122. cribl_control_plane/models/outputloki.py +112 -20
  123. cribl_control_plane/models/outputminio.py +117 -1
  124. cribl_control_plane/models/outputmsk.py +175 -20
  125. cribl_control_plane/models/outputnewrelic.py +123 -22
  126. cribl_control_plane/models/outputnewrelicevents.py +115 -23
  127. cribl_control_plane/models/outputopentelemetry.py +159 -22
  128. cribl_control_plane/models/outputprometheus.py +105 -22
  129. cribl_control_plane/models/outputring.py +29 -1
  130. cribl_control_plane/models/outputs3.py +117 -1
  131. cribl_control_plane/models/outputsecuritylake.py +85 -1
  132. cribl_control_plane/models/outputsentinel.py +123 -22
  133. cribl_control_plane/models/outputsentineloneaisiem.py +124 -23
  134. cribl_control_plane/models/outputservicenow.py +150 -22
  135. cribl_control_plane/models/outputsignalfx.py +105 -22
  136. cribl_control_plane/models/outputsns.py +103 -20
  137. cribl_control_plane/models/outputsplunk.py +141 -22
  138. cribl_control_plane/models/outputsplunkhec.py +198 -22
  139. cribl_control_plane/models/outputsplunklb.py +170 -22
  140. cribl_control_plane/models/outputsqs.py +112 -20
  141. cribl_control_plane/models/outputstatsd.py +96 -22
  142. cribl_control_plane/models/outputstatsdext.py +96 -22
  143. cribl_control_plane/models/outputsumologic.py +105 -22
  144. cribl_control_plane/models/outputsyslog.py +238 -99
  145. cribl_control_plane/models/outputtcpjson.py +132 -22
  146. cribl_control_plane/models/outputwavefront.py +105 -22
  147. cribl_control_plane/models/outputwebhook.py +141 -22
  148. cribl_control_plane/models/outputxsiam.py +103 -20
  149. cribl_control_plane/models/resourcepolicy.py +11 -0
  150. cribl_control_plane/models/runnablejobcollection.py +68 -9
  151. cribl_control_plane/models/runnablejobexecutor.py +32 -9
  152. cribl_control_plane/models/runnablejobscheduledsearch.py +23 -9
  153. cribl_control_plane/models/updateconfiggroupbyproductandidop.py +11 -0
  154. cribl_control_plane/models/updateconfiggroupdeploybyproductandidop.py +11 -0
  155. cribl_control_plane/sdk.py +2 -2
  156. {cribl_control_plane-0.3.0b3.dist-info → cribl_control_plane-0.3.0b12.dist-info}/METADATA +25 -7
  157. {cribl_control_plane-0.3.0b3.dist-info → cribl_control_plane-0.3.0b12.dist-info}/RECORD +158 -157
  158. {cribl_control_plane-0.3.0b3.dist-info → cribl_control_plane-0.3.0b12.dist-info}/WHEEL +0 -0
@@ -1,11 +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
+ from cribl_control_plane import models, utils
5
5
  from cribl_control_plane.types import BaseModel
6
6
  from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
+ from pydantic import field_serializer
9
10
  from pydantic.functional_validators import PlainValidator
10
11
  from typing import List, Optional
11
12
  from typing_extensions import Annotated, NotRequired, TypedDict
@@ -107,6 +108,24 @@ class InputEdgePrometheusPq(BaseModel):
107
108
  Optional[InputEdgePrometheusPqControls], pydantic.Field(alias="pqControls")
108
109
  ] = None
109
110
 
111
+ @field_serializer("mode")
112
+ def serialize_mode(self, value):
113
+ if isinstance(value, str):
114
+ try:
115
+ return models.InputEdgePrometheusMode(value)
116
+ except ValueError:
117
+ return value
118
+ return value
119
+
120
+ @field_serializer("compress")
121
+ def serialize_compress(self, value):
122
+ if isinstance(value, str):
123
+ try:
124
+ return models.InputEdgePrometheusPqCompression(value)
125
+ except ValueError:
126
+ return value
127
+ return value
128
+
110
129
 
111
130
  class InputEdgePrometheusDiscoveryType(str, Enum, metaclass=utils.OpenEnumMeta):
112
131
  r"""Target discovery mechanism. Use static to manually enter a list of targets."""
@@ -164,6 +183,15 @@ class InputEdgePrometheusDiskSpooling(BaseModel):
164
183
  ] = InputEdgePrometheusPersistenceCompression.GZIP
165
184
  r"""Data compression format. Default is gzip."""
166
185
 
186
+ @field_serializer("compress")
187
+ def serialize_compress(self, value):
188
+ if isinstance(value, str):
189
+ try:
190
+ return models.InputEdgePrometheusPersistenceCompression(value)
191
+ except ValueError:
192
+ return value
193
+ return value
194
+
167
195
 
168
196
  class InputEdgePrometheusMetadatumTypedDict(TypedDict):
169
197
  name: str
@@ -221,6 +249,15 @@ class Target(BaseModel):
221
249
  path: Optional[str] = "/metrics"
222
250
  r"""Path to use when collecting metrics from discovered targets"""
223
251
 
252
+ @field_serializer("protocol")
253
+ def serialize_protocol(self, value):
254
+ if isinstance(value, str):
255
+ try:
256
+ return models.TargetProtocol(value)
257
+ except ValueError:
258
+ return value
259
+ return value
260
+
224
261
 
225
262
  class InputEdgePrometheusRecordType(str, Enum, metaclass=utils.OpenEnumMeta):
226
263
  r"""DNS Record type to resolve"""
@@ -237,6 +274,19 @@ class ScrapeProtocolProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
237
274
  HTTPS = "https"
238
275
 
239
276
 
277
+ class InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
278
+ str, Enum, metaclass=utils.OpenEnumMeta
279
+ ):
280
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
281
+
282
+ # Auto
283
+ AUTO = "auto"
284
+ # Manual
285
+ MANUAL = "manual"
286
+ # Secret Key pair
287
+ SECRET = "secret"
288
+
289
+
240
290
  class InputEdgePrometheusSearchFilterTypedDict(TypedDict):
241
291
  name: str
242
292
  r"""Search filter attribute name, see: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html for more information. Attributes can be manually entered if not present in the drop down list"""
@@ -252,19 +302,6 @@ class InputEdgePrometheusSearchFilter(BaseModel):
252
302
  r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
253
303
 
254
304
 
255
- class InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
256
- str, Enum, metaclass=utils.OpenEnumMeta
257
- ):
258
- r"""AWS authentication method. Choose Auto to use IAM roles."""
259
-
260
- # Auto
261
- AUTO = "auto"
262
- # Manual
263
- MANUAL = "manual"
264
- # Secret Key pair
265
- SECRET = "secret"
266
-
267
-
268
305
  class InputEdgePrometheusSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
269
306
  r"""Signature version to use for signing EC2 requests"""
270
307
 
@@ -320,24 +357,27 @@ class InputEdgePrometheusTypedDict(TypedDict):
320
357
  r"""Enter credentials directly, or select a stored secret"""
321
358
  description: NotRequired[str]
322
359
  targets: NotRequired[List[TargetTypedDict]]
323
- name_list: NotRequired[List[str]]
324
- r"""List of DNS names to resolve"""
325
360
  record_type: NotRequired[InputEdgePrometheusRecordType]
326
361
  r"""DNS Record type to resolve"""
362
+ scrape_port: NotRequired[float]
363
+ r"""The port number in the metrics URL for discovered targets."""
364
+ name_list: NotRequired[List[str]]
365
+ r"""List of DNS names to resolve"""
327
366
  scrape_protocol: NotRequired[ScrapeProtocolProtocol]
328
367
  r"""Protocol to use when collecting metrics"""
329
368
  scrape_path: NotRequired[str]
330
369
  r"""Path to use when collecting metrics from discovered targets"""
331
- use_public_ip: NotRequired[bool]
332
- r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
333
- scrape_port: NotRequired[float]
334
- r"""The port number in the metrics URL for discovered targets."""
335
- search_filter: NotRequired[List[InputEdgePrometheusSearchFilterTypedDict]]
336
- r"""EC2 Instance Search Filter"""
337
370
  aws_authentication_method: NotRequired[
338
371
  InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod
339
372
  ]
340
373
  r"""AWS authentication method. Choose Auto to use IAM roles."""
374
+ aws_api_key: NotRequired[str]
375
+ aws_secret: NotRequired[str]
376
+ r"""Select or create a stored secret that references your access key and secret key"""
377
+ use_public_ip: NotRequired[bool]
378
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
379
+ search_filter: NotRequired[List[InputEdgePrometheusSearchFilterTypedDict]]
380
+ r"""EC2 Instance Search Filter"""
341
381
  aws_secret_key: NotRequired[str]
342
382
  region: NotRequired[str]
343
383
  r"""Region where the EC2 is located"""
@@ -445,9 +485,6 @@ class InputEdgePrometheus(BaseModel):
445
485
 
446
486
  targets: Optional[List[Target]] = None
447
487
 
448
- name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
449
- r"""List of DNS names to resolve"""
450
-
451
488
  record_type: Annotated[
452
489
  Annotated[
453
490
  Optional[InputEdgePrometheusRecordType],
@@ -457,6 +494,12 @@ class InputEdgePrometheus(BaseModel):
457
494
  ] = InputEdgePrometheusRecordType.SRV
458
495
  r"""DNS Record type to resolve"""
459
496
 
497
+ scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
498
+ r"""The port number in the metrics URL for discovered targets."""
499
+
500
+ name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
501
+ r"""List of DNS names to resolve"""
502
+
460
503
  scrape_protocol: Annotated[
461
504
  Annotated[
462
505
  Optional[ScrapeProtocolProtocol], PlainValidator(validate_open_enum(False))
@@ -470,18 +513,6 @@ class InputEdgePrometheus(BaseModel):
470
513
  )
471
514
  r"""Path to use when collecting metrics from discovered targets"""
472
515
 
473
- use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
474
- r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
475
-
476
- scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
477
- r"""The port number in the metrics URL for discovered targets."""
478
-
479
- search_filter: Annotated[
480
- Optional[List[InputEdgePrometheusSearchFilter]],
481
- pydantic.Field(alias="searchFilter"),
482
- ] = None
483
- r"""EC2 Instance Search Filter"""
484
-
485
516
  aws_authentication_method: Annotated[
486
517
  Annotated[
487
518
  Optional[InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod],
@@ -491,6 +522,20 @@ class InputEdgePrometheus(BaseModel):
491
522
  ] = InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod.AUTO
492
523
  r"""AWS authentication method. Choose Auto to use IAM roles."""
493
524
 
525
+ aws_api_key: Annotated[Optional[str], pydantic.Field(alias="awsApiKey")] = None
526
+
527
+ aws_secret: Annotated[Optional[str], pydantic.Field(alias="awsSecret")] = None
528
+ r"""Select or create a stored secret that references your access key and secret key"""
529
+
530
+ use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
531
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
532
+
533
+ search_filter: Annotated[
534
+ Optional[List[InputEdgePrometheusSearchFilter]],
535
+ pydantic.Field(alias="searchFilter"),
536
+ ] = None
537
+ r"""EC2 Instance Search Filter"""
538
+
494
539
  aws_secret_key: Annotated[Optional[str], pydantic.Field(alias="awsSecretKey")] = (
495
540
  None
496
541
  )
@@ -574,3 +619,59 @@ class InputEdgePrometheus(BaseModel):
574
619
  Optional[str], pydantic.Field(alias="credentialsSecret")
575
620
  ] = None
576
621
  r"""Select or create a secret that references your credentials"""
622
+
623
+ @field_serializer("discovery_type")
624
+ def serialize_discovery_type(self, value):
625
+ if isinstance(value, str):
626
+ try:
627
+ return models.InputEdgePrometheusDiscoveryType(value)
628
+ except ValueError:
629
+ return value
630
+ return value
631
+
632
+ @field_serializer("auth_type")
633
+ def serialize_auth_type(self, value):
634
+ if isinstance(value, str):
635
+ try:
636
+ return models.InputEdgePrometheusAuthTypeAuthenticationMethod(value)
637
+ except ValueError:
638
+ return value
639
+ return value
640
+
641
+ @field_serializer("record_type")
642
+ def serialize_record_type(self, value):
643
+ if isinstance(value, str):
644
+ try:
645
+ return models.InputEdgePrometheusRecordType(value)
646
+ except ValueError:
647
+ return value
648
+ return value
649
+
650
+ @field_serializer("scrape_protocol")
651
+ def serialize_scrape_protocol(self, value):
652
+ if isinstance(value, str):
653
+ try:
654
+ return models.ScrapeProtocolProtocol(value)
655
+ except ValueError:
656
+ return value
657
+ return value
658
+
659
+ @field_serializer("aws_authentication_method")
660
+ def serialize_aws_authentication_method(self, value):
661
+ if isinstance(value, str):
662
+ try:
663
+ return models.InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
664
+ value
665
+ )
666
+ except ValueError:
667
+ return value
668
+ return value
669
+
670
+ @field_serializer("signature_version")
671
+ def serialize_signature_version(self, value):
672
+ if isinstance(value, str):
673
+ try:
674
+ return models.InputEdgePrometheusSignatureVersion(value)
675
+ except ValueError:
676
+ return value
677
+ return value
@@ -1,13 +1,14 @@
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
+ from cribl_control_plane import models, utils
5
5
  from cribl_control_plane.types import BaseModel
6
6
  from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
+ from pydantic import field_serializer
9
10
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional
11
+ from typing import List, Optional
11
12
  from typing_extensions import Annotated, NotRequired, TypedDict
12
13
 
13
14
 
@@ -106,6 +107,24 @@ class InputElasticPq(BaseModel):
106
107
  Optional[InputElasticPqControls], pydantic.Field(alias="pqControls")
107
108
  ] = None
108
109
 
110
+ @field_serializer("mode")
111
+ def serialize_mode(self, value):
112
+ if isinstance(value, str):
113
+ try:
114
+ return models.InputElasticMode(value)
115
+ except ValueError:
116
+ return value
117
+ return value
118
+
119
+ @field_serializer("compress")
120
+ def serialize_compress(self, value):
121
+ if isinstance(value, str):
122
+ try:
123
+ return models.InputElasticCompression(value)
124
+ except ValueError:
125
+ return value
126
+ return value
127
+
109
128
 
110
129
  class InputElasticMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
111
130
  TL_SV1 = "TLSv1"
@@ -123,6 +142,12 @@ class InputElasticMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
123
142
 
124
143
  class InputElasticTLSSettingsServerSideTypedDict(TypedDict):
125
144
  disabled: NotRequired[bool]
145
+ request_cert: NotRequired[bool]
146
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
147
+ reject_unauthorized: NotRequired[bool]
148
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
149
+ common_name_regex: NotRequired[str]
150
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
151
  certificate_name: NotRequired[str]
127
152
  r"""The name of the predefined certificate"""
128
153
  priv_key_path: NotRequired[str]
@@ -133,10 +158,6 @@ class InputElasticTLSSettingsServerSideTypedDict(TypedDict):
133
158
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
159
  ca_path: NotRequired[str]
135
160
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
136
- request_cert: NotRequired[bool]
137
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
138
- reject_unauthorized: NotRequired[Any]
139
- common_name_regex: NotRequired[Any]
140
161
  min_version: NotRequired[InputElasticMinimumTLSVersion]
141
162
  max_version: NotRequired[InputElasticMaximumTLSVersion]
142
163
 
@@ -144,6 +165,19 @@ class InputElasticTLSSettingsServerSideTypedDict(TypedDict):
144
165
  class InputElasticTLSSettingsServerSide(BaseModel):
145
166
  disabled: Optional[bool] = True
146
167
 
168
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
169
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
170
+
171
+ reject_unauthorized: Annotated[
172
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
173
+ ] = True
174
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
175
+
176
+ common_name_regex: Annotated[
177
+ Optional[str], pydantic.Field(alias="commonNameRegex")
178
+ ] = "/.*/"
179
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
180
+
147
181
  certificate_name: Annotated[
148
182
  Optional[str], pydantic.Field(alias="certificateName")
149
183
  ] = None
@@ -161,17 +195,6 @@ class InputElasticTLSSettingsServerSide(BaseModel):
161
195
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
196
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
197
 
164
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
165
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
166
-
167
- reject_unauthorized: Annotated[
168
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
169
- ] = None
170
-
171
- common_name_regex: Annotated[
172
- Optional[Any], pydantic.Field(alias="commonNameRegex")
173
- ] = None
174
-
175
198
  min_version: Annotated[
176
199
  Annotated[
177
200
  Optional[InputElasticMinimumTLSVersion],
@@ -188,6 +211,24 @@ class InputElasticTLSSettingsServerSide(BaseModel):
188
211
  pydantic.Field(alias="maxVersion"),
189
212
  ] = None
190
213
 
214
+ @field_serializer("min_version")
215
+ def serialize_min_version(self, value):
216
+ if isinstance(value, str):
217
+ try:
218
+ return models.InputElasticMinimumTLSVersion(value)
219
+ except ValueError:
220
+ return value
221
+ return value
222
+
223
+ @field_serializer("max_version")
224
+ def serialize_max_version(self, value):
225
+ if isinstance(value, str):
226
+ try:
227
+ return models.InputElasticMaximumTLSVersion(value)
228
+ except ValueError:
229
+ return value
230
+ return value
231
+
191
232
 
192
233
  class InputElasticAuthenticationType(str, Enum, metaclass=utils.OpenEnumMeta):
193
234
  # None
@@ -246,6 +287,12 @@ class InputElasticAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
246
287
  class InputElasticProxyModeTypedDict(TypedDict):
247
288
  enabled: NotRequired[bool]
248
289
  r"""Enable proxying of non-bulk API requests to an external Elastic server. Enable this only if you understand the implications. See [Cribl Docs](https://docs.cribl.io/stream/sources-elastic/#proxy-mode) for more details."""
290
+ auth_type: NotRequired[InputElasticAuthenticationMethod]
291
+ r"""Enter credentials directly, or select a stored secret"""
292
+ username: NotRequired[str]
293
+ password: NotRequired[str]
294
+ credentials_secret: NotRequired[str]
295
+ r"""Select or create a secret that references your credentials"""
249
296
  url: NotRequired[str]
250
297
  r"""URL of the Elastic server to proxy non-bulk requests to, such as http://elastic:9200"""
251
298
  reject_unauthorized: NotRequired[bool]
@@ -254,14 +301,30 @@ class InputElasticProxyModeTypedDict(TypedDict):
254
301
  r"""List of headers to remove from the request to proxy"""
255
302
  timeout_sec: NotRequired[float]
256
303
  r"""Amount of time, in seconds, to wait for a proxy request to complete before canceling it"""
257
- auth_type: NotRequired[InputElasticAuthenticationMethod]
258
- r"""Enter credentials directly, or select a stored secret"""
259
304
 
260
305
 
261
306
  class InputElasticProxyMode(BaseModel):
262
307
  enabled: Optional[bool] = False
263
308
  r"""Enable proxying of non-bulk API requests to an external Elastic server. Enable this only if you understand the implications. See [Cribl Docs](https://docs.cribl.io/stream/sources-elastic/#proxy-mode) for more details."""
264
309
 
310
+ auth_type: Annotated[
311
+ Annotated[
312
+ Optional[InputElasticAuthenticationMethod],
313
+ PlainValidator(validate_open_enum(False)),
314
+ ],
315
+ pydantic.Field(alias="authType"),
316
+ ] = InputElasticAuthenticationMethod.NONE
317
+ r"""Enter credentials directly, or select a stored secret"""
318
+
319
+ username: Optional[str] = None
320
+
321
+ password: Optional[str] = None
322
+
323
+ credentials_secret: Annotated[
324
+ Optional[str], pydantic.Field(alias="credentialsSecret")
325
+ ] = None
326
+ r"""Select or create a secret that references your credentials"""
327
+
265
328
  url: Optional[str] = None
266
329
  r"""URL of the Elastic server to proxy non-bulk requests to, such as http://elastic:9200"""
267
330
 
@@ -278,14 +341,14 @@ class InputElasticProxyMode(BaseModel):
278
341
  timeout_sec: Annotated[Optional[float], pydantic.Field(alias="timeoutSec")] = 60
279
342
  r"""Amount of time, in seconds, to wait for a proxy request to complete before canceling it"""
280
343
 
281
- auth_type: Annotated[
282
- Annotated[
283
- Optional[InputElasticAuthenticationMethod],
284
- PlainValidator(validate_open_enum(False)),
285
- ],
286
- pydantic.Field(alias="authType"),
287
- ] = InputElasticAuthenticationMethod.NONE
288
- r"""Enter credentials directly, or select a stored secret"""
344
+ @field_serializer("auth_type")
345
+ def serialize_auth_type(self, value):
346
+ if isinstance(value, str):
347
+ try:
348
+ return models.InputElasticAuthenticationMethod(value)
349
+ except ValueError:
350
+ return value
351
+ return value
289
352
 
290
353
 
291
354
  class InputElasticTypedDict(TypedDict):
@@ -516,3 +579,21 @@ class InputElastic(BaseModel):
516
579
  "}"
517
580
  )
518
581
  r"""Custom version information to respond to requests"""
582
+
583
+ @field_serializer("auth_type")
584
+ def serialize_auth_type(self, value):
585
+ if isinstance(value, str):
586
+ try:
587
+ return models.InputElasticAuthenticationType(value)
588
+ except ValueError:
589
+ return value
590
+ return value
591
+
592
+ @field_serializer("api_version")
593
+ def serialize_api_version(self, value):
594
+ if isinstance(value, str):
595
+ try:
596
+ return models.InputElasticAPIVersion(value)
597
+ except ValueError:
598
+ return value
599
+ return value