databricks-sdk 0.48.0__py3-none-any.whl → 0.50.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.

@@ -21,6 +21,87 @@ from databricks.sdk.service import sql
21
21
  # all definitions in this file are in alphabetical order
22
22
 
23
23
 
24
+ @dataclass
25
+ class AuthorizationDetails:
26
+ grant_rules: Optional[List[AuthorizationDetailsGrantRule]] = None
27
+ """Represents downscoped permission rules with specific access rights. This field is specific to
28
+ `workspace_rule_set` constraint."""
29
+
30
+ resource_legacy_acl_path: Optional[str] = None
31
+ """The acl path of the tree store resource resource."""
32
+
33
+ resource_name: Optional[str] = None
34
+ """The resource name to which the authorization rule applies. This field is specific to
35
+ `workspace_rule_set` constraint. Format: `workspaces/{workspace_id}/dashboards/{dashboard_id}`"""
36
+
37
+ type: Optional[str] = None
38
+ """The type of authorization downscoping policy. Ex: `workspace_rule_set` defines access rules for
39
+ a specific workspace resource"""
40
+
41
+ def as_dict(self) -> dict:
42
+ """Serializes the AuthorizationDetails into a dictionary suitable for use as a JSON request body."""
43
+ body = {}
44
+ if self.grant_rules:
45
+ body["grant_rules"] = [v.as_dict() for v in self.grant_rules]
46
+ if self.resource_legacy_acl_path is not None:
47
+ body["resource_legacy_acl_path"] = self.resource_legacy_acl_path
48
+ if self.resource_name is not None:
49
+ body["resource_name"] = self.resource_name
50
+ if self.type is not None:
51
+ body["type"] = self.type
52
+ return body
53
+
54
+ def as_shallow_dict(self) -> dict:
55
+ """Serializes the AuthorizationDetails into a shallow dictionary of its immediate attributes."""
56
+ body = {}
57
+ if self.grant_rules:
58
+ body["grant_rules"] = self.grant_rules
59
+ if self.resource_legacy_acl_path is not None:
60
+ body["resource_legacy_acl_path"] = self.resource_legacy_acl_path
61
+ if self.resource_name is not None:
62
+ body["resource_name"] = self.resource_name
63
+ if self.type is not None:
64
+ body["type"] = self.type
65
+ return body
66
+
67
+ @classmethod
68
+ def from_dict(cls, d: Dict[str, Any]) -> AuthorizationDetails:
69
+ """Deserializes the AuthorizationDetails from a dictionary."""
70
+ return cls(
71
+ grant_rules=_repeated_dict(d, "grant_rules", AuthorizationDetailsGrantRule),
72
+ resource_legacy_acl_path=d.get("resource_legacy_acl_path", None),
73
+ resource_name=d.get("resource_name", None),
74
+ type=d.get("type", None),
75
+ )
76
+
77
+
78
+ @dataclass
79
+ class AuthorizationDetailsGrantRule:
80
+ permission_set: Optional[str] = None
81
+ """Permission sets for dashboard are defined in
82
+ iam-common/rbac-common/permission-sets/definitions/TreeStoreBasePermissionSets Ex:
83
+ `permissionSets/dashboard.runner`"""
84
+
85
+ def as_dict(self) -> dict:
86
+ """Serializes the AuthorizationDetailsGrantRule into a dictionary suitable for use as a JSON request body."""
87
+ body = {}
88
+ if self.permission_set is not None:
89
+ body["permission_set"] = self.permission_set
90
+ return body
91
+
92
+ def as_shallow_dict(self) -> dict:
93
+ """Serializes the AuthorizationDetailsGrantRule into a shallow dictionary of its immediate attributes."""
94
+ body = {}
95
+ if self.permission_set is not None:
96
+ body["permission_set"] = self.permission_set
97
+ return body
98
+
99
+ @classmethod
100
+ def from_dict(cls, d: Dict[str, Any]) -> AuthorizationDetailsGrantRule:
101
+ """Deserializes the AuthorizationDetailsGrantRule from a dictionary."""
102
+ return cls(permission_set=d.get("permission_set", None))
103
+
104
+
24
105
  @dataclass
