cribl-control-plane 0.3.0b2__py3-none-any.whl → 0.3.0b4__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 (113) hide show
  1. cribl_control_plane/_version.py +3 -3
  2. cribl_control_plane/errors/__init__.py +8 -5
  3. cribl_control_plane/errors/{healthstatus_error.py → healthserverstatus_error.py} +10 -9
  4. cribl_control_plane/groups_sdk.py +48 -24
  5. cribl_control_plane/health.py +22 -16
  6. cribl_control_plane/models/__init__.py +152 -29
  7. cribl_control_plane/models/authtoken.py +4 -7
  8. cribl_control_plane/models/configgroup.py +8 -7
  9. cribl_control_plane/models/createconfiggroupbyproductop.py +6 -5
  10. cribl_control_plane/models/createroutesappendbyidop.py +2 -2
  11. cribl_control_plane/models/deleteoutputpqbyidop.py +2 -2
  12. cribl_control_plane/models/groupcreaterequest.py +152 -0
  13. cribl_control_plane/models/{healthstatus.py → healthserverstatus.py} +7 -7
  14. cribl_control_plane/models/input.py +15 -15
  15. cribl_control_plane/models/inputappscope.py +20 -16
  16. cribl_control_plane/models/inputconfluentcloud.py +110 -0
  17. cribl_control_plane/models/inputcriblhttp.py +20 -16
  18. cribl_control_plane/models/inputcribllakehttp.py +20 -16
  19. cribl_control_plane/models/inputcribltcp.py +20 -16
  20. cribl_control_plane/models/inputdatadogagent.py +20 -16
  21. cribl_control_plane/models/inputedgeprometheus.py +44 -36
  22. cribl_control_plane/models/inputelastic.py +44 -27
  23. cribl_control_plane/models/inputeventhub.py +118 -0
  24. cribl_control_plane/models/inputfile.py +7 -2
  25. cribl_control_plane/models/inputfirehose.py +20 -16
  26. cribl_control_plane/models/inputgrafana.py +39 -31
  27. cribl_control_plane/models/inputhttp.py +20 -16
  28. cribl_control_plane/models/inputhttpraw.py +20 -16
  29. cribl_control_plane/models/inputkafka.py +108 -0
  30. cribl_control_plane/models/inputloki.py +20 -16
  31. cribl_control_plane/models/inputmetrics.py +20 -16
  32. cribl_control_plane/models/inputmodeldriventelemetry.py +20 -16
  33. cribl_control_plane/models/inputopentelemetry.py +19 -15
  34. cribl_control_plane/models/inputprometheus.py +44 -36
  35. cribl_control_plane/models/inputprometheusrw.py +20 -16
  36. cribl_control_plane/models/inputsplunk.py +20 -16
  37. cribl_control_plane/models/inputsplunkhec.py +19 -15
  38. cribl_control_plane/models/inputsyslog.py +39 -31
  39. cribl_control_plane/models/inputsystemmetrics.py +20 -10
  40. cribl_control_plane/models/inputtcp.py +30 -16
  41. cribl_control_plane/models/inputtcpjson.py +20 -16
  42. cribl_control_plane/models/inputwindowsmetrics.py +20 -10
  43. cribl_control_plane/models/inputwineventlogs.py +14 -0
  44. cribl_control_plane/models/inputwizwebhook.py +20 -16
  45. cribl_control_plane/models/inputzscalerhec.py +19 -15
  46. cribl_control_plane/models/logininfo.py +3 -3
  47. cribl_control_plane/models/output.py +21 -21
  48. cribl_control_plane/models/outputazureblob.py +7 -0
  49. cribl_control_plane/models/outputazuredataexplorer.py +283 -93
  50. cribl_control_plane/models/outputazureeventhub.py +169 -21
  51. cribl_control_plane/models/outputazurelogs.py +49 -21
  52. cribl_control_plane/models/outputchronicle.py +49 -21
  53. cribl_control_plane/models/outputclickhouse.py +49 -21
  54. cribl_control_plane/models/outputcloudwatch.py +49 -21
  55. cribl_control_plane/models/outputconfluentcloud.py +167 -22
  56. cribl_control_plane/models/outputcriblhttp.py +49 -21
  57. cribl_control_plane/models/outputcribltcp.py +49 -21
  58. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +50 -22
  59. cribl_control_plane/models/outputdatabricks.py +7 -0
  60. cribl_control_plane/models/outputdatadog.py +49 -21
  61. cribl_control_plane/models/outputdataset.py +49 -21
  62. cribl_control_plane/models/outputdls3.py +7 -0
  63. cribl_control_plane/models/outputdynatracehttp.py +49 -21
  64. cribl_control_plane/models/outputdynatraceotlp.py +49 -21
  65. cribl_control_plane/models/outputelastic.py +74 -21
  66. cribl_control_plane/models/outputelasticcloud.py +74 -21
  67. cribl_control_plane/models/outputfilesystem.py +7 -0
  68. cribl_control_plane/models/outputgooglechronicle.py +65 -22
  69. cribl_control_plane/models/outputgooglecloudlogging.py +50 -22
  70. cribl_control_plane/models/outputgooglecloudstorage.py +7 -0
  71. cribl_control_plane/models/outputgooglepubsub.py +49 -21
  72. cribl_control_plane/models/outputgrafanacloud.py +98 -42
  73. cribl_control_plane/models/outputgraphite.py +49 -21
  74. cribl_control_plane/models/outputhoneycomb.py +49 -21
  75. cribl_control_plane/models/outputhumiohec.py +49 -21
  76. cribl_control_plane/models/outputinfluxdb.py +49 -21
  77. cribl_control_plane/models/outputkafka.py +162 -19
  78. cribl_control_plane/models/outputkinesis.py +56 -21
  79. cribl_control_plane/models/outputloki.py +47 -19
  80. cribl_control_plane/models/outputminio.py +7 -0
  81. cribl_control_plane/models/outputmsk.py +54 -19
  82. cribl_control_plane/models/outputnewrelic.py +49 -21
  83. cribl_control_plane/models/outputnewrelicevents.py +50 -22
  84. cribl_control_plane/models/outputopentelemetry.py +49 -21
  85. cribl_control_plane/models/outputprometheus.py +49 -21
  86. cribl_control_plane/models/outputs3.py +7 -0
  87. cribl_control_plane/models/outputsentinel.py +49 -21
  88. cribl_control_plane/models/outputsentineloneaisiem.py +50 -22
  89. cribl_control_plane/models/outputservicenow.py +49 -21
  90. cribl_control_plane/models/outputsignalfx.py +49 -21
  91. cribl_control_plane/models/outputsns.py +47 -19
  92. cribl_control_plane/models/outputsplunk.py +49 -21
  93. cribl_control_plane/models/outputsplunkhec.py +124 -21
  94. cribl_control_plane/models/outputsplunklb.py +49 -21
  95. cribl_control_plane/models/outputsqs.py +47 -19
  96. cribl_control_plane/models/outputstatsd.py +49 -21
  97. cribl_control_plane/models/outputstatsdext.py +49 -21
  98. cribl_control_plane/models/outputsumologic.py +49 -21
  99. cribl_control_plane/models/outputsyslog.py +129 -99
  100. cribl_control_plane/models/outputtcpjson.py +49 -21
  101. cribl_control_plane/models/outputwavefront.py +49 -21
  102. cribl_control_plane/models/outputwebhook.py +49 -21
  103. cribl_control_plane/models/outputxsiam.py +47 -19
  104. cribl_control_plane/models/runnablejobcollection.py +12 -8
  105. cribl_control_plane/models/runnablejobexecutor.py +12 -8
  106. cribl_control_plane/models/runnablejobscheduledsearch.py +12 -8
  107. cribl_control_plane/routes_sdk.py +6 -6
  108. cribl_control_plane/tokens.py +23 -15
  109. {cribl_control_plane-0.3.0b2.dist-info → cribl_control_plane-0.3.0b4.dist-info}/METADATA +4 -4
  110. {cribl_control_plane-0.3.0b2.dist-info → cribl_control_plane-0.3.0b4.dist-info}/RECORD +111 -112
  111. cribl_control_plane/models/error.py +0 -16
  112. cribl_control_plane/models/gethealthinfoop.py +0 -17
  113. {cribl_control_plane-0.3.0b2.dist-info → cribl_control_plane-0.3.0b4.dist-info}/WHEEL +0 -0
