databricks-sdk 0.40.0__py3-none-any.whl → 0.41.0__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 databricks-sdk might be problematic. Click here for more details.

@@ -202,35 +202,6 @@ class CreateServicePrincipalSecretResponse:
202
202
  update_time=d.get('update_time', None))
203
203
 
204
204
 
205
- @dataclass
206
- class DataPlaneInfo:
207
- authorization_details: Optional[str] = None
208
- """Authorization details as a string."""
209
-
210
- endpoint_url: Optional[str] = None
211
- """The URL of the endpoint for this operation in the dataplane."""
212
-
213
- def as_dict(self) -> dict:
214
- """Serializes the DataPlaneInfo into a dictionary suitable for use as a JSON request body."""
215
- body = {}
216
- if self.authorization_details is not None: body['authorization_details'] = self.authorization_details
217
- if self.endpoint_url is not None: body['endpoint_url'] = self.endpoint_url
218
- return body
219
-
220
- def as_shallow_dict(self) -> dict:
221
- """Serializes the DataPlaneInfo into a shallow dictionary of its immediate attributes."""
222
- body = {}
223
- if self.authorization_details is not None: body['authorization_details'] = self.authorization_details
224
- if self.endpoint_url is not None: body['endpoint_url'] = self.endpoint_url
225
- return body
226
-
227
- @classmethod
228
- def from_dict(cls, d: Dict[str, any]) -> DataPlaneInfo:
229
- """Deserializes the DataPlaneInfo from a dictionary."""
230
- return cls(authorization_details=d.get('authorization_details', None),
231
- endpoint_url=d.get('endpoint_url', None))
232
-
233
-
234
205
  @dataclass
235
206
  class DeleteCustomAppIntegrationOutput:
236
207
 
@@ -297,8 +268,13 @@ class FederationPolicy:
297
268
  """Description of the federation policy."""
298
269
 
299
270
  name: Optional[str] = None
300
- """Name of the federation policy. The name must contain only lowercase alphanumeric characters,
301
- numbers, and hyphens. It must be unique within the account."""
271
+ """Resource name for the federation policy. Example values include
272
+ `accounts/<account-id>/federationPolicies/my-federation-policy` for Account Federation Policies,
273
+ and
274
+ `accounts/<account-id>/servicePrincipals/<service-principal-id>/federationPolicies/my-federation-policy`
275
+ for Service Principal Federation Policies. Typically an output parameter, which does not need to
276
+ be specified in create or update requests. If specified in a request, must match the value in
277
+ the request URL."""
302
278
 
303
279
  oidc_policy: Optional[OidcFederationPolicy] = None
304
280
  """Specifies the policy to use for validating OIDC claims in your federated tokens."""
@@ -815,6 +791,10 @@ class UpdateCustomAppIntegration:
815
791
  redirect_urls: Optional[List[str]] = None
816
792
  """List of OAuth redirect urls to be updated in the custom OAuth app integration"""
817
793
 
794
+ scopes: Optional[List[str]] = None
795
+ """List of OAuth scopes to be updated in the custom OAuth app integration, similar to redirect URIs
796
+ this will fully replace the existing values instead of appending"""
797
+
818
798
  token_access_policy: Optional[TokenAccessPolicy] = None
819
799
  """Token access policy to be updated in the custom OAuth app integration"""
820
800
 
@@ -823,6 +803,7 @@ class UpdateCustomAppIntegration:
823
803
  body = {}
824
804
  if self.integration_id is not None: body['integration_id'] = self.integration_id
825
805
  if self.redirect_urls: body['redirect_urls'] = [v for v in self.redirect_urls]
806
+ if self.scopes: body['scopes'] = [v for v in self.scopes]
826
807
  if self.token_access_policy: body['token_access_policy'] = self.token_access_policy.as_dict()
827
808
  return body
828
809
 
@@ -831,6 +812,7 @@ class UpdateCustomAppIntegration:
831
812
  body = {}
832
813
  if self.integration_id is not None: body['integration_id'] = self.integration_id
833
814
  if self.redirect_urls: body['redirect_urls'] = self.redirect_urls
815
+ if self.scopes: body['scopes'] = self.scopes
834
816
  if self.token_access_policy: body['token_access_policy'] = self.token_access_policy
835
817
  return body
836
818
 