25
106
  class CancelQueryExecutionResponse:
26
107
  status: Optional[List[CancelQueryExecutionResponseStatus]] = None
@@ -529,6 +610,57 @@ class GenieCreateConversationMessageRequest:
529
610
  )
530
611
 
531
612
 
613
+ @dataclass
614
+ class GenieGenerateDownloadFullQueryResultResponse:
615
+ download_id: Optional[str] = None
616
+ """Download ID. Use this ID to track the download request in subsequent polling calls"""
617
+
618
+ def as_dict(self) -> dict:
619
+ """Serializes the GenieGenerateDownloadFullQueryResultResponse into a dictionary suitable for use as a JSON request body."""
620
+ body = {}
621
+ if self.download_id is not None:
622
+ body["download_id"] = self.download_id
623
+ return body
624
+
625
+ def as_shallow_dict(self) -> dict:
626
+ """Serializes the GenieGenerateDownloadFullQueryResultResponse into a shallow dictionary of its immediate attributes."""
627
+ body = {}
628
+ if self.download_id is not None:
629
+ body["download_id"] = self.download_id
630
+ return body
631
+
632
+ @classmethod
633
+ def from_dict(cls, d: Dict[str, Any]) -> GenieGenerateDownloadFullQueryResultResponse:
634
+ """Deserializes the GenieGenerateDownloadFullQueryResultResponse from a dictionary."""
635
+ return cls(download_id=d.get("download_id", None))
636
+
637
+
638
+ @dataclass
639
+ class GenieGetDownloadFullQueryResultResponse:
640
+ statement_response: Optional[sql.StatementResponse] = None
641
+ """SQL Statement Execution response. See [Get status, manifest, and result first
642
+ chunk](:method:statementexecution/getstatement) for more details."""
643
+
644
+ def as_dict(self) -> dict:
645
+ """Serializes the GenieGetDownloadFullQueryResultResponse into a dictionary suitable for use as a JSON request body."""
646
+ body = {}
647
+ if self.statement_response:
648
+ body["statement_response"] = self.statement_response.as_dict()
649
+ return body
650
+
651
+ def as_shallow_dict(self) -> dict:
652
+ """Serializes the GenieGetDownloadFullQueryResultResponse into a shallow dictionary of its immediate attributes."""
653
+ body = {}
654
+ if self.statement_response:
655
+ body["statement_response"] = self.statement_response
656
+ return body
657
+
658
+ @classmethod
659
+ def from_dict(cls, d: Dict[str, Any]) -> GenieGetDownloadFullQueryResultResponse:
660
+ """Deserializes the GenieGetDownloadFullQueryResultResponse from a dictionary."""
661
+ return cls(statement_response=_from_dict(d, "statement_response", sql.StatementResponse))
662
+
663
+
532
664
  @dataclass
533
665
  class GenieGetMessageQueryResultResponse:
534
666
  statement_response: Optional[sql.StatementResponse] = None
@@ -929,6 +1061,52 @@ class GetPublishedDashboardEmbeddedResponse:
929
1061
  return cls()
930
1062
 
931
1063
 