@@ -107,6 +107,15 @@ class InputEventhubPq(BaseModel):
107
107
  ] = None
108
108
 
109
109
 
110
+ class InputEventhubAuthTypeAuthenticationMethod(
111
+ str, Enum, metaclass=utils.OpenEnumMeta
112
+ ):
113
+ r"""Enter password directly, or select a stored secret"""
114
+
115
+ MANUAL = "manual"
116
+ SECRET = "secret"
117
+
118
+
110
119
  class InputEventhubSASLMechanism(str, Enum, metaclass=utils.OpenEnumMeta):
111
120
  # PLAIN
112
121
  PLAIN = "plain"
@@ -114,11 +123,57 @@ class InputEventhubSASLMechanism(str, Enum, metaclass=utils.OpenEnumMeta):
114
123
  OAUTHBEARER = "oauthbearer"
115
124
 
116
125
 
126
+ class InputEventhubClientSecretAuthTypeAuthenticationMethod(
127
+ str, Enum, metaclass=utils.OpenEnumMeta
128
+ ):
129
+ MANUAL = "manual"
130
+ SECRET = "secret"
131
+ CERTIFICATE = "certificate"
132
+
133
+
134
+ class InputEventhubMicrosoftEntraIDAuthenticationEndpoint(
135
+ str, Enum, metaclass=utils.OpenEnumMeta
136
+ ):
137
+ r"""Endpoint used to acquire authentication tokens from Azure"""
138
+
139
+ HTTPS_LOGIN_MICROSOFTONLINE_COM = "https://login.microsoftonline.com"
140
+ HTTPS_LOGIN_MICROSOFTONLINE_US = "https://login.microsoftonline.us"
141
+ HTTPS_LOGIN_PARTNER_MICROSOFTONLINE_CN = "https://login.partner.microsoftonline.cn"
142
+
143
+
117
144
  class InputEventhubAuthenticationTypedDict(TypedDict):