@@ -839,6 +821,7 @@ class UpdateCustomAppIntegration:
839
821
  """Deserializes the UpdateCustomAppIntegration from a dictionary."""
840
822
  return cls(integration_id=d.get('integration_id', None),
841
823
  redirect_urls=d.get('redirect_urls', None),
824
+ scopes=d.get('scopes', None),
842
825
  token_access_policy=_from_dict(d, 'token_access_policy', TokenAccessPolicy))
843
826
 
844
827
 
@@ -961,11 +944,14 @@ class AccountFederationPolicyAPI:
961
944
 
962
945
  :param policy: :class:`FederationPolicy` (optional)
963
946
  :param policy_id: str (optional)
964
- The identifier for the federation policy. If unspecified, the id will be assigned by Databricks.
947
+ The identifier for the federation policy. The identifier must contain only lowercase alphanumeric
948
+ characters, numbers, hyphens, and slashes. If unspecified, the id will be assigned by Databricks.
965
949
 
966
950
  :returns: :class:`FederationPolicy`
967
951
  """
968
952
  body = policy.as_dict()
953
+ query = {}
954
+ if policy_id is not None: query['policy_id'] = policy_id
969
955
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
970
956
 
971
957
  res = self._api.do('POST',
@@ -979,6 +965,7 @@ class AccountFederationPolicyAPI:
979
965
  """Delete account federation policy.
980
966
 
981
967
  :param policy_id: str
968
+ The identifier for the federation policy.
982
969
 
983
970
 
984
971
  """
@@ -993,6 +980,7 @@ class AccountFederationPolicyAPI:
993
980
  """Get account federation policy.
994
981
 
995
982
  :param policy_id: str
983
+ The identifier for the federation policy.
996
984
 
997
985
  :returns: :class:`FederationPolicy`
998
986
  """
@@ -1035,21 +1023,26 @@ class AccountFederationPolicyAPI:
1035
1023
 
1036
1024
  def update(self,
1037
1025
  policy_id: str,
1038
- update_mask: str,
1039
1026
  *,
1040
- policy: Optional[FederationPolicy] = None) -> FederationPolicy:
1027
+ policy: Optional[FederationPolicy] = None,
1028
+ update_mask: Optional[str] = None) -> FederationPolicy:
1041
1029
  """Update account federation policy.
1042
1030
 
1043
1031
  :param policy_id: str
1044
- :param update_mask: str
1045
- Field mask is required to be passed into the PATCH request. Field mask specifies which fields of the
1046
- setting payload will be updated. The field mask needs to be supplied as single string. To specify
1047
- multiple fields in the field mask, use comma as the separator (no space).
1032
+ The identifier for the federation policy.
1048
1033
  :param policy: :class:`FederationPolicy` (optional)
1034
+ :param update_mask: str (optional)
1035
+ The field mask specifies which fields of the policy to update. To specify multiple fields in the
1036
+ field mask, use comma as the separator (no space). The special value '*' indicates that all fields
1037
+ should be updated (full replacement). If unspecified, all fields that are set in the policy provided
1038
+ in the update request will overwrite the corresponding fields in the existing policy. Example value:
1039
+ 'description,oidc_policy.audiences'.
1049
1040
 
1050
1041
  :returns: :class:`FederationPolicy`
1051
1042
  """
1052
1043
  body = policy.as_dict()
1044
+ query = {}
1045
+ if update_mask is not None: query['update_mask'] = update_mask
1053
1046
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1054
1047
 
1055
1048
  res = self._api.do('PATCH',
@@ -1183,6 +1176,7 @@ class CustomAppIntegrationAPI:
1183
1176
  integration_id: str,
1184
1177
  *,
1185
1178
  redirect_urls: Optional[List[str]] = None,
1179
+ scopes: Optional[List[str]] = None,
1186
1180
  token_access_policy: Optional[TokenAccessPolicy] = None):
1187
1181
  """Updates Custom OAuth App Integration.
1188
1182
 
@@ -1192,6 +1186,9 @@ class CustomAppIntegrationAPI:
1192
1186
  :param integration_id: str
1193
1187
  :param redirect_urls: List[str] (optional)
1194
1188
  List of OAuth redirect urls to be updated in the custom OAuth app integration
