databricks-sdk 0.63.0__py3-none-any.whl → 0.64.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.
- databricks/sdk/__init__.py +45 -3
- databricks/sdk/service/agentbricks.py +3 -3
- databricks/sdk/service/apps.py +519 -0
- databricks/sdk/service/catalog.py +712 -45
- databricks/sdk/service/cleanrooms.py +3 -3
- databricks/sdk/service/dashboards.py +155 -6
- databricks/sdk/service/jobs.py +36 -4
- databricks/sdk/service/serving.py +16 -0
- databricks/sdk/service/settingsv2.py +937 -0
- databricks/sdk/service/sharing.py +1 -28
- databricks/sdk/service/sql.py +64 -1
- databricks/sdk/service/tags.py +232 -0
- databricks/sdk/service/vectorsearch.py +13 -2
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.63.0.dist-info → databricks_sdk-0.64.0.dist-info}/METADATA +1 -1
- {databricks_sdk-0.63.0.dist-info → databricks_sdk-0.64.0.dist-info}/RECORD +20 -18
- {databricks_sdk-0.63.0.dist-info → databricks_sdk-0.64.0.dist-info}/WHEEL +0 -0
- {databricks_sdk-0.63.0.dist-info → databricks_sdk-0.64.0.dist-info}/licenses/LICENSE +0 -0
- {databricks_sdk-0.63.0.dist-info → databricks_sdk-0.64.0.dist-info}/licenses/NOTICE +0 -0
- {databricks_sdk-0.63.0.dist-info → databricks_sdk-0.64.0.dist-info}/top_level.txt +0 -0
|
@@ -45,7 +45,7 @@ class CleanRoom:
|
|
|
45
45
|
using the separate CreateCleanRoomOutputCatalog API."""
|
|
46
46
|
|
|
47
47
|
owner: Optional[str] = None
|
|
48
|
-
"""This is Databricks username of the owner of the local clean room securable for permission
|
|
48
|
+
"""This is the Databricks username of the owner of the local clean room securable for permission
|
|
49
49
|
management."""
|
|
50
50
|
|
|
51
51
|
remote_detailed_info: Optional[CleanRoomRemoteDetail] = None
|
|
@@ -358,7 +358,7 @@ class CleanRoomAssetNotebook:
|
|
|
358
358
|
"""All existing approvals or rejections"""
|
|
359
359
|
|
|
360
360
|
runner_collaborator_aliases: Optional[List[str]] = None
|
|
361
|
-
"""collaborators that can run the notebook"""
|
|
361
|
+
"""Aliases of collaborators that can run the notebook."""
|
|
362
362
|
|
|
363
363
|
def as_dict(self) -> dict:
|
|
364
364
|
"""Serializes the CleanRoomAssetNotebook into a dictionary suitable for use as a JSON request body."""
|
|
@@ -643,7 +643,7 @@ class CleanRoomCollaborator:
|
|
|
643
643
|
It is not restricted to these values and could change in the future"""
|
|
644
644
|
|
|
645
645
|
global_metastore_id: Optional[str] = None
|
|
646
|
-
"""The global Unity Catalog metastore
|
|
646
|
+
"""The global Unity Catalog metastore ID of the collaborator. The identifier is of format
|
|
647
647
|
cloud:region:metastore-uuid."""
|
|
648
648
|
|
|
649
649
|
invite_recipient_email: Optional[str] = None
|
|
@@ -413,6 +413,14 @@ class GenieConversationSummary:
|
|
|
413
413
|
)
|
|
414
414
|
|
|
415
415
|
|
|
416
|
+
class GenieFeedbackRating(Enum):
|
|
417
|
+
"""Feedback rating for Genie messages"""
|
|
418
|
+
|
|
419
|
+
NEGATIVE = "NEGATIVE"
|
|
420
|
+
NONE = "NONE"
|
|
421
|
+
POSITIVE = "POSITIVE"
|
|
422
|
+
|
|
423
|
+
|
|
416
424
|
@dataclass
|
|
417
425
|
class GenieGetMessageQueryResultResponse:
|
|
418
426
|
statement_response: Optional[sql.StatementResponse] = None
|
|
@@ -439,6 +447,38 @@ class GenieGetMessageQueryResultResponse:
|
|
|
439
447
|
return cls(statement_response=_from_dict(d, "statement_response", sql.StatementResponse))
|
|
440
448
|
|
|
441
449
|
|
|
450
|
+
@dataclass
|
|
451
|
+
class GenieListConversationMessagesResponse:
|
|
452
|
+
messages: Optional[List[GenieMessage]] = None
|
|
453
|
+
"""List of messages in the conversation."""
|
|
454
|
+
|
|
455
|
+
next_page_token: Optional[str] = None
|
|
456
|
+
"""The token to use for retrieving the next page of results."""
|
|
457
|
+
|
|
458
|
+
def as_dict(self) -> dict:
|
|
459
|
+
"""Serializes the GenieListConversationMessagesResponse into a dictionary suitable for use as a JSON request body."""
|
|
460
|
+
body = {}
|
|
461
|
+
if self.messages:
|
|
462
|
+
body["messages"] = [v.as_dict() for v in self.messages]
|
|
463
|
+
if self.next_page_token is not None:
|
|
464
|
+
body["next_page_token"] = self.next_page_token
|
|
465
|
+
return body
|
|
466
|
+
|
|
467
|
+
def as_shallow_dict(self) -> dict:
|
|
468
|
+
"""Serializes the GenieListConversationMessagesResponse into a shallow dictionary of its immediate attributes."""
|
|
469
|
+
body = {}
|
|
470
|
+
if self.messages:
|
|
471
|
+
body["messages"] = self.messages
|
|
472
|
+
if self.next_page_token is not None:
|
|
473
|
+
body["next_page_token"] = self.next_page_token
|
|
474
|
+
return body
|
|
475
|
+
|
|
476
|
+
@classmethod
|
|
477
|
+
def from_dict(cls, d: Dict[str, Any]) -> GenieListConversationMessagesResponse:
|
|
478
|
+
"""Deserializes the GenieListConversationMessagesResponse from a dictionary."""
|
|
479
|
+
return cls(messages=_repeated_dict(d, "messages", GenieMessage), next_page_token=d.get("next_page_token", None))
|
|
480
|
+
|
|
481
|
+
|
|
442
482
|
@dataclass
|
|
443
483
|
class GenieListConversationsResponse:
|
|
444
484
|
conversations: Optional[List[GenieConversationSummary]] = None
|
|
@@ -1630,6 +1670,29 @@ class GenieAPI:
|
|
|
1630
1670
|
|
|
1631
1671
|
self._api.do("DELETE", f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}", headers=headers)
|
|
1632
1672
|
|
|
1673
|
+
def delete_conversation_message(self, space_id: str, conversation_id: str, message_id: str):
|
|
1674
|
+
"""Delete a conversation message.
|
|
1675
|
+
|
|
1676
|
+
:param space_id: str
|
|
1677
|
+
The ID associated with the Genie space where the message is located.
|
|
1678
|
+
:param conversation_id: str
|
|
1679
|
+
The ID associated with the conversation.
|
|
1680
|
+
:param message_id: str
|
|
1681
|
+
The ID associated with the message to delete.
|
|
1682
|
+
|
|
1683
|
+
|
|
1684
|
+
"""
|
|
1685
|
+
|
|
1686
|
+
headers = {
|
|
1687
|
+
"Accept": "application/json",
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
self._api.do(
|
|
1691
|
+
"DELETE",
|
|
1692
|
+
f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}",
|
|
1693
|
+
headers=headers,
|
|
1694
|
+
)
|
|
1695
|
+
|
|
1633
1696
|
def execute_message_attachment_query(
|
|
1634
1697
|
self, space_id: str, conversation_id: str, message_id: str, attachment_id: str
|
|
1635
1698
|
) -> GenieGetMessageQueryResultResponse:
|
|
@@ -1662,7 +1725,8 @@ class GenieAPI:
|
|
|
1662
1725
|
def execute_message_query(
|
|
1663
1726
|
self, space_id: str, conversation_id: str, message_id: str
|
|
1664
1727
|
) -> GenieGetMessageQueryResultResponse:
|
|
1665
|
-
"""
|
|
1728
|
+
"""DEPRECATED: Use [Execute Message Attachment Query](:method:genie/executemessageattachmentquery)
|
|
1729
|
+
instead.
|
|
1666
1730
|
|
|
1667
1731
|
:param space_id: str
|
|
1668
1732
|
Genie space ID
|
|
@@ -1741,8 +1805,8 @@ class GenieAPI:
|
|
|
1741
1805
|
def get_message_query_result(
|
|
1742
1806
|
self, space_id: str, conversation_id: str, message_id: str
|
|
1743
1807
|
) -> GenieGetMessageQueryResultResponse:
|
|
1744
|
-
"""
|
|
1745
|
-
|
|
1808
|
+
"""DEPRECATED: Use [Get Message Attachment Query Result](:method:genie/getmessageattachmentqueryresult)
|
|
1809
|
+
instead.
|
|
1746
1810
|
|
|
1747
1811
|
:param space_id: str
|
|
1748
1812
|
Genie space ID
|
|
@@ -1768,8 +1832,8 @@ class GenieAPI:
|
|
|
1768
1832
|
def get_message_query_result_by_attachment(
|
|
1769
1833
|
self, space_id: str, conversation_id: str, message_id: str, attachment_id: str
|
|
1770
1834
|
) -> GenieGetMessageQueryResultResponse:
|
|
1771
|
-
"""
|
|
1772
|
-
|
|
1835
|
+
"""DEPRECATED: Use [Get Message Attachment Query Result](:method:genie/getmessageattachmentqueryresult)
|
|
1836
|
+
instead.
|
|
1773
1837
|
|
|
1774
1838
|
:param space_id: str
|
|
1775
1839
|
Genie space ID
|
|
@@ -1810,13 +1874,55 @@ class GenieAPI:
|
|
|
1810
1874
|
res = self._api.do("GET", f"/api/2.0/genie/spaces/{space_id}", headers=headers)
|
|
1811
1875
|
return GenieSpace.from_dict(res)
|
|
1812
1876
|
|
|
1877
|
+
def list_conversation_messages(
|
|
1878
|
+
self, space_id: str, conversation_id: str, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
1879
|
+
) -> GenieListConversationMessagesResponse:
|
|
1880
|
+
"""List messages in a conversation
|
|
1881
|
+
|
|
1882
|
+
:param space_id: str
|
|
1883
|
+
The ID associated with the Genie space where the conversation is located
|
|
1884
|
+
:param conversation_id: str
|
|
1885
|
+
The ID of the conversation to list messages from
|
|
1886
|
+
:param page_size: int (optional)
|
|
1887
|
+
Maximum number of messages to return per page
|
|
1888
|
+
:param page_token: str (optional)
|
|
1889
|
+
Token to get the next page of results
|
|
1890
|
+
|
|
1891
|
+
:returns: :class:`GenieListConversationMessagesResponse`
|
|
1892
|
+
"""
|
|
1893
|
+
|
|
1894
|
+
query = {}
|
|
1895
|
+
if page_size is not None:
|
|
1896
|
+
query["page_size"] = page_size
|
|
1897
|
+
if page_token is not None:
|
|
1898
|
+
query["page_token"] = page_token
|
|
1899
|
+
headers = {
|
|
1900
|
+
"Accept": "application/json",
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
res = self._api.do(
|
|
1904
|
+
"GET",
|
|
1905
|
+
f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages",
|
|
1906
|
+
query=query,
|
|
1907
|
+
headers=headers,
|
|
1908
|
+
)
|
|
1909
|
+
return GenieListConversationMessagesResponse.from_dict(res)
|
|
1910
|
+
|
|
1813
1911
|
def list_conversations(
|
|
1814
|
-
self,
|
|
1912
|
+
self,
|
|
1913
|
+
space_id: str,
|
|
1914
|
+
*,
|
|
1915
|
+
include_all: Optional[bool] = None,
|
|
1916
|
+
page_size: Optional[int] = None,
|
|
1917
|
+
page_token: Optional[str] = None,
|
|
1815
1918
|
) -> GenieListConversationsResponse:
|
|
1816
1919
|
"""Get a list of conversations in a Genie Space.
|
|
1817
1920
|
|
|
1818
1921
|
:param space_id: str
|
|
1819
1922
|
The ID of the Genie space to retrieve conversations from.
|
|
1923
|
+
:param include_all: bool (optional)
|
|
1924
|
+
Include all conversations in the space across all users. Requires "Can Manage" permission on the
|
|
1925
|
+
space.
|
|
1820
1926
|
:param page_size: int (optional)
|
|
1821
1927
|
Maximum number of conversations to return per page
|
|
1822
1928
|
:param page_token: str (optional)
|
|
@@ -1826,6 +1932,8 @@ class GenieAPI:
|
|
|
1826
1932
|
"""
|
|
1827
1933
|
|
|
1828
1934
|
query = {}
|
|
1935
|
+
if include_all is not None:
|
|
1936
|
+
query["include_all"] = include_all
|
|
1829
1937
|
if page_size is not None:
|
|
1830
1938
|
query["page_size"] = page_size
|
|
1831
1939
|
if page_token is not None:
|
|
@@ -1862,6 +1970,47 @@ class GenieAPI:
|
|
|
1862
1970
|
res = self._api.do("GET", "/api/2.0/genie/spaces", query=query, headers=headers)
|
|
1863
1971
|
return GenieListSpacesResponse.from_dict(res)
|
|
1864
1972
|
|
|
1973
|
+
def send_message_feedback(
|
|
1974
|
+
self,
|
|
1975
|
+
space_id: str,
|
|
1976
|
+
conversation_id: str,
|
|
1977
|
+
message_id: str,
|
|
1978
|
+
feedback_rating: GenieFeedbackRating,
|
|
1979
|
+
*,
|
|
1980
|
+
feedback_text: Optional[str] = None,
|
|
1981
|
+
):
|
|
1982
|
+
"""Send feedback for a message.
|
|
1983
|
+
|
|
1984
|
+
:param space_id: str
|
|
1985
|
+
The ID associated with the Genie space where the message is located.
|
|
1986
|
+
:param conversation_id: str
|
|
1987
|
+
The ID associated with the conversation.
|
|
1988
|
+
:param message_id: str
|
|
1989
|
+
The ID associated with the message to provide feedback for.
|
|
1990
|
+
:param feedback_rating: :class:`GenieFeedbackRating`
|
|
1991
|
+
The rating (POSITIVE, NEGATIVE, or NONE).
|
|
1992
|
+
:param feedback_text: str (optional)
|
|
1993
|
+
Optional text feedback that will be stored as a comment.
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
"""
|
|
1997
|
+
body = {}
|
|
1998
|
+
if feedback_rating is not None:
|
|
1999
|
+
body["feedback_rating"] = feedback_rating.value
|
|
2000
|
+
if feedback_text is not None:
|
|
2001
|
+
body["feedback_text"] = feedback_text
|
|
2002
|
+
headers = {
|
|
2003
|
+
"Accept": "application/json",
|
|
2004
|
+
"Content-Type": "application/json",
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
self._api.do(
|
|
2008
|
+
"POST",
|
|
2009
|
+
f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/feedback",
|
|
2010
|
+
body=body,
|
|
2011
|
+
headers=headers,
|
|
2012
|
+
)
|
|
2013
|
+
|
|
1865
2014
|
def start_conversation(self, space_id: str, content: str) -> Wait[GenieMessage]:
|
|
1866
2015
|
"""Start a new conversation.
|
|
1867
2016
|
|
databricks/sdk/service/jobs.py
CHANGED
|
@@ -42,6 +42,9 @@ class BaseJob:
|
|
|
42
42
|
Jobs UI in the job details page and Jobs API using `budget_policy_id` 3. Inferred default based
|
|
43
43
|
on accessible budget policies of the run_as identity on job creation or modification."""
|
|
44
44
|
|
|
45
|
+
effective_usage_policy_id: Optional[str] = None
|
|
46
|
+
"""The id of the usage policy used by this job for cost attribution purposes."""
|
|
47
|
+
|
|
45
48
|
has_more: Optional[bool] = None
|
|
46
49
|
"""Indicates if the job has more array properties (`tasks`, `job_clusters`) that are not shown.
|
|
47
50
|
They can be accessed via :method:jobs/get endpoint. It is only relevant for API 2.2
|
|
@@ -66,6 +69,8 @@ class BaseJob:
|
|
|
66
69
|
body["creator_user_name"] = self.creator_user_name
|
|
67
70
|
if self.effective_budget_policy_id is not None:
|
|
68
71
|
body["effective_budget_policy_id"] = self.effective_budget_policy_id
|
|
72
|
+
if self.effective_usage_policy_id is not None:
|
|
73
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
69
74
|
if self.has_more is not None:
|
|
70
75
|
body["has_more"] = self.has_more
|
|
71
76
|
if self.job_id is not None:
|
|
@@ -85,6 +90,8 @@ class BaseJob:
|
|
|
85
90
|
body["creator_user_name"] = self.creator_user_name
|
|
86
91
|
if self.effective_budget_policy_id is not None:
|
|
87
92
|
body["effective_budget_policy_id"] = self.effective_budget_policy_id
|
|
93
|
+
if self.effective_usage_policy_id is not None:
|
|
94
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
88
95
|
if self.has_more is not None:
|
|
89
96
|
body["has_more"] = self.has_more
|
|
90
97
|
if self.job_id is not None:
|
|
@@ -102,6 +109,7 @@ class BaseJob:
|
|
|
102
109
|
created_time=d.get("created_time", None),
|
|
103
110
|
creator_user_name=d.get("creator_user_name", None),
|
|
104
111
|
effective_budget_policy_id=d.get("effective_budget_policy_id", None),
|
|
112
|
+
effective_usage_policy_id=d.get("effective_usage_policy_id", None),
|
|
105
113
|
has_more=d.get("has_more", None),
|
|
106
114
|
job_id=d.get("job_id", None),
|
|
107
115
|
settings=_from_dict(d, "settings", JobSettings),
|
|
@@ -147,6 +155,9 @@ class BaseRun:
|
|
|
147
155
|
`PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
|
|
148
156
|
optimized cluster performance."""
|
|
149
157
|
|
|
158
|
+
effective_usage_policy_id: Optional[str] = None
|
|
159
|
+
"""The id of the usage policy used by this run for cost attribution purposes."""
|
|
160
|
+
|
|
150
161
|
end_time: Optional[int] = None
|
|
151
162
|
"""The time at which this run ended in epoch milliseconds (milliseconds since 1/1/1970 UTC). This
|
|
152
163
|
field is set to 0 if the job is still running."""
|
|
@@ -267,6 +278,8 @@ class BaseRun:
|
|
|
267
278
|
body["description"] = self.description
|
|
268
279
|
if self.effective_performance_target is not None:
|
|
269
280
|
body["effective_performance_target"] = self.effective_performance_target.value
|
|
281
|
+
if self.effective_usage_policy_id is not None:
|
|
282
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
270
283
|
if self.end_time is not None:
|
|
271
284
|
body["end_time"] = self.end_time
|
|
272
285
|
if self.execution_duration is not None:
|
|
@@ -338,6 +351,8 @@ class BaseRun:
|
|
|
338
351
|
body["description"] = self.description
|
|
339
352
|
if self.effective_performance_target is not None:
|
|
340
353
|
body["effective_performance_target"] = self.effective_performance_target
|
|
354
|
+
if self.effective_usage_policy_id is not None:
|
|
355
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
341
356
|
if self.end_time is not None:
|
|
342
357
|
body["end_time"] = self.end_time
|
|
343
358
|
if self.execution_duration is not None:
|
|
@@ -403,6 +418,7 @@ class BaseRun:
|
|
|
403
418
|
creator_user_name=d.get("creator_user_name", None),
|
|
404
419
|
description=d.get("description", None),
|
|
405
420
|
effective_performance_target=_enum(d, "effective_performance_target", PerformanceTarget),
|
|
421
|
+
effective_usage_policy_id=d.get("effective_usage_policy_id", None),
|
|
406
422
|
end_time=d.get("end_time", None),
|
|
407
423
|
execution_duration=d.get("execution_duration", None),
|
|
408
424
|
git_source=_from_dict(d, "git_source", GitSource),
|
|
@@ -2212,6 +2228,9 @@ class Job:
|
|
|
2212
2228
|
Jobs UI in the job details page and Jobs API using `budget_policy_id` 3. Inferred default based
|
|
2213
2229
|
on accessible budget policies of the run_as identity on job creation or modification."""
|
|
2214
2230
|
|
|
2231
|
+
effective_usage_policy_id: Optional[str] = None
|
|
2232
|
+
"""The id of the usage policy used by this job for cost attribution purposes."""
|
|
2233
|
+
|
|
2215
2234
|
has_more: Optional[bool] = None
|
|
2216
2235
|
"""Indicates if the job has more array properties (`tasks`, `job_clusters`) that are not shown.
|
|
2217
2236
|
They can be accessed via :method:jobs/get endpoint. It is only relevant for API 2.2
|
|
@@ -2248,6 +2267,8 @@ class Job:
|
|
|
2248
2267
|
body["creator_user_name"] = self.creator_user_name
|
|
2249
2268
|
if self.effective_budget_policy_id is not None:
|
|
2250
2269
|
body["effective_budget_policy_id"] = self.effective_budget_policy_id
|
|
2270
|
+
if self.effective_usage_policy_id is not None:
|
|
2271
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
2251
2272
|
if self.has_more is not None:
|
|
2252
2273
|
body["has_more"] = self.has_more
|
|
2253
2274
|
if self.job_id is not None:
|
|
@@ -2271,6 +2292,8 @@ class Job:
|
|
|
2271
2292
|
body["creator_user_name"] = self.creator_user_name
|
|
2272
2293
|
if self.effective_budget_policy_id is not None:
|
|
2273
2294
|
body["effective_budget_policy_id"] = self.effective_budget_policy_id
|
|
2295
|
+
if self.effective_usage_policy_id is not None:
|
|
2296
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
2274
2297
|
if self.has_more is not None:
|
|
2275
2298
|
body["has_more"] = self.has_more
|
|
2276
2299
|
if self.job_id is not None:
|
|
@@ -2292,6 +2315,7 @@ class Job:
|
|
|
2292
2315
|
created_time=d.get("created_time", None),
|
|
2293
2316
|
creator_user_name=d.get("creator_user_name", None),
|
|
2294
2317
|
effective_budget_policy_id=d.get("effective_budget_policy_id", None),
|
|
2318
|
+
effective_usage_policy_id=d.get("effective_usage_policy_id", None),
|
|
2295
2319
|
has_more=d.get("has_more", None),
|
|
2296
2320
|
job_id=d.get("job_id", None),
|
|
2297
2321
|
next_page_token=d.get("next_page_token", None),
|
|
@@ -3039,8 +3063,8 @@ class JobSettings:
|
|
|
3039
3063
|
|
|
3040
3064
|
usage_policy_id: Optional[str] = None
|
|
3041
3065
|
"""The id of the user specified usage policy to use for this job. If not specified, a default usage
|
|
3042
|
-
policy may be applied when creating or modifying the job. See `
|
|
3043
|
-
the
|
|
3066
|
+
policy may be applied when creating or modifying the job. See `effective_usage_policy_id` for
|
|
3067
|
+
the usage policy used by this workload."""
|
|
3044
3068
|
|
|
3045
3069
|
webhook_notifications: Optional[WebhookNotifications] = None
|
|
3046
3070
|
"""A collection of system notification IDs to notify when runs of this job begin or complete."""
|
|
@@ -4509,6 +4533,9 @@ class Run:
|
|
|
4509
4533
|
`PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
|
|
4510
4534
|
optimized cluster performance."""
|
|
4511
4535
|
|
|
4536
|
+
effective_usage_policy_id: Optional[str] = None
|
|
4537
|
+
"""The id of the usage policy used by this run for cost attribution purposes."""
|
|
4538
|
+
|
|
4512
4539
|
end_time: Optional[int] = None
|
|
4513
4540
|
"""The time at which this run ended in epoch milliseconds (milliseconds since 1/1/1970 UTC). This
|
|
4514
4541
|
field is set to 0 if the job is still running."""
|
|
@@ -4635,6 +4662,8 @@ class Run:
|
|
|
4635
4662
|
body["description"] = self.description
|
|
4636
4663
|
if self.effective_performance_target is not None:
|
|
4637
4664
|
body["effective_performance_target"] = self.effective_performance_target.value
|
|
4665
|
+
if self.effective_usage_policy_id is not None:
|
|
4666
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
4638
4667
|
if self.end_time is not None:
|
|
4639
4668
|
body["end_time"] = self.end_time
|
|
4640
4669
|
if self.execution_duration is not None:
|
|
@@ -4710,6 +4739,8 @@ class Run:
|
|
|
4710
4739
|
body["description"] = self.description
|
|
4711
4740
|
if self.effective_performance_target is not None:
|
|
4712
4741
|
body["effective_performance_target"] = self.effective_performance_target
|
|
4742
|
+
if self.effective_usage_policy_id is not None:
|
|
4743
|
+
body["effective_usage_policy_id"] = self.effective_usage_policy_id
|
|
4713
4744
|
if self.end_time is not None:
|
|
4714
4745
|
body["end_time"] = self.end_time
|
|
4715
4746
|
if self.execution_duration is not None:
|
|
@@ -4779,6 +4810,7 @@ class Run:
|
|
|
4779
4810
|
creator_user_name=d.get("creator_user_name", None),
|
|
4780
4811
|
description=d.get("description", None),
|
|
4781
4812
|
effective_performance_target=_enum(d, "effective_performance_target", PerformanceTarget),
|
|
4813
|
+
effective_usage_policy_id=d.get("effective_usage_policy_id", None),
|
|
4782
4814
|
end_time=d.get("end_time", None),
|
|
4783
4815
|
execution_duration=d.get("execution_duration", None),
|
|
4784
4816
|
git_source=_from_dict(d, "git_source", GitSource),
|
|
@@ -8546,8 +8578,8 @@ class JobsAPI:
|
|
|
8546
8578
|
`runNow`.
|
|
8547
8579
|
:param usage_policy_id: str (optional)
|
|
8548
8580
|
The id of the user specified usage policy to use for this job. If not specified, a default usage
|
|
8549
|
-
policy may be applied when creating or modifying the job. See `
|
|
8550
|
-
|
|
8581
|
+
policy may be applied when creating or modifying the job. See `effective_usage_policy_id` for the
|
|
8582
|
+
usage policy used by this workload.
|
|
8551
8583
|
:param webhook_notifications: :class:`WebhookNotifications` (optional)
|
|
8552
8584
|
A collection of system notification IDs to notify when runs of this job begin or complete.
|
|
8553
8585
|
|
|
@@ -314,6 +314,9 @@ class AiGatewayRateLimit:
|
|
|
314
314
|
"""Principal field for a user, user group, or service principal to apply rate limiting to. Accepts
|
|
315
315
|
a user email, group name, or service principal application ID."""
|
|
316
316
|
|
|
317
|
+
tokens: Optional[int] = None
|
|
318
|
+
"""Used to specify how many tokens are allowed for a key within the renewal_period."""
|
|
319
|
+
|
|
317
320
|
def as_dict(self) -> dict:
|
|
318
321
|
"""Serializes the AiGatewayRateLimit into a dictionary suitable for use as a JSON request body."""
|
|
319
322
|
body = {}
|
|
@@ -325,6 +328,8 @@ class AiGatewayRateLimit:
|
|
|
325
328
|
body["principal"] = self.principal
|
|
326
329
|
if self.renewal_period is not None:
|
|
327
330
|
body["renewal_period"] = self.renewal_period.value
|
|
331
|
+
if self.tokens is not None:
|
|
332
|
+
body["tokens"] = self.tokens
|
|
328
333
|
return body
|
|
329
334
|
|
|
330
335
|
def as_shallow_dict(self) -> dict:
|
|
@@ -338,6 +343,8 @@ class AiGatewayRateLimit:
|
|
|
338
343
|
body["principal"] = self.principal
|
|
339
344
|
if self.renewal_period is not None:
|
|
340
345
|
body["renewal_period"] = self.renewal_period
|
|
346
|
+
if self.tokens is not None:
|
|
347
|
+
body["tokens"] = self.tokens
|
|
341
348
|
return body
|
|
342
349
|
|
|
343
350
|
@classmethod
|
|
@@ -348,6 +355,7 @@ class AiGatewayRateLimit:
|
|
|
348
355
|
key=_enum(d, "key", AiGatewayRateLimitKey),
|
|
349
356
|
principal=d.get("principal", None),
|
|
350
357
|
renewal_period=_enum(d, "renewal_period", AiGatewayRateLimitRenewalPeriod),
|
|
358
|
+
tokens=d.get("tokens", None),
|
|
351
359
|
)
|
|
352
360
|
|
|
353
361
|
|
|
@@ -3374,6 +3382,9 @@ class ServingEndpoint:
|
|
|
3374
3382
|
task: Optional[str] = None
|
|
3375
3383
|
"""The task type of the serving endpoint."""
|
|
3376
3384
|
|
|
3385
|
+
usage_policy_id: Optional[str] = None
|
|
3386
|
+
"""The usage policy associated with serving endpoint."""
|
|
3387
|
+
|
|
3377
3388
|
def as_dict(self) -> dict:
|
|
3378
3389
|
"""Serializes the ServingEndpoint into a dictionary suitable for use as a JSON request body."""
|
|
3379
3390
|
body = {}
|
|
@@ -3401,6 +3412,8 @@ class ServingEndpoint:
|
|
|
3401
3412
|
body["tags"] = [v.as_dict() for v in self.tags]
|
|
3402
3413
|
if self.task is not None:
|
|
3403
3414
|
body["task"] = self.task
|
|
3415
|
+
if self.usage_policy_id is not None:
|
|
3416
|
+
body["usage_policy_id"] = self.usage_policy_id
|
|
3404
3417
|
return body
|
|
3405
3418
|
|
|
3406
3419
|
def as_shallow_dict(self) -> dict:
|
|
@@ -3430,6 +3443,8 @@ class ServingEndpoint:
|
|
|
3430
3443
|
body["tags"] = self.tags
|
|
3431
3444
|
if self.task is not None:
|
|
3432
3445
|
body["task"] = self.task
|
|
3446
|
+
if self.usage_policy_id is not None:
|
|
3447
|
+
body["usage_policy_id"] = self.usage_policy_id
|
|
3433
3448
|
return body
|
|
3434
3449
|
|
|
3435
3450
|
@classmethod
|
|
@@ -3448,6 +3463,7 @@ class ServingEndpoint:
|
|
|
3448
3463
|
state=_from_dict(d, "state", EndpointState),
|
|
3449
3464
|
tags=_repeated_dict(d, "tags", EndpointTag),
|
|
3450
3465
|
task=d.get("task", None),
|
|
3466
|
+
usage_policy_id=d.get("usage_policy_id", None),
|
|
3451
3467
|
)
|
|
3452
3468
|
|
|
3453
3469
|
|