118
145
  r"""Authentication parameters to use when connecting to brokers. Using TLS is highly recommended."""
119
146
 
120
147
  disabled: NotRequired[bool]
148
+ auth_type: NotRequired[InputEventhubAuthTypeAuthenticationMethod]
149
+ r"""Enter password directly, or select a stored secret"""
150
+ password: NotRequired[str]
151
+ r"""Connection-string primary key, or connection-string secondary key, from the Event Hubs workspace"""
152
+ text_secret: NotRequired[str]
153
+ r"""Select or create a stored text secret"""
121
154
  mechanism: NotRequired[InputEventhubSASLMechanism]
155
+ username: NotRequired[str]
156
+ r"""The username for authentication. For Event Hubs, this should always be $ConnectionString."""
157
+ client_secret_auth_type: NotRequired[
158
+ InputEventhubClientSecretAuthTypeAuthenticationMethod
159
+ ]
160
+ client_secret: NotRequired[str]
161
+ r"""client_secret to pass in the OAuth request parameter"""
162
+ client_text_secret: NotRequired[str]
163
+ r"""Select or create a stored text secret"""
164
+ certificate_name: NotRequired[str]
165
+ r"""Select or create a stored certificate"""
166
+ cert_path: NotRequired[str]
167
+ priv_key_path: NotRequired[str]
168
+ passphrase: NotRequired[str]
169
+ oauth_endpoint: NotRequired[InputEventhubMicrosoftEntraIDAuthenticationEndpoint]
170
+ r"""Endpoint used to acquire authentication tokens from Azure"""
171
+ client_id: NotRequired[str]
172
+ r"""client_id to pass in the OAuth request parameter"""
173
+ tenant_id: NotRequired[str]
174
+ r"""Directory ID (tenant identifier) in Azure Active Directory"""
175
+ scope: NotRequired[str]
176
+ r"""Scope to pass in the OAuth request parameter"""
122
177
 
123
178
 
124
179
  class InputEventhubAuthentication(BaseModel):
@@ -126,10 +181,73 @@ class InputEventhubAuthentication(BaseModel):
126
181
 
127
182
  disabled: Optional[bool] = False
128
183
 
184
+ auth_type: Annotated[
185
+ Annotated[
186
+ Optional[InputEventhubAuthTypeAuthenticationMethod],
187
+ PlainValidator(validate_open_enum(False)),
188
+ ],
189
+ pydantic.Field(alias="authType"),
190
+ ] = InputEventhubAuthTypeAuthenticationMethod.MANUAL
191
+ r"""Enter password directly, or select a stored secret"""
192
+
193
+ password: Optional[str] = None
194
+ r"""Connection-string primary key, or connection-string secondary key, from the Event Hubs workspace"""
195
+
196
+ text_secret: Annotated[Optional[str], pydantic.Field(alias="textSecret")] = None
197
+ r"""Select or create a stored text secret"""
198
+
129
199
  mechanism: Annotated[
130
200
  Optional[InputEventhubSASLMechanism], PlainValidator(validate_open_enum(False))
131
201
  ] = InputEventhubSASLMechanism.PLAIN
132
202
 
203
+ username: Optional[str] = "$ConnectionString"
204
+ r"""The username for authentication. For Event Hubs, this should always be $ConnectionString."""
205
+
206
+ client_secret_auth_type: Annotated[
207
+ Annotated[
208
+ Optional[InputEventhubClientSecretAuthTypeAuthenticationMethod],
209
+ PlainValidator(validate_open_enum(False)),
210
+ ],
211
+ pydantic.Field(alias="clientSecretAuthType"),
212
+ ] = InputEventhubClientSecretAuthTypeAuthenticationMethod.MANUAL
213
+
214
+ client_secret: Annotated[Optional[str], pydantic.Field(alias="clientSecret")] = None
215
+ r"""client_secret to pass in the OAuth request parameter"""
216
+
217
+ client_text_secret: Annotated[
218
+ Optional[str], pydantic.Field(alias="clientTextSecret")
219
+ ] = None
220
+ r"""Select or create a stored text secret"""
221
+
222
+ certificate_name: Annotated[
223
+ Optional[str], pydantic.Field(alias="certificateName")
224
+ ] = None
225
+ r"""Select or create a stored certificate"""
226
+
227
+ cert_path: Annotated[Optional[str], pydantic.Field(alias="certPath")] = None
228
+
229
+ priv_key_path: Annotated[Optional[str], pydantic.Field(alias="privKeyPath")] = None
230
+
231
+ passphrase: Optional[str] = None
232
+
233
+ oauth_endpoint: Annotated[
234
+ Annotated[
235
+ Optional[InputEventhubMicrosoftEntraIDAuthenticationEndpoint],
236
+ PlainValidator(validate_open_enum(False)),
237
+ ],
238
+ pydantic.Field(alias="oauthEndpoint"),
239
+ ] = InputEventhubMicrosoftEntraIDAuthenticationEndpoint.HTTPS_LOGIN_MICROSOFTONLINE_COM
240
+ r"""Endpoint used to acquire authentication tokens from Azure"""
241
+
242
+ client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
243
+ r"""client_id to pass in the OAuth request parameter"""
244
+
245
+ tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
246
+ r"""Directory ID (tenant identifier) in Azure Active Directory"""
247
+
248
+ scope: Optional[str] = None
249
+ r"""Scope to pass in the OAuth request parameter"""
250
+
133
251
 
134
252
  class InputEventhubTLSSettingsClientSideTypedDict(TypedDict):
135
253
  disabled: NotRequired[bool]
@@ -157,8 +157,10 @@ class InputFileTypedDict(TypedDict):
157
157
  r"""Read only new entries at the end of all files discovered at next startup. @{product} will then read newly discovered files from the head. Disable this to resume reading all files from head."""
158
158
  idle_timeout: NotRequired[float]
159
159
  r"""Time, in seconds, before an idle file is closed"""
160
+ min_age_dur: NotRequired[str]
161
+ r"""The minimum age of files to monitor. Format examples: 30s, 15m, 1h. Age is relative to file modification time. Leave empty to apply no age filters."""
160
162
  max_age_dur: NotRequired[str]
161
- r"""The maximum age of files to monitor. Format examples: 60s, 4h, 3d, 1w. Age is relative to file modification time. Leave empty to apply no age filters."""
163
+ r"""The maximum age of event timestamps to collect. Format examples: 60s, 4h, 3d, 1w. Can be used in conjuction with \"Check file modification times\". Leave empty to apply no age filters."""
162
164
  check_file_mod_time: NotRequired[bool]
163
165
  r"""Skip files with modification times earlier than the maximum age duration"""
164
166
  force_text: NotRequired[bool]
@@ -230,8 +232,11 @@ class InputFile(BaseModel):
230
232
  idle_timeout: Annotated[Optional[float], pydantic.Field(alias="idleTimeout")] = 300