1189
+ :param scopes: List[str] (optional)
1190
+ List of OAuth scopes to be updated in the custom OAuth app integration, similar to redirect URIs
1191
+ this will fully replace the existing values instead of appending
1195
1192
  :param token_access_policy: :class:`TokenAccessPolicy` (optional)
1196
1193
  Token access policy to be updated in the custom OAuth app integration
1197
1194
 
@@ -1199,6 +1196,7 @@ class CustomAppIntegrationAPI:
1199
1196
  """
1200
1197
  body = {}
1201
1198
  if redirect_urls is not None: body['redirect_urls'] = [v for v in redirect_urls]
1199
+ if scopes is not None: body['scopes'] = [v for v in scopes]
1202
1200
  if token_access_policy is not None: body['token_access_policy'] = token_access_policy.as_dict()
1203
1201
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1204
1202
 
@@ -1433,11 +1431,14 @@ class ServicePrincipalFederationPolicyAPI:
1433
1431
  The service principal id for the federation policy.
1434
1432
  :param policy: :class:`FederationPolicy` (optional)
1435
1433
  :param policy_id: str (optional)
1436
- The identifier for the federation policy. If unspecified, the id will be assigned by Databricks.
1434
+ The identifier for the federation policy. The identifier must contain only lowercase alphanumeric
1435
+ characters, numbers, hyphens, and slashes. If unspecified, the id will be assigned by Databricks.
1437
1436
 
1438
1437
  :returns: :class:`FederationPolicy`
1439
1438
  """
1440
1439
  body = policy.as_dict()
1440
+ query = {}
1441
+ if policy_id is not None: query['policy_id'] = policy_id
1441
1442
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1442
1443
 
1443
1444
  res = self._api.do(
@@ -1454,6 +1455,7 @@ class ServicePrincipalFederationPolicyAPI:
1454
1455
  :param service_principal_id: int
1455
1456
  The service principal id for the federation policy.
1456
1457
  :param policy_id: str
1458
+ The identifier for the federation policy.
1457
1459
 
1458
1460
 
1459
1461
  """
@@ -1471,6 +1473,7 @@ class ServicePrincipalFederationPolicyAPI:
1471
1473
  :param service_principal_id: int
1472
1474
  The service principal id for the federation policy.
1473
1475
  :param policy_id: str
1476
+ The identifier for the federation policy.
1474
1477
 
1475
1478
  :returns: :class:`FederationPolicy`
1476
1479
  """
@@ -1519,23 +1522,28 @@ class ServicePrincipalFederationPolicyAPI:
1519
1522
  def update(self,
1520
1523
  service_principal_id: int,
1521
1524
  policy_id: str,
1522
- update_mask: str,
1523
1525
  *,
1524
- policy: Optional[FederationPolicy] = None) -> FederationPolicy:
1526
+ policy: Optional[FederationPolicy] = None,
1527
+ update_mask: Optional[str] = None) -> FederationPolicy:
1525
1528
  """Update service principal federation policy.
1526
1529
 
1527
1530
  :param service_principal_id: int
1528
1531
  The service principal id for the federation policy.
1529
1532
  :param policy_id: str
1530
- :param update_mask: str
1531
- Field mask is required to be passed into the PATCH request. Field mask specifies which fields of the
1532
- setting payload will be updated. The field mask needs to be supplied as single string. To specify
1533
- multiple fields in the field mask, use comma as the separator (no space).
1533
+ The identifier for the federation policy.
1534
1534
  :param policy: :class:`FederationPolicy` (optional)
1535
+ :param update_mask: str (optional)
1536
+ The field mask specifies which fields of the policy to update. To specify multiple fields in the
1537
+ field mask, use comma as the separator (no space). The special value '*' indicates that all fields
1538
+ should be updated (full replacement). If unspecified, all fields that are set in the policy provided
1539
+ in the update request will overwrite the corresponding fields in the existing policy. Example value:
1540
+ 'description,oidc_policy.audiences'.
1535
1541
 
1536
1542
  :returns: :class:`FederationPolicy`
1537
1543
  """
1538
1544
  body = policy.as_dict()
1545
+ query = {}
1546
+ if update_mask is not None: query['update_mask'] = update_mask
1539
1547
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1540
1548
 
1541
1549
  res = self._api.do(
@@ -85,6 +85,14 @@ class CreatePipeline:
85
85
  restart_window: Optional[RestartWindow] = None
86
86
  """Restart window of this pipeline."""
87
87
 
88
+ run_as: Optional[RunAs] = None
89
+ """Write-only setting, available only in Create/Update calls. Specifies the user or service
90
+ principal that the pipeline runs as. If not specified, the pipeline runs as the user who created
91
+ the pipeline.
92
+
93
+ Only `user_name` or `service_principal_name` can be specified. If both are specified, an error
94
+ is thrown."""
95
+
88
96
  schema: Optional[str] = None
89
97
  """The default schema (database) where tables are read from or published to. The presence of this
90
98
  field implies that the pipeline is in direct publishing mode."""
@@ -126,6 +134,7 @@ class CreatePipeline:
126
134
  if self.notifications: body['notifications'] = [v.as_dict() for v in self.notifications]
127
135
  if self.photon is not None: body['photon'] = self.photon
128
136
  if self.restart_window: body['restart_window'] = self.restart_window.as_dict()
137
+ if self.run_as: body['run_as'] = self.run_as.as_dict()
129
138
  if self.schema is not None: body['schema'] = self.schema
130
139
  if self.serverless is not None: body['serverless'] = self.serverless
131
140
  if self.storage is not None: body['storage'] = self.storage
@@ -156,6 +165,7 @@ class CreatePipeline:
156
165
  if self.notifications: body['notifications'] = self.notifications
157
166
  if self.photon is not None: body['photon'] = self.photon
158
167
  if self.restart_window: body['restart_window'] = self.restart_window
168
+ if self.run_as: body['run_as'] = self.run_as
159
169
  if self.schema is not None: body['schema'] = self.schema
160
170
  if self.serverless is not None: body['serverless'] = self.serverless
161
171
  if self.storage is not None: body['storage'] = self.storage
@@ -186,6 +196,7 @@ class CreatePipeline:
186
196
  notifications=_repeated_dict(d, 'notifications', Notifications),
187
197
  photon=d.get('photon', None),
188
198
  restart_window=_from_dict(d, 'restart_window', RestartWindow),
199
+ run_as=_from_dict(d, 'run_as', RunAs),
189
200
  schema=d.get('schema', None),
190
201
  serverless=d.get('serverless', None),
191
202
  storage=d.get('storage', None),
@@ -277,6 +288,19 @@ class DataPlaneId:
277
288
  return cls(instance=d.get('instance', None), seq_no=d.get('seq_no', None))
278
289
 
279
290
 
291
+ class DayOfWeek(Enum):
292
+ """Days of week in which the restart is allowed to happen (within a five-hour window starting at
293
+ start_hour). If not specified all days of the week will be used."""
294
+
295
+ FRIDAY = 'FRIDAY'
296
+ MONDAY = 'MONDAY'
297
+ SATURDAY = 'SATURDAY'
298
+ SUNDAY = 'SUNDAY'
299
+ THURSDAY = 'THURSDAY'
300
+ TUESDAY = 'TUESDAY'
301
+ WEDNESDAY = 'WEDNESDAY'
302
+
303
+
280
304
  @dataclass
281
305
  class DeletePipelineResponse:
282
306
 
@@ -373,6 +397,14 @@ class EditPipeline:
373
397
  restart_window: Optional[RestartWindow] = None
374
398
  """Restart window of this pipeline."""
375
399
 
400
+ run_as: Optional[RunAs] = None
401
+ """Write-only setting, available only in Create/Update calls. Specifies the user or service
402
+ principal that the pipeline runs as. If not specified, the pipeline runs as the user who created
403
+ the pipeline.
404
+
405
+ Only `user_name` or `service_principal_name` can be specified. If both are specified, an error
406
+ is thrown."""
407
+
376
408
  schema: Optional[str] = None
377
409
  """The default schema (database) where tables are read from or published to. The presence of this
378
410
  field implies that the pipeline is in direct publishing mode."""
@@ -416,6 +448,7 @@ class EditPipeline:
416
448
  if self.photon is not None: body['photon'] = self.photon
417
449
  if self.pipeline_id is not None: body['pipeline_id'] = self.pipeline_id
418
450
  if self.restart_window: body['restart_window'] = self.restart_window.as_dict()
451
+ if self.run_as: body['run_as'] = self.run_as.as_dict()
419
452
  if self.schema is not None: body['schema'] = self.schema
420
453
  if self.serverless is not None: body['serverless'] = self.serverless
421
454
  if self.storage is not None: body['storage'] = self.storage
@@ -448,6 +481,7 @@ class EditPipeline:
448
481
  if self.photon is not None: body['photon'] = self.photon
449
482
  if self.pipeline_id is not None: body['pipeline_id'] = self.pipeline_id
450
483
  if self.restart_window: body['restart_window'] = self.restart_window
484
+ if self.run_as: body['run_as'] = self.run_as
451
485
  if self.schema is not None: body['schema'] = self.schema
452
486
  if self.serverless is not None: body['serverless'] = self.serverless
453
487
  if self.storage is not None: body['storage'] = self.storage
@@ -479,6 +513,7 @@ class EditPipeline:
479
513
  photon=d.get('photon', None),
480
514
  pipeline_id=d.get('pipeline_id', None),
481
515
  restart_window=_from_dict(d, 'restart_window', RestartWindow),
516
+ run_as=_from_dict(d, 'run_as', RunAs),
482
517
  schema=d.get('schema', None),
483
518
  serverless=d.get('serverless', None),
484
519
  storage=d.get('storage', None),
@@ -2105,7 +2140,7 @@ class RestartWindow:
2105
2140
  """An integer between 0 and 23 denoting the start hour for the restart window in the 24-hour day.
2106
2141
  Continuous pipeline restart is triggered only within a five-hour window starting at this hour."""
2107
2142
 
2108
- days_of_week: Optional[List[RestartWindowDaysOfWeek]] = None
2143
+ days_of_week: Optional[List[DayOfWeek]] = None
2109
2144
  """Days of week in which the restart is allowed to happen (within a five-hour window starting at
2110
2145
  start_hour). If not specified all days of the week will be used."""
2111
2146
 
@@ -2133,22 +2168,48 @@ class RestartWindow:
2133
2168
  @classmethod
2134
2169
  def from_dict(cls, d: Dict[str, any]) -> RestartWindow:
2135
2170
  """Deserializes the RestartWindow from a dictionary."""
2136
- return cls(days_of_week=_repeated_enum(d, 'days_of_week', RestartWindowDaysOfWeek),
2171
+ return cls(days_of_week=_repeated_enum(d, 'days_of_week', DayOfWeek),
2137
2172
  start_hour=d.get('start_hour', None),
2138
2173
  time_zone_id=d.get('time_zone_id', None))
2139
2174
 
2140
2175
 
2141
- class RestartWindowDaysOfWeek(Enum):
2142
- """Days of week in which the restart is allowed to happen (within a five-hour window starting at
2143
- start_hour). If not specified all days of the week will be used."""
2176
+ @dataclass
2177
+ class RunAs:
2178
+ """Write-only setting, available only in Create/Update calls. Specifies the user or service
2179
+ principal that the pipeline runs as. If not specified, the pipeline runs as the user who created
2180
+ the pipeline.
2181
+
2182
+ Only `user_name` or `service_principal_name` can be specified. If both are specified, an error
2183
+ is thrown."""
2144
2184
 
2145
- FRIDAY = 'FRIDAY'
2146
- MONDAY = 'MONDAY'
2147
- SATURDAY = 'SATURDAY'
2148
- SUNDAY = 'SUNDAY'
2149
- THURSDAY = 'THURSDAY'
2150
- TUESDAY = 'TUESDAY'
2151
- WEDNESDAY = 'WEDNESDAY'
2185
+ service_principal_name: Optional[str] = None
2186
+ """Application ID of an active service principal. Setting this field requires the
2187
+ `servicePrincipal/user` role."""
2188
+
2189
+ user_name: Optional[str] = None
2190
+ """The email of an active workspace user. Users can only set this field to their own email."""
2191
+
2192
+ def as_dict(self) -> dict:
2193
+ """Serializes the RunAs into a dictionary suitable for use as a JSON request body."""
2194
+ body = {}
2195
+ if self.service_principal_name is not None:
2196
+ body['service_principal_name'] = self.service_principal_name
2197
+ if self.user_name is not None: body['user_name'] = self.user_name
2198
+ return body
2199
+
2200
+ def as_shallow_dict(self) -> dict:
2201
+ """Serializes the RunAs into a shallow dictionary of its immediate attributes."""
2202
+ body = {}
2203
+ if self.service_principal_name is not None:
2204
+ body['service_principal_name'] = self.service_principal_name
2205
+ if self.user_name is not None: body['user_name'] = self.user_name
2206
+ return body
2207
+
2208
+ @classmethod
2209
+ def from_dict(cls, d: Dict[str, any]) -> RunAs:
2210
+ """Deserializes the RunAs from a dictionary."""
2211
+ return cls(service_principal_name=d.get('service_principal_name', None),
2212
+ user_name=d.get('user_name', None))
2152
2213
 
2153
2214
 
2154
2215
  @dataclass
@@ -2791,6 +2852,7 @@ class PipelinesAPI:
2791
2852
  notifications: Optional[List[Notifications]] = None,
2792
2853
  photon: Optional[bool] = None,
2793
2854
  restart_window: Optional[RestartWindow] = None,
2855
+ run_as: Optional[RunAs] = None,
2794
2856
  schema: Optional[str] = None,
2795
2857
  serverless: Optional[bool] = None,
2796
2858
  storage: Optional[str] = None,
@@ -2843,6 +2905,12 @@ class PipelinesAPI:
2843
2905
  Whether Photon is enabled for this pipeline.
2844
2906
  :param restart_window: :class:`RestartWindow` (optional)
2845
2907
  Restart window of this pipeline.
2908
+ :param run_as: :class:`RunAs` (optional)
2909
+ Write-only setting, available only in Create/Update calls. Specifies the user or service principal
2910
+ that the pipeline runs as. If not specified, the pipeline runs as the user who created the pipeline.
2911
+
2912
+ Only `user_name` or `service_principal_name` can be specified. If both are specified, an error is
2913
+ thrown.
2846
2914
  :param schema: str (optional)
2847
2915
  The default schema (database) where tables are read from or published to. The presence of this field
2848
2916
  implies that the pipeline is in direct publishing mode.
@@ -2879,6 +2947,7 @@ class PipelinesAPI:
2879
2947
  if notifications is not None: body['notifications'] = [v.as_dict() for v in notifications]
2880
2948
  if photon is not None: body['photon'] = photon
2881
2949
  if restart_window is not None: body['restart_window'] = restart_window.as_dict()
2950
+ if run_as is not None: body['run_as'] = run_as.as_dict()
2882
2951
  if schema is not None: body['schema'] = schema
2883
2952
  if serverless is not None: body['serverless'] = serverless
2884
2953
  if storage is not None: body['storage'] = storage
@@ -3213,6 +3282,7 @@ class PipelinesAPI:
3213
3282
  notifications: Optional[List[Notifications]] = None,
3214
3283
  photon: Optional[bool] = None,
3215
3284
  restart_window: Optional[RestartWindow] = None,
3285
+ run_as: Optional[RunAs] = None,
3216
3286
  schema: Optional[str] = None,
3217
3287
  serverless: Optional[bool] = None,
3218
3288
  storage: Optional[str] = None,
@@ -3268,6 +3338,12 @@ class PipelinesAPI:
3268
3338
  Whether Photon is enabled for this pipeline.
3269
3339
  :param restart_window: :class:`RestartWindow` (optional)
3270
3340
  Restart window of this pipeline.
3341
+ :param run_as: :class:`RunAs` (optional)
3342
+ Write-only setting, available only in Create/Update calls. Specifies the user or service principal
3343
+ that the pipeline runs as. If not specified, the pipeline runs as the user who created the pipeline.
3344
+
3345
+ Only `user_name` or `service_principal_name` can be specified. If both are specified, an error is
3346
+ thrown.
3271
3347
  :param schema: str (optional)
3272
3348
  The default schema (database) where tables are read from or published to. The presence of this field
3273
3349
  implies that the pipeline is in direct publishing mode.
@@ -3304,6 +3380,7 @@ class PipelinesAPI:
3304
3380
  if notifications is not None: body['notifications'] = [v.as_dict() for v in notifications]
3305
3381
  if photon is not None: body['photon'] = photon
3306
3382
  if restart_window is not None: body['restart_window'] = restart_window.as_dict()
3383
+ if run_as is not None: body['run_as'] = run_as.as_dict()
3307
3384
  if schema is not None: body['schema'] = schema
3308
3385
  if serverless is not None: body['serverless'] = serverless
3309
3386
  if storage is not None: body['storage'] = storage