1064
+ @dataclass
1065
+ class GetPublishedDashboardTokenInfoResponse:
1066
+ authorization_details: Optional[List[AuthorizationDetails]] = None
1067
+ """Authorization constraints for accessing the published dashboard. Currently includes
1068
+ `workspace_rule_set` and could be enriched with `unity_catalog_privileges` before oAuth token
1069
+ generation."""
1070
+
1071
+ custom_claim: Optional[str] = None
1072
+ """Custom claim generated from external_value and external_viewer_id. Format:
1073
+ `urn:aibi:external_data:<external_value>:<external_viewer_id>:<dashboard_id>`"""
1074
+
1075
+ scope: Optional[str] = None
1076
+ """Scope defining access permissions."""
1077
+
1078
+ def as_dict(self) -> dict:
1079
+ """Serializes the GetPublishedDashboardTokenInfoResponse into a dictionary suitable for use as a JSON request body."""
1080
+ body = {}
1081
+ if self.authorization_details:
1082
+ body["authorization_details"] = [v.as_dict() for v in self.authorization_details]
1083
+ if self.custom_claim is not None:
1084
+ body["custom_claim"] = self.custom_claim
1085
+ if self.scope is not None:
1086
+ body["scope"] = self.scope
1087
+ return body
1088
+
1089
+ def as_shallow_dict(self) -> dict:
1090
+ """Serializes the GetPublishedDashboardTokenInfoResponse into a shallow dictionary of its immediate attributes."""
1091
+ body = {}
1092
+ if self.authorization_details:
1093
+ body["authorization_details"] = self.authorization_details
1094
+ if self.custom_claim is not None:
1095
+ body["custom_claim"] = self.custom_claim
1096
+ if self.scope is not None:
1097
+ body["scope"] = self.scope
1098
+ return body
1099
+
1100
+ @classmethod
1101
+ def from_dict(cls, d: Dict[str, Any]) -> GetPublishedDashboardTokenInfoResponse:
1102
+ """Deserializes the GetPublishedDashboardTokenInfoResponse from a dictionary."""
1103
+ return cls(
1104
+ authorization_details=_repeated_dict(d, "authorization_details", AuthorizationDetails),
1105
+ custom_claim=d.get("custom_claim", None),
1106
+ scope=d.get("scope", None),
1107
+ )
1108
+
1109
+
932
1110
  class LifecycleState(Enum):
933
1111
 
934
1112
  ACTIVE = "ACTIVE"
@@ -1082,6 +1260,7 @@ class MessageErrorType(Enum):
1082
1260
  FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION = "FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION"
1083
1261
  FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION = "FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION"
1084
1262
  FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION = "FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION"
1263
+ GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION = "GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION"
1085
1264
  GENERIC_CHAT_COMPLETION_EXCEPTION = "GENERIC_CHAT_COMPLETION_EXCEPTION"
1086
1265
  GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION = "GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION"
1087
1266
  GENERIC_SQL_EXEC_API_CALL_EXCEPTION = "GENERIC_SQL_EXEC_API_CALL_EXCEPTION"
@@ -1096,6 +1275,7 @@ class MessageErrorType(Enum):
1096
1275
  MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION = "MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION"
1097
1276
  MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION = "MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION"
1098
1277
  MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION = "MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION"
1278
+ MISSING_SQL_QUERY_EXCEPTION = "MISSING_SQL_QUERY_EXCEPTION"
1099
1279
  NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE = "NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE"
1100
1280
  NO_QUERY_TO_VISUALIZE_EXCEPTION = "NO_QUERY_TO_VISUALIZE_EXCEPTION"
1101
1281
  NO_TABLES_TO_QUERY_EXCEPTION = "NO_TABLES_TO_QUERY_EXCEPTION"
@@ -1987,6 +2167,82 @@ class GenieAPI:
1987
2167
  )
1988
2168
  return GenieGetMessageQueryResultResponse.from_dict(res)
1989
2169
 
