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.
Files changed (116) hide show
  1. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/CHANGELOG.md +21 -0
  2. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/PKG-INFO +1 -1
  3. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/__init__.py +8 -8
  4. databricks_sdk-0.148.0/databricks/sdk/service/mason.py → databricks_sdk-0.149.0/databricks/sdk/service/agentkit.py +1 -1
  5. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/aifunctions.py +7 -6
  6. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/catalog.py +21 -5
  7. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/domains.py +2 -2
  8. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/iamv2.py +253 -0
  9. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/ml.py +149 -1
  10. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/pipelines.py +31 -0
  11. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/sql.py +53 -0
  12. databricks_sdk-0.149.0/databricks/sdk/version.py +1 -0
  13. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/PKG-INFO +1 -1
  14. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/SOURCES.txt +1 -1
  15. databricks_sdk-0.148.0/databricks/sdk/version.py +0 -1
  16. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/CONTRIBUTING.md +0 -0
  17. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/DCO +0 -0
  18. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/LICENSE +0 -0
  19. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/MANIFEST.in +0 -0
  20. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/Makefile +0 -0
  21. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/NOTICE +0 -0
  22. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/README.md +0 -0
  23. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/SECURITY.md +0 -0
  24. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/__init__.py +0 -0
  25. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_base_client.py +0 -0
  26. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_property.py +0 -0
  27. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_sandbox_grpc/__init__.py +0 -0
  28. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_sandbox_grpc/sandbox_service_pb2.py +0 -0
  29. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_sandbox_grpc/sandbox_service_pb2_grpc.py +0 -0
  30. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_widgets/__init__.py +0 -0
  31. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_widgets/default_widgets_utils.py +0 -0
  32. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/_widgets/ipywidgets_utils.py +0 -0
  33. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/azure.py +0 -0
  34. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/casing.py +0 -0
  35. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/client_types.py +0 -0
  36. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/clock.py +0 -0
  37. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/common/lro.py +0 -0
  38. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/common/types/__init__.py +0 -0
  39. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/common/types/fieldmask.py +0 -0
  40. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/config.py +0 -0
  41. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/core.py +0 -0
  42. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/credentials_provider.py +0 -0
  43. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/data_plane.py +0 -0
  44. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/dbutils.py +0 -0
  45. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/environments.py +0 -0
  46. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/__init__.py +0 -0
  47. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/base.py +0 -0
  48. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/customizer.py +0 -0
  49. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/deserializer.py +0 -0
  50. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/details.py +0 -0
  51. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/mapper.py +0 -0
  52. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/overrides.py +0 -0
  53. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/parser.py +0 -0
  54. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/platform.py +0 -0
  55. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/private_link.py +0 -0
  56. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/errors/sdk.py +0 -0
  57. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/logger/__init__.py +0 -0
  58. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/logger/round_trip_logger.py +0 -0
  59. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/__init__.py +0 -0
  60. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/_grpc_transport.py +0 -0
  61. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/compute.py +0 -0
  62. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/files.py +0 -0
  63. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/files_utils.py +0 -0
  64. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/jobs.py +0 -0
  65. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/open_ai_client.py +0 -0
  66. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/sandbox.py +0 -0
  67. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/sharing.py +0 -0
  68. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/mixins/workspace.py +0 -0
  69. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/oauth.py +0 -0
  70. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/oidc.py +0 -0
  71. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/oidc_token_supplier.py +0 -0
  72. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/py.typed +0 -0
  73. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/retries.py +0 -0
  74. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/runtime/__init__.py +0 -0
  75. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/runtime/dbutils_stub.py +0 -0
  76. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/__init__.py +0 -0
  77. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/_internal.py +0 -0
  78. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/agentbricks.py +0 -0
  79. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/aisearch.py +0 -0
  80. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/apps.py +0 -0
  81. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/billing.py +0 -0
  82. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/bundle.py +0 -0
  83. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/bundledeployments.py +0 -0
  84. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/cleanrooms.py +0 -0
  85. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/compute.py +0 -0
  86. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/dashboards.py +0 -0
  87. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/database.py +0 -0
  88. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/dataclassification.py +0 -0
  89. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/dataquality.py +0 -0
  90. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/disasterrecovery.py +0 -0
  91. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/environments.py +0 -0
  92. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/files.py +0 -0
  93. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/iam.py +0 -0
  94. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/jobs.py +0 -0
  95. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/knowledgeassistants.py +0 -0
  96. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/marketplace.py +0 -0
  97. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/networking.py +0 -0
  98. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/oauth2.py +0 -0
  99. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/postgres.py +0 -0
  100. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/provisioning.py +0 -0
  101. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/qualitymonitorv2.py +0 -0
  102. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/sandbox.py +0 -0
  103. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/serving.py +0 -0
  104. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/settings.py +0 -0
  105. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/settingsv2.py +0 -0
  106. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/sharing.py +0 -0
  107. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/supervisoragents.py +0 -0
  108. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/tags.py +0 -0
  109. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/vectorsearch.py +0 -0
  110. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/service/workspace.py +0 -0
  111. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks/sdk/useragent.py +0 -0
  112. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/dependency_links.txt +0 -0
  113. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/requires.txt +0 -0
  114. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/databricks_sdk.egg-info/top_level.txt +0 -0
  115. {databricks_sdk-0.148.0 → databricks_sdk-0.149.0}/pyproject.toml +0 -0
  116. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-sdk
3
- Version: 0.148.0
3
+ Version: 0.149.0
4
4
  Summary: Databricks SDK for Python (Beta)
5
5
  Project-URL: Documentation, https://databricks-sdk-py.readthedocs.io
6
6
  Keywords: databricks,sdk
@@ -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 MasonAPI:
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. Choose a nonempty string for each ID; its
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. For example, both of the
862
- following are valid:
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 can be strings, objects, or arrays.
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 for an external model destination."""
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``. At
8324
- least one value is required. AI Gateway uses these values to translate requests and responses.
8325
- At most 64 entries of 256 characters each are allowed."""
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(model=d.get("model", None), native_api_types=d.get("native_api_types", None))
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 DISCOVERY`` permission.
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 DISCOVERY`` permission; only domains the caller
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]: