databricks-sdk 0.148.0__tar.gz → 0.149.0__tar.gz
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.
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/CHANGELOG.md +21 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/PKG-INFO +1 -1
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/__init__.py +8 -8
- databricks_sdk-0.148.0/databricks/sdk/service/mason.py → databricks_sdk-0.149.0/databricks/sdk/service/agentkit.py +1 -1
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/aifunctions.py +7 -6
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/catalog.py +21 -5
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/domains.py +2 -2
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/iamv2.py +253 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/ml.py +149 -1
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/pipelines.py +31 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/sql.py +53 -0
- databricks_sdk-0.149.0/databricks/sdk/version.py +1 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/PKG-INFO +1 -1
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/SOURCES.txt +1 -1
- databricks_sdk-0.148.0/databricks/sdk/version.py +0 -1
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/CONTRIBUTING.md +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/DCO +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/LICENSE +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/MANIFEST.in +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/Makefile +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/NOTICE +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/README.md +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/SECURITY.md +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_base_client.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_property.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_sandbox_grpc/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_sandbox_grpc/sandbox_service_pb2.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_sandbox_grpc/sandbox_service_pb2_grpc.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_widgets/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_widgets/default_widgets_utils.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_widgets/ipywidgets_utils.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/azure.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/casing.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/client_types.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/clock.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/common/lro.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/common/types/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/common/types/fieldmask.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/config.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/core.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/credentials_provider.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/data_plane.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/dbutils.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/environments.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/base.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/customizer.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/deserializer.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/details.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/mapper.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/overrides.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/parser.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/platform.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/private_link.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/sdk.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/logger/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/logger/round_trip_logger.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/_grpc_transport.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/compute.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/files.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/files_utils.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/jobs.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/open_ai_client.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/sandbox.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/sharing.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/workspace.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/oauth.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/oidc.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/oidc_token_supplier.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/py.typed +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/retries.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/runtime/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/runtime/dbutils_stub.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/__init__.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/_internal.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/agentbricks.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/aisearch.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/apps.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/billing.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/bundle.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/bundledeployments.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/cleanrooms.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/compute.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/dashboards.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/database.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/dataclassification.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/dataquality.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/disasterrecovery.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/environments.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/files.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/iam.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/jobs.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/knowledgeassistants.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/marketplace.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/networking.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/oauth2.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/postgres.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/provisioning.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/qualitymonitorv2.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/sandbox.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/serving.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/settings.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/settingsv2.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/sharing.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/supervisoragents.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/tags.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/vectorsearch.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/workspace.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/useragent.py +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/dependency_links.txt +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/requires.txt +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/top_level.txt +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/pyproject.toml +0 -0
- {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/setup.cfg +0 -0
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Version changelog
|
|
2
2
|
|
|
3
|
+
## Release v0.149.0 (2026-10-08)
|
|
4
|
+
|
|
5
|
+
### API Changes
|
|
6
|
+
* Add `databricks.sdk.service.agentkit` package.
|
|
7
|
+
* Add [w.agent_kit](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/agentkit/agent_kit.html) workspace-level service.
|
|
8
|
+
* Add `create_identity_visibility_filter()`, `delete_identity_visibility_filter()`, `get_identity_visibility_filter()` and `list_identity_visibility_filters()` methods for [a.account_iam_v2](https://databricks-sdk-py.readthedocs.io/en/latest/account/iamv2/account_iam_v2.html) account-level service.
|
|
9
|
+
* Add `endpoint_route` field for `databricks.sdk.service.catalog.ModelProviderServiceConfigModelTargetConfig`.
|
|
10
|
+
* Add `notifications` field for `databricks.sdk.service.ml.MaterializedFeature`.
|
|
11
|
+
* Add `shuffle_partitions` field for `databricks.sdk.service.ml.StreamingMode`.
|
|
12
|
+
* Add `parent_path` field for `databricks.sdk.service.pipelines.ClonePipelineRequest`.
|
|
13
|
+
* Add `parent_path` field for `databricks.sdk.service.pipelines.CreatePipeline`.
|
|
14
|
+
* Add `parent_path` field for `databricks.sdk.service.pipelines.EditPipeline`.
|
|
15
|
+
* Add `parent_path` field for `databricks.sdk.service.pipelines.PipelineSpec`.
|
|
16
|
+
* Add `custom_template_format` field for `databricks.sdk.service.sql.AlertV2`.
|
|
17
|
+
* Add `statement_timeout` field for `databricks.sdk.service.sql.CreateWarehouseRequest`.
|
|
18
|
+
* Add `statement_timeout` field for `databricks.sdk.service.sql.EditWarehouseRequest`.
|
|
19
|
+
* Add `statement_timeout` field for `databricks.sdk.service.sql.EndpointInfo`.
|
|
20
|
+
* Add `statement_timeout` field for `databricks.sdk.service.sql.GetWarehouseResponse`.
|
|
21
|
+
* [Breaking] Remove `databricks.sdk.service.mason` package.
|
|
22
|
+
* [Breaking] Remove [w.mason](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/mason/mason.html) workspace-level service.
|
|
23
|
+
|
|
3
24
|
## Release v0.148.0 (2026-10-07)
|
|
4
25
|
|
|
5
26
|
### API Changes
|
|
@@ -10,6 +10,7 @@ import databricks.sdk.dbutils as dbutils
|
|
|
10
10
|
from databricks.sdk.credentials_provider import CredentialsStrategy
|
|
11
11
|
from databricks.sdk.data_plane import DataPlaneTokenSource
|
|
12
12
|
from databricks.sdk.service import agentbricks as pkg_agentbricks
|
|
13
|
+
from databricks.sdk.service import agentkit as pkg_agentkit
|
|
13
14
|
from databricks.sdk.service import aifunctions as pkg_aifunctions
|
|
14
15
|
from databricks.sdk.service import aisearch as pkg_aisearch
|
|
15
16
|
from databricks.sdk.service import apps as pkg_apps
|
|
@@ -31,7 +32,6 @@ from databricks.sdk.service import iamv2 as pkg_iamv2
|
|
|
31
32
|
from databricks.sdk.service import jobs as pkg_jobs
|
|
32
33
|
from databricks.sdk.service import knowledgeassistants as pkg_knowledgeassistants
|
|
33
34
|
from databricks.sdk.service import marketplace as pkg_marketplace
|
|
34
|
-
from databricks.sdk.service import mason as pkg_mason
|
|
35
35
|
from databricks.sdk.service import ml as pkg_ml
|
|
36
36
|
from databricks.sdk.service import networking as pkg_networking
|
|
37
37
|
from databricks.sdk.service import oauth2 as pkg_oauth2
|
|
@@ -61,6 +61,7 @@ from databricks.sdk.service.iam import AccessControlAPI
|
|
|
61
61
|
from databricks.sdk.service.iam import AccountAccessControlAPI
|
|
62
62
|
from databricks.sdk.service.iam import AccountAccessControlProxyAPI
|
|
63
63
|
from databricks.sdk.service.agentbricks import AgentBricksAPI
|
|
64
|
+
from databricks.sdk.service.agentkit import AgentKitAPI
|
|
64
65
|
from databricks.sdk.service.aifunctions import AiFunctionsAPI
|
|
65
66
|
from databricks.sdk.service.catalog import AiGatewayAPI
|
|
66
67
|
from databricks.sdk.service.aisearch import AiSearchAPI
|
|
@@ -155,7 +156,6 @@ from databricks.sdk.service.settings import LlmProxyPartnerPoweredAccountAPI
|
|
|
155
156
|
from databricks.sdk.service.settings import LlmProxyPartnerPoweredEnforceAPI
|
|
156
157
|
from databricks.sdk.service.settings import LlmProxyPartnerPoweredWorkspaceAPI
|
|
157
158
|
from databricks.sdk.service.billing import LogDeliveryAPI
|
|
158
|
-
from databricks.sdk.service.mason import MasonAPI
|
|
159
159
|
from databricks.sdk.service.ml import MaterializedFeaturesAPI
|
|
160
160
|
from databricks.sdk.service.catalog import AccountMetastoreAssignmentsAPI
|
|
161
161
|
from databricks.sdk.service.catalog import MetastoresAPI
|
|
@@ -369,6 +369,7 @@ class WorkspaceClient:
|
|
|
369
369
|
self._access_control = pkg_iam.AccessControlAPI(self._api_client)
|
|
370
370
|
self._account_access_control_proxy = pkg_iam.AccountAccessControlProxyAPI(self._api_client)
|
|
371
371
|
self._agent_bricks = pkg_agentbricks.AgentBricksAPI(self._api_client)
|
|
372
|
+
self._agent_kit = pkg_agentkit.AgentKitAPI(self._api_client)
|
|
372
373
|
self._ai_functions = pkg_aifunctions.AiFunctionsAPI(self._api_client)
|
|
373
374
|
self._ai_gateway = pkg_catalog.AiGatewayAPI(self._api_client)
|
|
374
375
|
self._ai_search = pkg_aisearch.AiSearchAPI(self._api_client)
|
|
@@ -430,7 +431,6 @@ class WorkspaceClient:
|
|
|
430
431
|
self._lakeview = pkg_dashboards.LakeviewAPI(self._api_client)
|
|
431
432
|
self._lakeview_embedded = pkg_dashboards.LakeviewEmbeddedAPI(self._api_client)
|
|
432
433
|
self._libraries = pkg_compute.LibrariesAPI(self._api_client)
|
|
433
|
-
self._mason = pkg_mason.MasonAPI(self._api_client)
|
|
434
434
|
self._materialized_features = pkg_ml.MaterializedFeaturesAPI(self._api_client)
|
|
435
435
|
self._metastores = pkg_catalog.MetastoresAPI(self._api_client)
|
|
436
436
|
self._model_registry = pkg_ml.ModelRegistryAPI(self._api_client)
|
|
@@ -542,6 +542,11 @@ class WorkspaceClient:
|
|
|
542
542
|
"""The Custom LLMs service manages state and powers the UI for the Custom LLM product."""
|
|
543
543
|
return self._agent_bricks
|
|
544
544
|
|
|
545
|
+
@property
|
|
546
|
+
def agent_kit(self) -> pkg_agentkit.AgentKitAPI:
|
|
547
|
+
"""APIs for managing agent memory and durable session state."""
|
|
548
|
+
return self._agent_kit
|
|
549
|
+
|
|
545
550
|
@property
|
|
546
551
|
def ai_functions(self) -> pkg_aifunctions.AiFunctionsAPI:
|
|
547
552
|
"""Transform and enrich data with AI on Databricks."""
|
|
@@ -842,11 +847,6 @@ class WorkspaceClient:
|
|
|
842
847
|
"""The Libraries API allows you to install and uninstall libraries and get the status of libraries on a cluster."""
|
|
843
848
|
return self._libraries
|
|
844
849
|
|
|
845
|
-
@property
|
|
846
|
-
def mason(self) -> pkg_mason.MasonAPI:
|
|
847
|
-
"""APIs for managing agent memory and durable session state."""
|
|
848
|
-
return self._mason
|
|
849
|
-
|
|
850
850
|
@property
|
|
851
851
|
def materialized_features(self) -> pkg_ml.MaterializedFeaturesAPI:
|
|
852
852
|
"""Materialized Features are columns in tables and views that can be directly used as features to train and serve ML models."""
|
|
@@ -883,7 +883,7 @@ class StorageBackendType(Enum):
|
|
|
883
883
|
STORAGE_BACKEND_TYPE_LAKEBASE = "STORAGE_BACKEND_TYPE_LAKEBASE"
|
|
884
884
|
|
|
885
885
|
|
|
886
|
-
class
|
|
886
|
+
class AgentKitAPI:
|
|
887
887
|
"""APIs for managing agent memory and durable session state. This interface is under active development and
|
|
888
888
|
may change."""
|
|
889
889
|
|
|
@@ -827,8 +827,8 @@ class AiFunctionsAPI:
|
|
|
827
827
|
answer the provided questions. For example, provide a support message, a conversation, or records
|
|
828
828
|
describing the current state of an application. All questions receive this same state.
|
|
829
829
|
:param questions: any
|
|
830
|
-
A JSON object mapping question IDs to their definitions.
|
|
831
|
-
answer is returned with the same ID in ``response.answers``.
|
|
830
|
+
A JSON object mapping question IDs to their definitions. Each ID must contain non-whitespace text;
|
|
831
|
+
its answer is returned with the same ID in ``response.answers``.
|
|
832
832
|
|
|
833
833
|
Each definition is an object with the required fields ``type`` and ``instructions``. The
|
|
834
834
|
``criteria`` field is optional for the type ``noul`` but is required for the types ``choice`` and
|
|
@@ -858,8 +858,9 @@ class AiFunctionsAPI:
|
|
|
858
858
|
|
|
859
859
|
- ``noul``: Estimates the probability that the answer to a true-or-false question is true.
|
|
860
860
|
``criteria`` can take the fields ``true`` or ``false``, or both, with descriptions that are
|
|
861
|
-
strings, objects, or arrays. Omit ``criteria`` to use the question alone.
|
|
862
|
-
|
|
861
|
+
strings, objects, or arrays. Omit ``criteria`` to use the question alone. The instructions or at
|
|
862
|
+
least one criteria description must contain non-whitespace text, a nonempty object, or a nonempty
|
|
863
|
+
array. For example, both of the following are valid:
|
|
863
864
|
|
|
864
865
|
.. code-block:: json
|
|
865
866
|
|
|
@@ -886,8 +887,8 @@ class AiFunctionsAPI:
|
|
|
886
887
|
}
|
|
887
888
|
|
|
888
889
|
- ``score``: Rates the state on an ordered scale. Requires ``criteria`` to be an array of 2 to 10
|
|
889
|
-
level descriptions, ordered from low to high. Descriptions
|
|
890
|
-
Array positions define levels starting at 0. For example:
|
|
890
|
+
level descriptions, ordered from low to high. Descriptions must contain non-whitespace text, a
|
|
891
|
+
nonempty object, or a nonempty array. Array positions define levels starting at 0. For example:
|
|
891
892
|
|
|
892
893
|
.. code-block:: json
|
|
893
894
|
|
|
@@ -8313,20 +8313,30 @@ class ModelProviderServiceConfigMicrosoftFoundryProviderDirectConfig:
|
|
|
8313
8313
|
|
|
8314
8314
|
@dataclass
|
|
8315
8315
|
class ModelProviderServiceConfigModelTargetConfig:
|
|
8316
|
-
"""Model target configuration
|
|
8316
|
+
"""Model target configuration shared by model provider service targets and external model
|
|
8317
|
+
destinations on model services."""
|
|
8317
8318
|
|
|
8318
8319
|
model: str
|
|
8319
8320
|
"""Provider-side model identifier, such as ``gpt-5`` or ``claude-opus-4-7``. This identifies a
|
|
8320
8321
|
model at the upstream provider; it is not a Unity Catalog model resource."""
|
|
8321
8322
|
|
|
8323
|
+
endpoint_route: Optional[str] = None
|
|
8324
|
+
"""Relative path appended to a custom provider's ``base_url`` for this model, such as
|
|
8325
|
+
``serve/openai/chat``. Only custom model provider service targets use this field; other provider
|
|
8326
|
+
types ignore it, and model service destinations reject it. Do not include URI templates,
|
|
8327
|
+
queries, or fragments. When empty, ``base_url`` is used unchanged."""
|
|
8328
|
+
|
|
8322
8329
|
native_api_types: Optional[List[str]] = None
|
|
8323
|
-
"""Provider-native API types supported by this model, such as ``openai/v1/chat/completions``.
|
|
8324
|
-
|
|
8325
|
-
|
|
8330
|
+
"""Provider-native API types supported by this model, such as ``openai/v1/chat/completions``. A
|
|
8331
|
+
model provider service target requires at least one value. A model service destination may omit
|
|
8332
|
+
the list to use the matching provider service target's types when available. AI Gateway uses the
|
|
8333
|
+
selected types for translation. At most 64 entries of 256 characters each are allowed."""
|
|
8326
8334
|
|
|
8327
8335
|
def as_dict(self) -> dict:
|
|
8328
8336
|
"""Serializes the ModelProviderServiceConfigModelTargetConfig into a dictionary suitable for use as a JSON request body."""
|
|
8329
8337
|
body = {}
|
|
8338
|
+
if self.endpoint_route is not None:
|
|
8339
|
+
body["endpoint_route"] = self.endpoint_route
|
|
8330
8340
|
if self.model is not None:
|
|
8331
8341
|
body["model"] = self.model
|
|
8332
8342
|
if self.native_api_types:
|
|
@@ -8336,6 +8346,8 @@ class ModelProviderServiceConfigModelTargetConfig:
|
|
|
8336
8346
|
def as_shallow_dict(self) -> dict:
|
|
8337
8347
|
"""Serializes the ModelProviderServiceConfigModelTargetConfig into a shallow dictionary of its immediate attributes."""
|
|
8338
8348
|
body = {}
|
|
8349
|
+
if self.endpoint_route is not None:
|
|
8350
|
+
body["endpoint_route"] = self.endpoint_route
|
|
8339
8351
|
if self.model is not None:
|
|
8340
8352
|
body["model"] = self.model
|
|
8341
8353
|
if self.native_api_types:
|
|
@@ -8345,7 +8357,11 @@ class ModelProviderServiceConfigModelTargetConfig:
|
|
|
8345
8357
|
@classmethod
|
|
8346
8358
|
def from_dict(cls, d: Dict[str, Any]) -> ModelProviderServiceConfigModelTargetConfig:
|
|
8347
8359
|
"""Deserializes the ModelProviderServiceConfigModelTargetConfig from a dictionary."""
|
|
8348
|
-
return cls(
|
|
8360
|
+
return cls(
|
|
8361
|
+
endpoint_route=d.get("endpoint_route", None),
|
|
8362
|
+
model=d.get("model", None),
|
|
8363
|
+
native_api_types=d.get("native_api_types", None),
|
|
8364
|
+
)
|
|
8349
8365
|
|
|
8350
8366
|
|
|
8351
8367
|
@dataclass
|
|
@@ -356,7 +356,7 @@ class DomainsAPI:
|
|
|
356
356
|
def get_domain(self, name: str) -> Domain:
|
|
357
357
|
"""Get a domain by resource name.
|
|
358
358
|
|
|
359
|
-
Authorization: external callers must have the ``MANAGE
|
|
359
|
+
Authorization: external callers must have the ``MANAGE DISCOVER`` permission.
|
|
360
360
|
|
|
361
361
|
:param name: str
|
|
362
362
|
Full resource name of the domain to retrieve. Format: ``domains/{domain_id}``
|
|
@@ -385,7 +385,7 @@ class DomainsAPI:
|
|
|
385
385
|
"""List domains in the account. Set ``parent_domain_id`` to return only the direct subdomains of a given
|
|
386
386
|
domain.
|
|
387
387
|
|
|
388
|
-
Authorization: external callers must have the ``MANAGE
|
|
388
|
+
Authorization: external callers must have the ``MANAGE DISCOVER`` permission; only domains the caller
|
|
389
389
|
is authorized to read are returned.
|
|
390
390
|
|
|
391
391
|
:param page_size: int (optional)
|
|
@@ -105,6 +105,33 @@ class Entitlement(Enum):
|
|
|
105
105
|
WORKSPACE_CONSUME = "WORKSPACE_CONSUME"
|
|
106
106
|
|
|
107
107
|
|
|
108
|
+
@dataclass
|
|
109
|
+
class ExactMatchRule:
|
|
110
|
+
"""A rule that matches an identity whose external ID (from the identity provider) equals the value."""
|
|
111
|
+
|
|
112
|
+
external_id: str
|
|
113
|
+
"""The external ID to match exactly."""
|
|
114
|
+
|
|
115
|
+
def as_dict(self) -> dict:
|
|
116
|
+
"""Serializes the ExactMatchRule into a dictionary suitable for use as a JSON request body."""
|
|
117
|
+
body = {}
|
|
118
|
+
if self.external_id is not None:
|
|
119
|
+
body["external_id"] = self.external_id
|
|
120
|
+
return body
|
|
121
|
+
|
|
122
|
+
def as_shallow_dict(self) -> dict:
|
|
123
|
+
"""Serializes the ExactMatchRule into a shallow dictionary of its immediate attributes."""
|
|
124
|
+
body = {}
|
|
125
|
+
if self.external_id is not None:
|
|
126
|
+
body["external_id"] = self.external_id
|
|
127
|
+
return body
|
|
128
|
+
|
|
129
|
+
@classmethod
|
|
130
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExactMatchRule:
|
|
131
|
+
"""Deserializes the ExactMatchRule from a dictionary."""
|
|
132
|
+
return cls(external_id=d.get("external_id", None))
|
|
133
|
+
|
|
134
|
+
|
|
108
135
|
@dataclass
|
|
109
136
|
class ExternalGroup:
|
|
110
137
|
"""An external group from the customer's Identity Provider, resolved into Databricks. This is a
|
|
@@ -442,6 +469,65 @@ class GroupMembershipSource(Enum):
|
|
|
442
469
|
INTERNAL = "INTERNAL"
|
|
443
470
|
|
|
444
471
|
|
|
472
|
+
@dataclass
|
|
473
|
+
class IdentityVisibilityFilter:
|
|
474
|
+
"""A rule controlling which externally provisioned identities are visible in the account. Filters
|
|
475
|
+
are scoped by principal_type: an identity is only ever evaluated against filters whose
|
|
476
|
+
principal_type matches its own. When the account has no filter for an identity's principal_type,
|
|
477
|
+
all identities of that type are visible; once it has at least one filter for that type, an
|
|
478
|
+
identity of that type is visible only if it matches at least one of those filters. So a set of
|
|
479
|
+
group-only filters gates groups but leaves users and service principals fully visible."""
|
|
480
|
+
|
|
481
|
+
principal_type: PrincipalType
|
|
482
|
+
"""Which type of principal (user, service principal, or group) this rule applies to."""
|
|
483
|
+
|
|
484
|
+
exact: Optional[ExactMatchRule] = None
|
|
485
|
+
"""Exact match on the identity's external ID."""
|
|
486
|
+
|
|
487
|
+
name: Optional[str] = None
|
|
488
|
+
"""The resource name of the identity-visibility filter. Format:
|
|
489
|
+
accounts/{account_id}/identity-visibility-filters/{identity_visibility_filter_id}"""
|
|
490
|
+
|
|
491
|
+
prefix: Optional[PrefixMatchRule] = None
|
|
492
|
+
"""Prefix match on the identity's display name."""
|
|
493
|
+
|
|
494
|
+
def as_dict(self) -> dict:
|
|
495
|
+
"""Serializes the IdentityVisibilityFilter into a dictionary suitable for use as a JSON request body."""
|
|
496
|
+
body = {}
|
|
497
|
+
if self.exact:
|
|
498
|
+
body["exact"] = self.exact.as_dict()
|
|
499
|
+
if self.name is not None:
|
|
500
|
+
body["name"] = self.name
|
|
501
|
+
if self.prefix:
|
|
502
|
+
body["prefix"] = self.prefix.as_dict()
|
|
503
|
+
if self.principal_type is not None:
|
|
504
|
+
body["principal_type"] = self.principal_type.value
|
|
505
|
+
return body
|
|
506
|
+
|
|
507
|
+
def as_shallow_dict(self) -> dict:
|
|
508
|
+
"""Serializes the IdentityVisibilityFilter into a shallow dictionary of its immediate attributes."""
|
|
509
|
+
body = {}
|
|
510
|
+
if self.exact:
|
|
511
|
+
body["exact"] = self.exact
|
|
512
|
+
if self.name is not None:
|
|
513
|
+
body["name"] = self.name
|
|
514
|
+
if self.prefix:
|
|
515
|
+
body["prefix"] = self.prefix
|
|
516
|
+
if self.principal_type is not None:
|
|
517
|
+
body["principal_type"] = self.principal_type
|
|
518
|
+
return body
|
|
519
|
+
|
|
520
|
+
@classmethod
|
|
521
|
+
def from_dict(cls, d: Dict[str, Any]) -> IdentityVisibilityFilter:
|
|
522
|
+
"""Deserializes the IdentityVisibilityFilter from a dictionary."""
|
|
523
|
+
return cls(
|
|
524
|
+
exact=_from_dict(d, "exact", ExactMatchRule),
|
|
525
|
+
name=d.get("name", None),
|
|
526
|
+
prefix=_from_dict(d, "prefix", PrefixMatchRule),
|
|
527
|
+
principal_type=_enum(d, "principal_type", PrincipalType),
|
|
528
|
+
)
|
|
529
|
+
|
|
530
|
+
|
|
445
531
|
@dataclass
|
|
446
532
|
class ListDirectGroupMembersResponse:
|
|
447
533
|
"""Response message for listing direct group members."""
|
|
@@ -514,6 +600,43 @@ class ListGroupsResponse:
|
|
|
514
600
|
return cls(groups=_repeated_dict(d, "groups", Group), next_page_token=d.get("next_page_token", None))
|
|
515
601
|
|
|
516
602
|
|
|
603
|
+
@dataclass
|
|
604
|
+
class ListIdentityVisibilityFiltersResponse:
|
|
605
|
+
"""Response message containing a page of identity-visibility filters in the account."""
|
|
606
|
+
|
|
607
|
+
identity_visibility_filters: Optional[List[IdentityVisibilityFilter]] = None
|
|
608
|
+
|
|
609
|
+
next_page_token: Optional[str] = None
|
|
610
|
+
"""A token, which can be sent as page_token to retrieve the next page. If omitted, there are no
|
|
611
|
+
subsequent pages."""
|
|
612
|
+
|
|
613
|
+
def as_dict(self) -> dict:
|
|
614
|
+
"""Serializes the ListIdentityVisibilityFiltersResponse into a dictionary suitable for use as a JSON request body."""
|
|
615
|
+
body = {}
|
|
616
|
+
if self.identity_visibility_filters:
|
|
617
|
+
body["identity_visibility_filters"] = [v.as_dict() for v in self.identity_visibility_filters]
|
|
618
|
+
if self.next_page_token is not None:
|
|
619
|
+
body["next_page_token"] = self.next_page_token
|
|
620
|
+
return body
|
|
621
|
+
|
|
622
|
+
def as_shallow_dict(self) -> dict:
|
|
623
|
+
"""Serializes the ListIdentityVisibilityFiltersResponse into a shallow dictionary of its immediate attributes."""
|
|
624
|
+
body = {}
|
|
625
|
+
if self.identity_visibility_filters:
|
|
626
|
+
body["identity_visibility_filters"] = self.identity_visibility_filters
|
|
627
|
+
if self.next_page_token is not None:
|
|
628
|
+
body["next_page_token"] = self.next_page_token
|
|
629
|
+
return body
|
|
630
|
+
|
|
631
|
+
@classmethod
|
|
632
|
+
def from_dict(cls, d: Dict[str, Any]) -> ListIdentityVisibilityFiltersResponse:
|
|
633
|
+
"""Deserializes the ListIdentityVisibilityFiltersResponse from a dictionary."""
|
|
634
|
+
return cls(
|
|
635
|
+
identity_visibility_filters=_repeated_dict(d, "identity_visibility_filters", IdentityVisibilityFilter),
|
|
636
|
+
next_page_token=d.get("next_page_token", None),
|
|
637
|
+
)
|
|
638
|
+
|
|
639
|
+
|
|
517
640
|
@dataclass
|
|
518
641
|
class ListServicePrincipalsResponse:
|
|
519
642
|
"""Response message containing a page of service principals in the account."""
|
|
@@ -695,6 +818,33 @@ class ListWorkspaceAssignmentsResponse:
|
|
|
695
818
|
)
|
|
696
819
|
|
|
697
820
|
|
|
821
|
+
@dataclass
|
|
822
|
+
class PrefixMatchRule:
|
|
823
|
+
"""A rule that matches an identity whose display name starts with the value."""
|
|
824
|
+
|
|
825
|
+
display_name_prefix: str
|
|
826
|
+
"""The display-name prefix to match."""
|
|
827
|
+
|
|
828
|
+
def as_dict(self) -> dict:
|
|
829
|
+
"""Serializes the PrefixMatchRule into a dictionary suitable for use as a JSON request body."""
|
|
830
|
+
body = {}
|
|
831
|
+
if self.display_name_prefix is not None:
|
|
832
|
+
body["display_name_prefix"] = self.display_name_prefix
|
|
833
|
+
return body
|
|
834
|
+
|
|
835
|
+
def as_shallow_dict(self) -> dict:
|
|
836
|
+
"""Serializes the PrefixMatchRule into a shallow dictionary of its immediate attributes."""
|
|
837
|
+
body = {}
|
|
838
|
+
if self.display_name_prefix is not None:
|
|
839
|
+
body["display_name_prefix"] = self.display_name_prefix
|
|
840
|
+
return body
|
|
841
|
+
|
|
842
|
+
@classmethod
|
|
843
|
+
def from_dict(cls, d: Dict[str, Any]) -> PrefixMatchRule:
|
|
844
|
+
"""Deserializes the PrefixMatchRule from a dictionary."""
|
|
845
|
+
return cls(display_name_prefix=d.get("display_name_prefix", None))
|
|
846
|
+
|
|
847
|
+
|
|
698
848
|
class PrincipalType(Enum):
|
|
699
849
|
"""The type of the principal (user/sp/group)."""
|
|
700
850
|
|
|
@@ -1397,6 +1547,40 @@ class AccountIamV2API:
|
|
|
1397
1547
|
)
|
|
1398
1548
|
return Group.from_dict(res)
|
|
1399
1549
|
|
|
1550
|
+
def create_identity_visibility_filter(
|
|
1551
|
+
self,
|
|
1552
|
+
parent: str,
|
|
1553
|
+
identity_visibility_filter: IdentityVisibilityFilter,
|
|
1554
|
+
*,
|
|
1555
|
+
identity_visibility_filter_id: Optional[str] = None,
|
|
1556
|
+
) -> IdentityVisibilityFilter:
|
|
1557
|
+
"""Creates an identity-visibility filter in the account.
|
|
1558
|
+
|
|
1559
|
+
:param parent: str
|
|
1560
|
+
Required. The parent account. Format: accounts/{account_id}
|
|
1561
|
+
:param identity_visibility_filter: :class:`IdentityVisibilityFilter`
|
|
1562
|
+
Required. The filter to create.
|
|
1563
|
+
:param identity_visibility_filter_id: str (optional)
|
|
1564
|
+
Optional. The ID to use for the filter, which becomes the final component of its resource name. If
|
|
1565
|
+
not specified, the server generates one.
|
|
1566
|
+
|
|
1567
|
+
:returns: :class:`IdentityVisibilityFilter`
|
|
1568
|
+
"""
|
|
1569
|
+
|
|
1570
|
+
body = identity_visibility_filter.as_dict()
|
|
1571
|
+
query = {}
|
|
1572
|
+
if identity_visibility_filter_id is not None:
|
|
1573
|
+
query["identity_visibility_filter_id"] = identity_visibility_filter_id
|
|
1574
|
+
headers = {
|
|
1575
|
+
"Accept": "application/json",
|
|
1576
|
+
"Content-Type": "application/json",
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
res = self._api.do(
|
|
1580
|
+
"POST", f"/api/2.0/identity/{parent}/identity-visibility-filters", query=query, body=body, headers=headers
|
|
1581
|
+
)
|
|
1582
|
+
return IdentityVisibilityFilter.from_dict(res)
|
|
1583
|
+
|
|
1400
1584
|
def create_service_principal(self, service_principal: ServicePrincipal) -> ServicePrincipal:
|
|
1401
1585
|
"""Creates a local service principal in the Databricks account and returns the created service principal.
|
|
1402
1586
|
A local service principal is one that is not synced from the customer's identity provider, and can be
|
|
@@ -1552,6 +1736,22 @@ class AccountIamV2API:
|
|
|
1552
1736
|
|
|
1553
1737
|
self._api.do("DELETE", f"/api/2.0/identity/accounts/{self._api.account_id}/groups/{group_id}", headers=headers)
|
|
1554
1738
|
|
|
1739
|
+
def delete_identity_visibility_filter(self, name: str):
|
|
1740
|
+
"""Deletes an identity-visibility filter by resource name.
|
|
1741
|
+
|
|
1742
|
+
:param name: str
|
|
1743
|
+
Required. The resource name of the filter. Format:
|
|
1744
|
+
accounts/{account_id}/identity-visibility-filters/{identity_visibility_filter_id}
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
"""
|
|
1748
|
+
|
|
1749
|
+
headers = {
|
|
1750
|
+
"Accept": "application/json",
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
self._api.do("DELETE", f"/api/2.0/identity/{name}", headers=headers)
|
|
1754
|
+
|
|
1555
1755
|
def delete_service_principal(self, service_principal_id: str):
|
|
1556
1756
|
"""Deletes a service principal from the Databricks account by its internal ID.
|
|
1557
1757
|
|
|
@@ -1729,6 +1929,23 @@ class AccountIamV2API:
|
|
|
1729
1929
|
)
|
|
1730
1930
|
return Group.from_dict(res)
|
|
1731
1931
|
|
|
1932
|
+
def get_identity_visibility_filter(self, name: str) -> IdentityVisibilityFilter:
|
|
1933
|
+
"""Fetches an identity-visibility filter by resource name.
|
|
1934
|
+
|
|
1935
|
+
:param name: str
|
|
1936
|
+
Required. The resource name of the filter. Format:
|
|
1937
|
+
accounts/{account_id}/identity-visibility-filters/{identity_visibility_filter_id}
|
|
1938
|
+
|
|
1939
|
+
:returns: :class:`IdentityVisibilityFilter`
|
|
1940
|
+
"""
|
|
1941
|
+
|
|
1942
|
+
headers = {
|
|
1943
|
+
"Accept": "application/json",
|
|
1944
|
+
}
|
|
1945
|
+
|
|
1946
|
+
res = self._api.do("GET", f"/api/2.0/identity/{name}", headers=headers)
|
|
1947
|
+
return IdentityVisibilityFilter.from_dict(res)
|
|
1948
|
+
|
|
1732
1949
|
def get_service_principal(self, service_principal_id: str) -> ServicePrincipal:
|
|
1733
1950
|
"""Fetches a service principal from the Databricks account by its internal ID.
|
|
1734
1951
|
|
|
@@ -1930,6 +2147,42 @@ class AccountIamV2API:
|
|
|
1930
2147
|
return
|
|
1931
2148
|
query["page_token"] = json["next_page_token"]
|
|
1932
2149
|
|
|
2150
|
+
def list_identity_visibility_filters(
|
|
2151
|
+
self, parent: str, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
2152
|
+
) -> Iterator[IdentityVisibilityFilter]:
|
|
2153
|
+
"""Lists the identity-visibility filters in the account, returning one page per call.
|
|
2154
|
+
|
|
2155
|
+
:param parent: str
|
|
2156
|
+
Required. The parent account. Format: accounts/{account_id}
|
|
2157
|
+
:param page_size: int (optional)
|
|
2158
|
+
The maximum number of filters to return. The service may return fewer than this value.
|
|
2159
|
+
:param page_token: str (optional)
|
|
2160
|
+
A page token, received from a previous ListIdentityVisibilityFilters call. Provide this to retrieve
|
|
2161
|
+
the subsequent page.
|
|
2162
|
+
|
|
2163
|
+
:returns: Iterator over :class:`IdentityVisibilityFilter`
|
|
2164
|
+
"""
|
|
2165
|
+
|
|
2166
|
+
query = {}
|
|
2167
|
+
if page_size is not None:
|
|
2168
|
+
query["page_size"] = page_size
|
|
2169
|
+
if page_token is not None:
|
|
2170
|
+
query["page_token"] = page_token
|
|
2171
|
+
headers = {
|
|
2172
|
+
"Accept": "application/json",
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
while True:
|
|
2176
|
+
json = self._api.do(
|
|
2177
|
+
"GET", f"/api/2.0/identity/{parent}/identity-visibility-filters", query=query, headers=headers
|
|
2178
|
+
)
|
|
2179
|
+
if "identity_visibility_filters" in json:
|
|
2180
|
+
for v in json["identity_visibility_filters"]:
|
|
2181
|
+
yield IdentityVisibilityFilter.from_dict(v)
|
|
2182
|
+
if "next_page_token" not in json or not json["next_page_token"]:
|
|
2183
|
+
return
|
|
2184
|
+
query["page_token"] = json["next_page_token"]
|
|
2185
|
+
|
|
1933
2186
|
def list_service_principals(
|
|
1934
2187
|
self, *, filter: Optional[str] = None, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
1935
2188
|
) -> Iterator[ServicePrincipal]:
|