2170
+ def generate_download_full_query_result(
2171
+ self, space_id: str, conversation_id: str, message_id: str, attachment_id: str
2172
+ ) -> GenieGenerateDownloadFullQueryResultResponse:
2173
+ """Generate full query result download.
2174
+
2175
+ Initiate full SQL query result download and obtain a `download_id` to track the download progress.
2176
+ This call initiates a new SQL execution to generate the query result. The result is stored in an
2177
+ external link can be retrieved using the [Get Download Full Query
2178
+ Result](:method:genie/getdownloadfullqueryresult) API. Warning: Databricks strongly recommends that
2179
+ you protect the URLs that are returned by the `EXTERNAL_LINKS` disposition. See [Execute
2180
+ Statement](:method:statementexecution/executestatement) for more details.
2181
+
2182
+ :param space_id: str
2183
+ Space ID
2184
+ :param conversation_id: str
2185
+ Conversation ID
2186
+ :param message_id: str
2187
+ Message ID
2188
+ :param attachment_id: str
2189
+ Attachment ID
2190
+
2191
+ :returns: :class:`GenieGenerateDownloadFullQueryResultResponse`
2192
+ """
2193
+
2194
+ headers = {
2195
+ "Accept": "application/json",
2196
+ }
2197
+
2198
+ res = self._api.do(
2199
+ "POST",
2200
+ f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/attachments/{attachment_id}/downloads",
2201
+ headers=headers,
2202
+ )
2203
+ return GenieGenerateDownloadFullQueryResultResponse.from_dict(res)
2204
+
2205
+ def get_download_full_query_result(
2206
+ self, space_id: str, conversation_id: str, message_id: str, attachment_id: str, download_id: str
2207
+ ) -> GenieGetDownloadFullQueryResultResponse:
2208
+ """Get download full query result.
2209
+
2210
+ After [Generating a Full Query Result Download](:method:genie/getdownloadfullqueryresult) and
2211
+ successfully receiving a `download_id`, use this API to Poll download progress and retrieve the SQL
2212
+ query result external link(s) upon completion. Warning: Databricks strongly recommends that you
2213
+ protect the URLs that are returned by the `EXTERNAL_LINKS` disposition. When you use the
2214
+ `EXTERNAL_LINKS` disposition, a short-lived, presigned URL is generated, which can be used to download
2215
+ the results directly from Amazon S3. As a short-lived access credential is embedded in this presigned
2216
+ URL, you should protect the URL. Because presigned URLs are already generated with embedded temporary
2217
+ access credentials, you must not set an Authorization header in the download requests. See [Execute
2218
+ Statement](:method:statementexecution/executestatement) for more details.
2219
+
2220
+ :param space_id: str
2221
+ Space ID
2222
+ :param conversation_id: str
2223
+ Conversation ID
2224
+ :param message_id: str
2225
+ Message ID
2226
+ :param attachment_id: str
2227
+ Attachment ID
2228
+ :param download_id: str
2229
+ Download ID. This ID is provided by the [Generate Download
2230
+ endpoint](:method:genie/generateDownloadFullQueryResult)
2231
+
2232
+ :returns: :class:`GenieGetDownloadFullQueryResultResponse`
2233
+ """
2234
+
2235
+ headers = {
2236
+ "Accept": "application/json",
2237
+ }
2238
+
2239
+ res = self._api.do(
2240
+ "GET",
2241
+ f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/attachments/{attachment_id}/downloads/{download_id}",
2242
+ headers=headers,
2243
+ )
2244
+ return GenieGetDownloadFullQueryResultResponse.from_dict(res)
2245
+
1990
2246
  def get_message(self, space_id: str, conversation_id: str, message_id: str) -> GenieMessage:
1991
2247
  """Get conversation message.
1992
2248
 
@@ -2663,6 +2919,42 @@ class LakeviewEmbeddedAPI:
2663
2919
 
2664
2920
  self._api.do("GET", f"/api/2.0/lakeview/dashboards/{dashboard_id}/published/embedded", headers=headers)
2665
2921
 
2922
+ def get_published_dashboard_token_info(
2923
+ self, dashboard_id: str, *, external_value: Optional[str] = None, external_viewer_id: Optional[str] = None
2924
+ ) -> GetPublishedDashboardTokenInfoResponse:
2925
+ """Read an information of a published dashboard to mint an OAuth token.
2926
+
2927
+ Get a required authorization details and scopes of a published dashboard to mint an OAuth token. The
2928
+ `authorization_details` can be enriched to apply additional restriction.
2929
+
2930
+ Example: Adding the following `authorization_details` object to downscope the viewer permission to
2931
+ specific table ``` { type: "unity_catalog_privileges", privileges: ["SELECT"], object_type: "TABLE",
2932
+ object_full_path: "main.default.testdata" } ```
2933
+
2934
+ :param dashboard_id: str
2935
+ UUID identifying the published dashboard.
2936
+ :param external_value: str (optional)
2937
+ Provided external value to be included in the custom claim.
2938
+ :param external_viewer_id: str (optional)
2939
+ Provided external viewer id to be included in the custom claim.
2940
+
2941
+ :returns: :class:`GetPublishedDashboardTokenInfoResponse`
2942
+ """
2943
+
2944
+ query = {}
2945
+ if external_value is not None:
2946
+ query["external_value"] = external_value
2947
+ if external_viewer_id is not None:
2948
+ query["external_viewer_id"] = external_viewer_id
2949
+ headers = {
2950
+ "Accept": "application/json",
2951
+ }
2952
+
2953
+ res = self._api.do(
2954
+ "GET", f"/api/2.0/lakeview/dashboards/{dashboard_id}/published/tokeninfo", query=query, headers=headers
2955
+ )
2956
+ return GetPublishedDashboardTokenInfoResponse.from_dict(res)
2957
+
2666
2958
 
2667
2959
  class QueryExecutionAPI:
2668
2960
  """Query execution APIs for AI / BI Dashboards"""
@@ -846,7 +846,7 @@ class ObjectPermissions:
846
846
  @dataclass
847
847
  class PartialUpdate:
848
848
  id: Optional[str] = None
849
- """Unique ID for a user in the Databricks workspace."""
849
+ """Unique ID in the Databricks workspace."""
850
850
 
851
851
  operations: Optional[List[Patch]] = None
852
852
 
@@ -1918,8 +1918,7 @@ class User:
1918
1918
  groups: Optional[List[ComplexValue]] = None
1919
1919
 
1920
1920
  id: Optional[str] = None
1921
- """Databricks user ID. This is automatically set by Databricks. Any value provided by the client
1922
- will be ignored."""
1921
+ """Databricks user ID."""
1923
1922
 
1924
1923
  name: Optional[Name] = None
1925
1924
 
@@ -2480,7 +2479,7 @@ class AccountGroupsAPI:
2480
2479
  Partially updates the details of a group.
2481
2480
 
2482
2481
  :param id: str
2483
- Unique ID for a group in the Databricks account.
2482
+ Unique ID in the Databricks workspace.
2484
2483
  :param operations: List[:class:`Patch`] (optional)
2485
2484
  :param schemas: List[:class:`PatchSchema`] (optional)
2486
2485
  The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"].
@@ -2493,7 +2492,6 @@ class AccountGroupsAPI:
2493
2492
  if schemas is not None:
2494
2493
  body["schemas"] = [v.value for v in schemas]
2495
2494
  headers = {
2496
- "Accept": "application/json",
2497
2495
  "Content-Type": "application/json",
2498
2496
  }
2499
2497
 
@@ -2557,7 +2555,6 @@ class AccountGroupsAPI:
2557
2555
  if schemas is not None:
2558
2556
  body["schemas"] = [v.value for v in schemas]
2559
2557
  headers = {
2560
- "Accept": "application/json",
2561
2558
  "Content-Type": "application/json",
2562
2559
  }
2563
2560
 
@@ -2765,7 +2762,7 @@ class AccountServicePrincipalsAPI:
2765
2762
  Partially updates the details of a single service principal in the Databricks account.
2766
2763
 
2767
2764
  :param id: str
2768
- Unique ID for a service principal in the Databricks account.
2765
+ Unique ID in the Databricks workspace.
2769
2766
  :param operations: List[:class:`Patch`] (optional)
2770
2767
  :param schemas: List[:class:`PatchSchema`] (optional)
2771
2768
  The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"].
@@ -2778,7 +2775,6 @@ class AccountServicePrincipalsAPI:
2778
2775
  if schemas is not None:
2779
2776
  body["schemas"] = [v.value for v in schemas]
2780
2777
  headers = {
2781
- "Accept": "application/json",
2782
2778
  "Content-Type": "application/json",
2783
2779
  }
2784
2780
 
@@ -2848,7 +2844,6 @@ class AccountServicePrincipalsAPI:
2848
2844
  if schemas is not None:
2849
2845
  body["schemas"] = [v.value for v in schemas]
2850
2846
  headers = {
2851
- "Accept": "application/json",
2852
2847
  "Content-Type": "application/json",
2853
2848
  }
2854
2849
 
@@ -2912,8 +2907,7 @@ class AccountUsersAPI:
2912
2907
  External ID is not currently supported. It is reserved for future use.
2913
2908
  :param groups: List[:class:`ComplexValue`] (optional)
2914
2909
  :param id: str (optional)
2915
- Databricks user ID. This is automatically set by Databricks. Any value provided by the client will
2916
- be ignored.
2910
+ Databricks user ID.
2917
2911
  :param name: :class:`Name` (optional)
2918
2912
  :param roles: List[:class:`ComplexValue`] (optional)
2919
2913
  Corresponds to AWS instance profile/arn role.
@@ -3123,7 +3117,7 @@ class AccountUsersAPI:
3123
3117
  Partially updates a user resource by applying the supplied operations on specific user attributes.
3124
3118
 
3125
3119
  :param id: str
3126
- Unique ID for a user in the Databricks account.
3120
+ Unique ID in the Databricks workspace.
3127
3121
  :param operations: List[:class:`Patch`] (optional)
3128
3122
  :param schemas: List[:class:`PatchSchema`] (optional)
3129
3123
  The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"].
@@ -3136,7 +3130,6 @@ class AccountUsersAPI:
3136
3130
  if schemas is not None:
3137
3131
  body["schemas"] = [v.value for v in schemas]
3138
3132
  headers = {
3139
- "Accept": "application/json",
3140
3133
  "Content-Type": "application/json",
3141
3134
  }
3142
3135
 
@@ -3164,8 +3157,7 @@ class AccountUsersAPI:
3164
3157
  Replaces a user's information with the data supplied in request.
3165
3158
 
3166
3159
  :param id: str
3167
- Databricks user ID. This is automatically set by Databricks. Any value provided by the client will
3168
- be ignored.
3160
+ Databricks user ID.
3169
3161
  :param active: bool (optional)
3170
3162
  If this user is active
3171
3163
  :param display_name: str (optional)
@@ -3215,7 +3207,6 @@ class AccountUsersAPI:
3215
3207
  if user_name is not None:
3216
3208
  body["userName"] = user_name
3217
3209
  headers = {
3218
- "Accept": "application/json",
3219
3210
  "Content-Type": "application/json",
3220
3211
  }
3221
3212
 
@@ -3434,7 +3425,7 @@ class GroupsAPI:
3434
3425
  Partially updates the details of a group.
3435
3426
 
3436
3427
  :param id: str
3437
- Unique ID for a group in the Databricks workspace.
3428
+ Unique ID in the Databricks workspace.
3438
3429
  :param operations: List[:class:`Patch`] (optional)
3439
3430
  :param schemas: List[:class:`PatchSchema`] (optional)
3440
3431
  The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"].
@@ -3447,7 +3438,6 @@ class GroupsAPI:
3447
3438
  if schemas is not None:
3448
3439
  body["schemas"] = [v.value for v in schemas]
3449
3440
  headers = {
3450
- "Accept": "application/json",
3451
3441
  "Content-Type": "application/json",
3452
3442
  }
3453
3443
 
@@ -3509,7 +3499,6 @@ class GroupsAPI:
3509
3499
  if schemas is not None:
3510
3500
  body["schemas"] = [v.value for v in schemas]
3511
3501
  headers = {
3512
- "Accept": "application/json",
3513
3502
  "Content-Type": "application/json",
3514
3503
  }
3515
3504
 
@@ -3922,7 +3911,7 @@ class ServicePrincipalsAPI:
3922
3911
  Partially updates the details of a single service principal in the Databricks workspace.
3923
3912
 
3924
3913
  :param id: str
3925
- Unique ID for a service principal in the Databricks workspace.
3914
+ Unique ID in the Databricks workspace.
3926
3915
  :param operations: List[:class:`Patch`] (optional)
3927
3916
  :param schemas: List[:class:`PatchSchema`] (optional)
3928
3917
  The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"].
@@ -3935,7 +3924,6 @@ class ServicePrincipalsAPI:
3935
3924
  if schemas is not None:
3936
3925
  body["schemas"] = [v.value for v in schemas]
3937
3926
  headers = {
3938
- "Accept": "application/json",
3939
3927
  "Content-Type": "application/json",
3940
3928
  }
3941
3929
 
@@ -4000,7 +3988,6 @@ class ServicePrincipalsAPI:
4000
3988
  if schemas is not None:
4001
3989
  body["schemas"] = [v.value for v in schemas]
4002
3990
  headers = {
4003
- "Accept": "application/json",
4004
3991
  "Content-Type": "application/json",
4005
3992
  }
4006
3993
 
@@ -4059,8 +4046,7 @@ class UsersAPI:
4059
4046
  External ID is not currently supported. It is reserved for future use.
4060
4047
  :param groups: List[:class:`ComplexValue`] (optional)
4061
4048
  :param id: str (optional)
4062
- Databricks user ID. This is automatically set by Databricks. Any value provided by the client will
4063
- be ignored.
4049
+ Databricks user ID.
4064
4050
  :param name: :class:`Name` (optional)
4065
4051
  :param roles: List[:class:`ComplexValue`] (optional)
4066
4052
  Corresponds to AWS instance profile/arn role.
@@ -4294,7 +4280,7 @@ class UsersAPI:
4294
4280
  Partially updates a user resource by applying the supplied operations on specific user attributes.
4295
4281
 
4296
4282
  :param id: str
4297
- Unique ID for a user in the Databricks workspace.
4283
+ Unique ID in the Databricks workspace.
4298
4284
  :param operations: List[:class:`Patch`] (optional)
4299
4285
  :param schemas: List[:class:`PatchSchema`] (optional)
4300
4286
  The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"].
@@ -4307,7 +4293,6 @@ class UsersAPI:
4307
4293
  if schemas is not None:
4308
4294
  body["schemas"] = [v.value for v in schemas]
4309
4295
  headers = {
4310
- "Accept": "application/json",
4311
4296
  "Content-Type": "application/json",
4312
4297
  }
4313
4298
 
@@ -4356,8 +4341,7 @@ class UsersAPI:
4356
4341
  Replaces a user's information with the data supplied in request.
4357
4342
 
4358
4343
  :param id: str
4359
- Databricks user ID. This is automatically set by Databricks. Any value provided by the client will
4360
- be ignored.
4344
+ Databricks user ID.
4361
4345
  :param active: bool (optional)
4362
4346
  If this user is active
4363
4347
  :param display_name: str (optional)
@@ -4407,7 +4391,6 @@ class UsersAPI:
4407
4391
  if user_name is not None:
4408
4392
  body["userName"] = user_name
4409
4393
  headers = {
4410
- "Accept": "application/json",
4411
4394
  "Content-Type": "application/json",
4412
4395
  }
4413
4396