231
233
  r"""Time, in seconds, before an idle file is closed"""
232
234
 
235
+ min_age_dur: Annotated[Optional[str], pydantic.Field(alias="minAgeDur")] = None
236
+ r"""The minimum age of files to monitor. Format examples: 30s, 15m, 1h. Age is relative to file modification time. Leave empty to apply no age filters."""
237
+
233
238
  max_age_dur: Annotated[Optional[str], pydantic.Field(alias="maxAgeDur")] = None
234
- r"""The maximum age of files to monitor. Format examples: 60s, 4h, 3d, 1w. Age is relative to file modification time. Leave empty to apply no age filters."""
239
+ r"""The maximum age of event timestamps to collect. Format examples: 60s, 4h, 3d, 1w. Can be used in conjuction with \"Check file modification times\". Leave empty to apply no age filters."""
235
240
 
236
241
  check_file_mod_time: Annotated[
237
242
  Optional[bool], pydantic.Field(alias="checkFileModTime")
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional
10
+ from typing import List, Optional
11
11
  from typing_extensions import Annotated, NotRequired, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputFirehoseMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputFirehoseTLSSettingsServerSideTypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputFirehoseTLSSettingsServerSideTypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  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
142
  min_version: NotRequired[InputFirehoseMinimumTLSVersion]
141
143
  max_version: NotRequired[InputFirehoseMaximumTLSVersion]
142
144
 
@@ -144,6 +146,19 @@ class InputFirehoseTLSSettingsServerSideTypedDict(TypedDict):
144
146
  class InputFirehoseTLSSettingsServerSide(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputFirehoseTLSSettingsServerSide(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
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
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputFirehoseMinimumTLSVersion],
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional, Union
10
+ from typing import List, Optional, Union
11
11
  from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputGrafanaMaximumTLSVersion2(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputGrafanaTLSSettingsServerSide2TypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputGrafanaTLSSettingsServerSide2TypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  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
142
  min_version: NotRequired[InputGrafanaMinimumTLSVersion2]
141
143
  max_version: NotRequired[InputGrafanaMaximumTLSVersion2]
142
144
 
@@ -144,6 +146,19 @@ class InputGrafanaTLSSettingsServerSide2TypedDict(TypedDict):
144
146
  class InputGrafanaTLSSettingsServerSide2(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputGrafanaTLSSettingsServerSide2(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
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
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputGrafanaMinimumTLSVersion2],
@@ -753,6 +757,12 @@ class InputGrafanaMaximumTLSVersion1(str, Enum, metaclass=utils.OpenEnumMeta):
753
757
 
754
758
  class InputGrafanaTLSSettingsServerSide1TypedDict(TypedDict):
755
759
  disabled: NotRequired[bool]
760
+ request_cert: NotRequired[bool]
761
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
762
+ reject_unauthorized: NotRequired[bool]
763
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
764
+ common_name_regex: NotRequired[str]
765
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
756
766
  certificate_name: NotRequired[str]
757
767
  r"""The name of the predefined certificate"""
758
768
  priv_key_path: NotRequired[str]
@@ -763,10 +773,6 @@ class InputGrafanaTLSSettingsServerSide1TypedDict(TypedDict):
763
773
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
764
774
  ca_path: NotRequired[str]
765
775
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
766
- request_cert: NotRequired[bool]
767
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
768
- reject_unauthorized: NotRequired[Any]
769
- common_name_regex: NotRequired[Any]
770
776
  min_version: NotRequired[InputGrafanaMinimumTLSVersion1]
771
777
  max_version: NotRequired[InputGrafanaMaximumTLSVersion1]
772
778
 
@@ -774,6 +780,19 @@ class InputGrafanaTLSSettingsServerSide1TypedDict(TypedDict):
774
780
  class InputGrafanaTLSSettingsServerSide1(BaseModel):
775
781
  disabled: Optional[bool] = True
776
782
 
783
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
784
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
785
+
786
+ reject_unauthorized: Annotated[
787
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
788
+ ] = True
789
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
790
+
791
+ common_name_regex: Annotated[
792
+ Optional[str], pydantic.Field(alias="commonNameRegex")
793
+ ] = "/.*/"
794
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
795
+
777
796
  certificate_name: Annotated[
778
797
  Optional[str], pydantic.Field(alias="certificateName")
779
798
  ] = None
@@ -791,17 +810,6 @@ class InputGrafanaTLSSettingsServerSide1(BaseModel):
791
810
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
792
811
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
793
812
 
794
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
795
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
796
-
797
- reject_unauthorized: Annotated[
798
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
799
- ] = None
800
-
801
- common_name_regex: Annotated[
802
- Optional[Any], pydantic.Field(alias="commonNameRegex")
803
- ] = None
804
-
805
813
  min_version: Annotated[
806
814
  Annotated[
807
815
  Optional[InputGrafanaMinimumTLSVersion1],
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional
10
+ from typing import List, Optional
11
11
  from typing_extensions import Annotated, NotRequired, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputHTTPMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputHTTPTLSSettingsServerSideTypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputHTTPTLSSettingsServerSideTypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  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
142
  min_version: NotRequired[InputHTTPMinimumTLSVersion]
141
143
  max_version: NotRequired[InputHTTPMaximumTLSVersion]
142
144
 
@@ -144,6 +146,19 @@ class InputHTTPTLSSettingsServerSideTypedDict(TypedDict):
144
146
  class InputHTTPTLSSettingsServerSide(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputHTTPTLSSettingsServerSide(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
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
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputHTTPMinimumTLSVersion],
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional
10
+ from typing import List, Optional
11
11
  from typing_extensions import Annotated, NotRequired, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputHTTPRawMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputHTTPRawTLSSettingsServerSideTypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputHTTPRawTLSSettingsServerSideTypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  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
142
  min_version: NotRequired[InputHTTPRawMinimumTLSVersion]
141
143
  max_version: NotRequired[InputHTTPRawMaximumTLSVersion]
142
144
 
@@ -144,6 +146,19 @@ class InputHTTPRawTLSSettingsServerSideTypedDict(TypedDict):
144
146
  class InputHTTPRawTLSSettingsServerSide(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputHTTPRawTLSSettingsServerSide(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
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
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputHTTPRawMinimumTLSVersion],
@@ -255,6 +255,13 @@ class InputKafkaKafkaSchemaRegistryAuthentication(BaseModel):
255
255
  tls: Optional[InputKafkaKafkaSchemaRegistryTLSSettingsClientSide] = None
256
256
 
257
257
 
258
+ class InputKafkaAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
259
+ r"""Enter credentials directly, or select a stored secret"""
260
+
261
+ MANUAL = "manual"
262
+ SECRET = "secret"
263
+
264
+
258
265
  class InputKafkaSASLMechanism(str, Enum, metaclass=utils.OpenEnumMeta):
259
266
  # PLAIN
260
267
  PLAIN = "plain"
@@ -266,13 +273,58 @@ class InputKafkaSASLMechanism(str, Enum, metaclass=utils.OpenEnumMeta):
266
273
  KERBEROS = "kerberos"
267
274
 
268
275
 
276
+ class InputKafkaOauthParamTypedDict(TypedDict):
277
+ name: str
278
+ value: str
279
+
280
+
281
+ class InputKafkaOauthParam(BaseModel):
282
+ name: str
283
+
284
+ value: str
285
+
286
+
287
+ class InputKafkaSaslExtensionTypedDict(TypedDict):
288
+ name: str
289
+ value: str
290
+
291
+
292
+ class InputKafkaSaslExtension(BaseModel):
293
+ name: str
294
+
295
+ value: str
296
+
297
+
269
298
  class InputKafkaAuthenticationTypedDict(TypedDict):
270
299
  r"""Authentication parameters to use when connecting to brokers. Using TLS is highly recommended."""
271
300
 
272
301
  disabled: NotRequired[bool]
302
+ username: NotRequired[str]
303
+ password: NotRequired[str]
304
+ auth_type: NotRequired[InputKafkaAuthenticationMethod]
305
+ r"""Enter credentials directly, or select a stored secret"""
306
+ credentials_secret: NotRequired[str]
307
+ r"""Select or create a secret that references your credentials"""
273
308
  mechanism: NotRequired[InputKafkaSASLMechanism]
309
+ keytab_location: NotRequired[str]
310
+ r"""Location of keytab file for authentication principal"""
311
+ principal: NotRequired[str]
312
+ r"""Authentication principal, such as `kafka_user@example.com`"""
313
+ broker_service_class: NotRequired[str]
314
+ r"""Kerberos service class for Kafka brokers, such as `kafka`"""
274
315
  oauth_enabled: NotRequired[bool]
275
316
  r"""Enable OAuth authentication"""
317
+ token_url: NotRequired[str]
318
+ r"""URL of the token endpoint to use for OAuth authentication"""
319
+ client_id: NotRequired[str]
320
+ r"""Client ID to use for OAuth authentication"""
321
+ oauth_secret_type: NotRequired[str]
322
+ client_text_secret: NotRequired[str]
323
+ r"""Select or create a stored text secret"""
324
+ oauth_params: NotRequired[List[InputKafkaOauthParamTypedDict]]
325
+ r"""Additional fields to send to the token endpoint, such as scope or audience"""
326
+ sasl_extensions: NotRequired[List[InputKafkaSaslExtensionTypedDict]]
327
+ r"""Additional SASL extension fields, such as Confluent's logicalCluster or identityPoolId"""
276
328
 
277
329
 
278
330
  class InputKafkaAuthentication(BaseModel):
@@ -280,15 +332,71 @@ class InputKafkaAuthentication(BaseModel):
280
332
 
281
333
  disabled: Optional[bool] = True
282
334
 
335
+ username: Optional[str] = None
336
+
337
+ password: Optional[str] = None
338
+
339
+ auth_type: Annotated[
340
+ Annotated[
341
+ Optional[InputKafkaAuthenticationMethod],
342
+ PlainValidator(validate_open_enum(False)),
343
+ ],
344
+ pydantic.Field(alias="authType"),
345
+ ] = InputKafkaAuthenticationMethod.MANUAL
346
+ r"""Enter credentials directly, or select a stored secret"""
347
+
348
+ credentials_secret: Annotated[
349
+ Optional[str], pydantic.Field(alias="credentialsSecret")
350
+ ] = None
351
+ r"""Select or create a secret that references your credentials"""
352
+
283
353
  mechanism: Annotated[
284
354
  Optional[InputKafkaSASLMechanism], PlainValidator(validate_open_enum(False))
285
355
  ] = InputKafkaSASLMechanism.PLAIN
286
356
 
357
+ keytab_location: Annotated[
358
+ Optional[str], pydantic.Field(alias="keytabLocation")
359
+ ] = None
360
+ r"""Location of keytab file for authentication principal"""
361
+
362
+ principal: Optional[str] = None
363
+ r"""Authentication principal, such as `kafka_user@example.com`"""
364
+
365
+ broker_service_class: Annotated[
366
+ Optional[str], pydantic.Field(alias="brokerServiceClass")
367
+ ] = None
368
+ r"""Kerberos service class for Kafka brokers, such as `kafka`"""
369
+
287
370
  oauth_enabled: Annotated[Optional[bool], pydantic.Field(alias="oauthEnabled")] = (
288
371
  False
289
372
  )
290
373
  r"""Enable OAuth authentication"""
291
374
 
375
+ token_url: Annotated[Optional[str], pydantic.Field(alias="tokenUrl")] = None
376
+ r"""URL of the token endpoint to use for OAuth authentication"""
377
+
378
+ client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
379
+ r"""Client ID to use for OAuth authentication"""
380
+
381
+ oauth_secret_type: Annotated[
382
+ Optional[str], pydantic.Field(alias="oauthSecretType")
383
+ ] = "secret"
384
+
385
+ client_text_secret: Annotated[
386
+ Optional[str], pydantic.Field(alias="clientTextSecret")
387
+ ] = None
388
+ r"""Select or create a stored text secret"""
389
+
390
+ oauth_params: Annotated[
391
+ Optional[List[InputKafkaOauthParam]], pydantic.Field(alias="oauthParams")
392
+ ] = None
393
+ r"""Additional fields to send to the token endpoint, such as scope or audience"""
394
+
395
+ sasl_extensions: Annotated[
396
+ Optional[List[InputKafkaSaslExtension]], pydantic.Field(alias="saslExtensions")
397
+ ] = None
398
+ r"""Additional SASL extension fields, such as Confluent's logicalCluster or identityPoolId"""
399
+
292
400
 
293
401
  class InputKafkaMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
294
402
  TL_SV1 = "TLSv1"