From 873f07d00cf781494fa0e99ccab2289e0e05f903 Mon Sep 17 00:00:00 2001 From: "databricks-ci-ghec-2[bot]" <184307802+databricks-ci-ghec-2[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 03:18:49 +0000 Subject: [PATCH] Release databricks-sdk-java --- .codegen/_last_sha | 2 +- CHANGELOG.md | 13 ++ databricks-sdk-java/lockfile.json | 16 +- databricks-sdk-java/pom.xml | 4 +- .../com/databricks/sdk/WorkspaceClient.java | 9 +- .../com/databricks/sdk/core/UserAgent.java | 2 +- .../databricks/sdk/core/utils/OSUtils.java | 23 ++- .../sdk/service/billing/AlertSpendStatus.java | 124 +++++++++++++++ .../service/billing/BudgetSpendStatus.java | 68 +++++++++ .../sdk/service/billing/BudgetsAPI.java | 30 ++++ .../sdk/service/billing/BudgetsImpl.java | 29 ++++ .../sdk/service/billing/BudgetsService.java | 18 +++ .../billing/GetBudgetSpendStatusRequest.java | 45 ++++++ .../ListBudgetSpendStatusesRequest.java | 110 +++++++++++++ .../ListBudgetSpendStatusesResponse.java | 66 ++++++++ .../catalog/ListMcpServicesRequest.java | 4 +- .../ListModelProviderServicesRequest.java | 3 +- .../catalog/ListModelServicesRequest.java | 3 +- .../catalog/ModelProviderServiceConfig.java | 12 +- .../sdk/service/database/DatabaseAPI.java | 144 +++++++++++++++--- .../sdk/service/database/DatabaseService.java | 140 ++++++++++++++--- .../sdk/service/iamv2/AccountIamV2API.java | 2 + .../service/iamv2/AccountIamV2Service.java | 2 + .../sdk/service/iamv2/DirectGroupMember.java | 2 +- .../iamv2/UpdateGroupProxyRequest.java | 2 +- .../sdk/service/iamv2/UpdateGroupRequest.java | 2 +- .../UpdateServicePrincipalProxyRequest.java | 2 +- .../iamv2/UpdateServicePrincipalRequest.java | 2 +- .../service/iamv2/UpdateUserProxyRequest.java | 2 +- .../sdk/service/iamv2/UpdateUserRequest.java | 2 +- .../sdk/service/iamv2/WorkspaceIamV2API.java | 2 + .../service/iamv2/WorkspaceIamV2Service.java | 2 + .../sdk/service/jobs/AiClassifyFunction.java | 130 ++++++++++++++++ .../jobs/AiClassifyFunctionInlineLabels.java | 47 ++++++ .../service/jobs/AiClassifyFunctionLabel.java | 59 +++++++ .../sdk/service/jobs/AiExtractFunction.java | 134 ++++++++++++++++ .../service/jobs/AiExtractFunctionMode.java | 11 ++ .../sdk/service/jobs/AiFunctionTask.java | 123 +++++++++++++++ .../service/jobs/AiFunctionTaskOutput.java | 119 +++++++++++++++ .../service/jobs/AiParseDocumentFunction.java | 98 ++++++++++++ ...ocumentFunctionDescriptionElementType.java | 12 ++ .../sdk/service/jobs/DeltaTableSource.java | 82 ++++++++++ .../sdk/service/jobs/QualifiedName.java | 75 +++++++++ .../sdk/service/jobs/ResolvedValues.java | 22 ++- ...vedValuesAiFunctionTaskResolvedValues.java | 29 ++++ .../sdk/service/jobs/RunOutput.java | 18 ++- .../databricks/sdk/service/jobs/RunTask.java | 18 ++- .../sdk/service/jobs/SubmitTask.java | 18 ++- .../com/databricks/sdk/service/jobs/Task.java | 18 ++- .../sdk/service/jobs/VolumeSource.java | 45 ++++++ .../databricks/sdk/service/ml/TimeWindow.java | 4 +- .../ml/UpdateMaterializationSetRequest.java | 2 +- .../sdk/service/serving/PtServedModel.java | 5 +- .../databricks/sdk/service/sql/AlertV2.java | 4 +- .../com/databricks/sdk/utils/OSUtilsTest.java | 77 +++++++++- examples/docs/pom.xml | 2 +- examples/spring-boot-oauth-u2m-demo/pom.xml | 2 +- lockfile.json | 2 +- pom.xml | 2 +- shaded/pom.xml | 2 +- 60 files changed, 1956 insertions(+), 91 deletions(-) create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/AlertSpendStatus.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetSpendStatus.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/GetBudgetSpendStatusRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesResponse.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunction.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionInlineLabels.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionLabel.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunction.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunctionMode.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTask.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTaskOutput.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunction.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunctionDescriptionElementType.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeltaTableSource.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/QualifiedName.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValuesAiFunctionTaskResolvedValues.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/VolumeSource.java diff --git a/.codegen/_last_sha b/.codegen/_last_sha index 18f970a08..b8fbe0174 100644 --- a/.codegen/_last_sha +++ b/.codegen/_last_sha @@ -1 +1 @@ -e0b8229e948c8063e05433bce268ff448ad20199 \ No newline at end of file +da7fcfc1c46b1bf871f3a25bb82e5c2ea62cdac0 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 98c081c28..f95013d8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Version changelog +## Release v0.172.0 (2026-10-29) + +### Bug Fixes +* Fix Databricks CLI authentication rejecting small wrappers around the CLI (e.g. launcher scripts or version manager shims) as the legacy Python CLI. Small files found in `PATH` are now only rejected if they are the entry point pip installs for the legacy Python CLI. + +### API Changes +* Add `getBudgetSpendStatus()` and `listBudgetSpendStatuses()` methods for `accountClient.budgets()` service. +* Add `aiFunctionTask` field for `com.databricks.sdk.service.jobs.ResolvedValues`. +* Add `aiFunctionTaskOutput` field for `com.databricks.sdk.service.jobs.RunOutput`. +* Add `aiFunctionTask` field for `com.databricks.sdk.service.jobs.RunTask`. +* Add `aiFunctionTask` field for `com.databricks.sdk.service.jobs.SubmitTask`. +* Add `aiFunctionTask` field for `com.databricks.sdk.service.jobs.Task`. + ## Release v0.171.0 (2026-10-26) ### API Changes diff --git a/databricks-sdk-java/lockfile.json b/databricks-sdk-java/lockfile.json index 540cd352c..6e0e2de4f 100644 --- a/databricks-sdk-java/lockfile.json +++ b/databricks-sdk-java/lockfile.json @@ -1,7 +1,7 @@ { "artifactId": "databricks-sdk-java", "groupId": "com.databricks", - "version": "0.171.0", + "version": "0.172.0", "lockFileVersion": 1, "dependencies": [ { @@ -894,14 +894,14 @@ { "groupId": "commons-io", "artifactId": "commons-io", - "version": "2.14.0", + "version": "2.22.0", "checksumAlgorithm": "SHA-256", - "checksum": "e35d1df7232568ed4b81d9a9ed94a0159b3ff6cf1915cc21eef5cb55d7b157a2", + "checksum": "2b9a7b1f726fb86216dbd2c8321eabe0221dbd5b1be81c18e1cb53811b104758", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.14.0/commons-io-2.14.0.jar", - "selectedVersion": "2.14.0", + "resolved": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.22.0/commons-io-2.22.0.jar", + "selectedVersion": "2.22.0", "included": true, - "id": "commons-io:commons-io:2.14.0", + "id": "commons-io:commons-io:2.22.0", "children": [] }, { @@ -924,7 +924,7 @@ "checksum": "2b9a7b1f726fb86216dbd2c8321eabe0221dbd5b1be81c18e1cb53811b104758", "scope": "compile", "resolved": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.22.0/commons-io-2.22.0.jar", - "selectedVersion": "2.14.0", + "selectedVersion": "2.22.0", "included": false, "id": "commons-io:commons-io:2.22.0", "parent": "org.apache.commons:commons-configuration2:2.15.1", @@ -1460,7 +1460,7 @@ "metaData": { "environment": { "osName": "Linux", - "mavenVersion": "3.8.7", + "mavenVersion": "3.9.6", "javaVersion": "21.0.12.1" }, "config": { diff --git a/databricks-sdk-java/pom.xml b/databricks-sdk-java/pom.xml index 2b2438954..a3a59e80e 100644 --- a/databricks-sdk-java/pom.xml +++ b/databricks-sdk-java/pom.xml @@ -5,7 +5,7 @@ com.databricks databricks-sdk-parent - 0.171.0 + 0.172.0 databricks-sdk-java Databricks SDK for Java @@ -69,7 +69,7 @@ commons-io commons-io - 2.14.0 + 2.22.0 org.junit.jupiter diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java index 8753bfd60..e217e7891 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java @@ -939,7 +939,14 @@ public DataSourcesAPI dataSources() { return dataSourcesAPI; } - /** Database Instances provide access to a database via REST API or direct SQL. */ + /** + * Database Instances provide access to a database via REST API or direct SQL. + * + *

For new workloads, Databricks recommends the [Postgres API], which supports the latest + * Lakebase features. + * + *

[Postgres API]: https://docs.databricks.com/api/postgres/v1/postgres + */ public DatabaseAPI database() { return databaseAPI; } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/UserAgent.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/UserAgent.java index 6c81aa24d..b8581593e 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/UserAgent.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/UserAgent.java @@ -36,7 +36,7 @@ public String getValue() { // TODO: check if reading from // /META-INF/maven/com.databricks/databrics-sdk-java/pom.properties // or getClass().getPackage().getImplementationVersion() is enough. - private static final String version = "0.171.0"; + private static final String version = "0.172.0"; public static void withProduct(String product, String productVersion) { UserAgent.product = product; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/OSUtils.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/OSUtils.java index 3b2574557..043d6c54b 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/OSUtils.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/OSUtils.java @@ -5,6 +5,7 @@ import com.databricks.sdk.core.logging.LoggerFactory; import com.databricks.sdk.support.InternalApi; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -18,6 +19,13 @@ public class OSUtils { private static final Logger LOG = LoggerFactory.getLogger(OSUtils.class); + // Files at least this large are assumed to be the Go CLI and are not read. + private static final long DATABRICKS_CLI_MIN_SIZE = 1024 * 1024; + + // Identifies the legacy CLI's pip entry point script. The imported name is omitted because it + // changed from `cli` to `main` in 0.17.8. + private static final String LEGACY_CLI_MARKER = "from databricks_cli.cli import "; + /** * Returns the name of the current operating system. * @@ -62,9 +70,18 @@ public static String findExecutable(List paths, String name) { LOG.debug("Unable to get size of databricks cli, continuing", e); continue; } - if (size < 1024 * 1024) { - LOG.debug("Databricks CLI version <0.100.0 detected"); - continue; + if (size < DATABRICKS_CLI_MIN_SIZE) { + byte[] content; + try { + content = Files.readAllBytes(path); + } catch (IOException e) { + LOG.debug("Unable to read databricks cli, continuing", e); + continue; + } + if (new String(content, StandardCharsets.ISO_8859_1).contains(LEGACY_CLI_MARKER)) { + LOG.debug("Databricks CLI version <0.100.0 detected"); + continue; + } } String pathStr = path.toString(); LOG.debug("Found executable named '" + name + "' in PATH: " + pathStr); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/AlertSpendStatus.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/AlertSpendStatus.java new file mode 100644 index 000000000..6b51044e9 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/AlertSpendStatus.java @@ -0,0 +1,124 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.billing; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** + * The calling user's spend against a single blocking threshold. Values may be omitted if live spend + * or threshold data is temporarily unavailable. + */ +@Generated +public class AlertSpendStatus { + /** + * Percentage of the threshold consumed, as a decimal string rounded down to one decimal place + * (for example, "68.4" means 68.4%). May exceed 100 when spend is over the threshold. Returns + * "0.0" if there's no spend, and is omitted if the threshold is $0. For shared thresholds, this + * is the only value returned; the absolute `spend` and `threshold` dollar amounts are withheld. + */ + @JsonProperty("percent_consumed") + private String percentConsumed; + + /** + * Whether the threshold is evaluated per individual user + * (`ALERT_CONFIGURATION_SCOPE_TYPE_PER_USER`) or on the shared spend across all users + * (`ALERT_CONFIGURATION_SCOPE_TYPE_SHARED`). + */ + @JsonProperty("scope_type") + private AlertConfigurationScopeType scopeType; + + /** + * The calling user's live spend against this threshold, in USD at list price. Returns "0" if the + * caller has no usage. Omitted for shared thresholds, where only `percent_consumed` is returned. + */ + @JsonProperty("spend") + private String spend; + + /** + * The calling user's effective threshold, in USD at list price. The effective threshold is the + * actual threshold amount that applies to the user, after adjusting for any user or group + * overrides. Omitted for shared thresholds, where only `percent_consumed` is returned. + */ + @JsonProperty("threshold") + private String threshold; + + /** The time window the threshold applies to, for example `MONTH`. */ + @JsonProperty("time_period") + private AlertConfigurationTimePeriod timePeriod; + + public AlertSpendStatus setPercentConsumed(String percentConsumed) { + this.percentConsumed = percentConsumed; + return this; + } + + public String getPercentConsumed() { + return percentConsumed; + } + + public AlertSpendStatus setScopeType(AlertConfigurationScopeType scopeType) { + this.scopeType = scopeType; + return this; + } + + public AlertConfigurationScopeType getScopeType() { + return scopeType; + } + + public AlertSpendStatus setSpend(String spend) { + this.spend = spend; + return this; + } + + public String getSpend() { + return spend; + } + + public AlertSpendStatus setThreshold(String threshold) { + this.threshold = threshold; + return this; + } + + public String getThreshold() { + return threshold; + } + + public AlertSpendStatus setTimePeriod(AlertConfigurationTimePeriod timePeriod) { + this.timePeriod = timePeriod; + return this; + } + + public AlertConfigurationTimePeriod getTimePeriod() { + return timePeriod; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AlertSpendStatus that = (AlertSpendStatus) o; + return Objects.equals(percentConsumed, that.percentConsumed) + && Objects.equals(scopeType, that.scopeType) + && Objects.equals(spend, that.spend) + && Objects.equals(threshold, that.threshold) + && Objects.equals(timePeriod, that.timePeriod); + } + + @Override + public int hashCode() { + return Objects.hash(percentConsumed, scopeType, spend, threshold, timePeriod); + } + + @Override + public String toString() { + return new ToStringer(AlertSpendStatus.class) + .add("percentConsumed", percentConsumed) + .add("scopeType", scopeType) + .add("spend", spend) + .add("threshold", threshold) + .add("timePeriod", timePeriod) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetSpendStatus.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetSpendStatus.java new file mode 100644 index 000000000..0699df6c0 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetSpendStatus.java @@ -0,0 +1,68 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.billing; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collection; +import java.util.Objects; + +/** The calling user's live spend against the blocking thresholds of a single budget. */ +@Generated +public class BudgetSpendStatus { + /** + * The calling user's spend against each blocking threshold on this budget, one entry per scope + * type and time period. A blocking threshold is a threshold that, once reached, blocks further + * requests through Unity Gateway. + */ + @JsonProperty("alert_spend_statuses") + private Collection alertSpendStatuses; + + /** + * The resource name of this budget spend status, of the form + * `accounts/{account_id}/budget-spend-statuses/{budget_id}`. + */ + @JsonProperty("name") + private String name; + + public BudgetSpendStatus setAlertSpendStatuses(Collection alertSpendStatuses) { + this.alertSpendStatuses = alertSpendStatuses; + return this; + } + + public Collection getAlertSpendStatuses() { + return alertSpendStatuses; + } + + public BudgetSpendStatus setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BudgetSpendStatus that = (BudgetSpendStatus) o; + return Objects.equals(alertSpendStatuses, that.alertSpendStatuses) + && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(alertSpendStatuses, name); + } + + @Override + public String toString() { + return new ToStringer(BudgetSpendStatus.class) + .add("alertSpendStatuses", alertSpendStatuses) + .add("name", name) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsAPI.java index 9683a04a0..565afdd5a 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsAPI.java @@ -60,6 +60,20 @@ public GetBudgetConfigurationResponse get(GetBudgetConfigurationRequest request) return impl.get(request); } + public BudgetSpendStatus getBudgetSpendStatus(String name) { + return getBudgetSpendStatus(new GetBudgetSpendStatusRequest().setName(name)); + } + + /** + * Get the calling user's live spend against the blocking thresholds of a single Unity Gateway + * budget. Any account user can call this for their own spend. Spend is reported in USD at list + * price and is near-real-time, so it may differ slightly from billing data. Returns NOT_FOUND if + * the budget doesn't exist or has no blocking thresholds. + */ + public BudgetSpendStatus getBudgetSpendStatus(GetBudgetSpendStatusRequest request) { + return impl.getBudgetSpendStatus(request); + } + /** Gets all budgets associated with this account. */ public Iterable list(ListBudgetConfigurationsRequest request) { return Paginator.newTokenPagination( @@ -75,6 +89,22 @@ public Iterable list(ListBudgetConfigurationsRequest reques }); } + public ListBudgetSpendStatusesResponse listBudgetSpendStatuses(String parent) { + return listBudgetSpendStatuses(new ListBudgetSpendStatusesRequest().setParent(parent)); + } + + /** + * List the calling user's live spend against the blocking thresholds across the account's Unity + * Gateway budgets. Any account user can call this for their own spend. Spend is reported in USD + * at list price and is near-real-time, so it may differ slightly from billing data. By default, + * returns every budget in the account that has a blocking threshold. Use `filter` to narrow + * results by workspace. + */ + public ListBudgetSpendStatusesResponse listBudgetSpendStatuses( + ListBudgetSpendStatusesRequest request) { + return impl.listBudgetSpendStatuses(request); + } + /** * Updates a budget configuration for an account. Both account and budget configuration are * specified by ID. diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsImpl.java index 65177a163..7f8563abf 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsImpl.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsImpl.java @@ -65,6 +65,20 @@ public GetBudgetConfigurationResponse get(GetBudgetConfigurationRequest request) } } + @Override + public BudgetSpendStatus getBudgetSpendStatus(GetBudgetSpendStatusRequest request) { + String path = String.format("/api/2.1/%s", request.getName()); + try { + Request req = new Request("GET", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + return apiClient.execute(req, BudgetSpendStatus.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + @Override public ListBudgetConfigurationsResponse list(ListBudgetConfigurationsRequest request) { String path = String.format("/api/2.1/accounts/%s/budgets", apiClient.configuredAccountID()); @@ -79,6 +93,21 @@ public ListBudgetConfigurationsResponse list(ListBudgetConfigurationsRequest req } } + @Override + public ListBudgetSpendStatusesResponse listBudgetSpendStatuses( + ListBudgetSpendStatusesRequest request) { + String path = String.format("/api/2.1/%s/budget-spend-statuses", request.getParent()); + try { + Request req = new Request("GET", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + return apiClient.execute(req, ListBudgetSpendStatusesResponse.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + @Override public UpdateBudgetConfigurationResponse update(UpdateBudgetConfigurationRequest request) { String path = diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsService.java index 57acf86d2..553efc920 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsService.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/BudgetsService.java @@ -33,10 +33,28 @@ CreateBudgetConfigurationResponse create( */ GetBudgetConfigurationResponse get(GetBudgetConfigurationRequest getBudgetConfigurationRequest); + /** + * Get the calling user's live spend against the blocking thresholds of a single Unity Gateway + * budget. Any account user can call this for their own spend. Spend is reported in USD at list + * price and is near-real-time, so it may differ slightly from billing data. Returns NOT_FOUND if + * the budget doesn't exist or has no blocking thresholds. + */ + BudgetSpendStatus getBudgetSpendStatus(GetBudgetSpendStatusRequest getBudgetSpendStatusRequest); + /** Gets all budgets associated with this account. */ ListBudgetConfigurationsResponse list( ListBudgetConfigurationsRequest listBudgetConfigurationsRequest); + /** + * List the calling user's live spend against the blocking thresholds across the account's Unity + * Gateway budgets. Any account user can call this for their own spend. Spend is reported in USD + * at list price and is near-real-time, so it may differ slightly from billing data. By default, + * returns every budget in the account that has a blocking threshold. Use `filter` to narrow + * results by workspace. + */ + ListBudgetSpendStatusesResponse listBudgetSpendStatuses( + ListBudgetSpendStatusesRequest listBudgetSpendStatusesRequest); + /** * Updates a budget configuration for an account. Both account and budget configuration are * specified by ID. diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/GetBudgetSpendStatusRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/GetBudgetSpendStatusRequest.java new file mode 100644 index 000000000..8147c7710 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/GetBudgetSpendStatusRequest.java @@ -0,0 +1,45 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.billing; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +@Generated +public class GetBudgetSpendStatusRequest { + /** + * The resource name of the budget spend status to read, of the form + * `accounts/{account_id}/budget-spend-statuses/{budget_id}`. A `budget_id` that isn't a valid + * UUID fails with INVALID_PARAMETER_VALUE. + */ + @JsonIgnore private String name; + + public GetBudgetSpendStatusRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GetBudgetSpendStatusRequest that = (GetBudgetSpendStatusRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(GetBudgetSpendStatusRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesRequest.java new file mode 100644 index 000000000..902cf02a7 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesRequest.java @@ -0,0 +1,110 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.billing; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +@Generated +public class ListBudgetSpendStatusesRequest { + /** + * A filter expression that narrows the returned budgets by workspace. Only `workspace_id` is + * supported, in lower case with numeric workspace IDs, for example `workspace_id = 123` or + * `workspace_id IN (123, 456)`. Matches budgets that apply to any of the listed workspaces, + * including budgets that apply to all workspaces. Any other expression, such as an empty `IN ()` + * list, fails with INVALID_PARAMETER_VALUE. If empty, returns every budget in the account that + * has a blocking threshold. + */ + @JsonIgnore + @QueryParam("filter") + private String filter; + + /** + * The maximum number of spend statuses to return per page. If unspecified or 0, at most 100 are + * returned. The maximum value is 100; values above 100 are coerced to 100. Negative values fail + * with INVALID_PARAMETER_VALUE. The server may return fewer results than requested, including + * zero, even when more pages remain; page until `next_page_token` is absent. + */ + @JsonIgnore + @QueryParam("page_size") + private Long pageSize; + + /** + * A page token from a previous `ListBudgetSpendStatuses` response, used to fetch the next page. + * Requests the first page if absent. All other request parameters except `page_size` must match + * the request that returned the token; otherwise the request fails with INVALID_PARAMETER_VALUE. + */ + @JsonIgnore + @QueryParam("page_token") + private String pageToken; + + /** + * The parent account whose budget spend statuses to list, of the form `accounts/{account_id}`. + */ + @JsonIgnore private String parent; + + public ListBudgetSpendStatusesRequest setFilter(String filter) { + this.filter = filter; + return this; + } + + public String getFilter() { + return filter; + } + + public ListBudgetSpendStatusesRequest setPageSize(Long pageSize) { + this.pageSize = pageSize; + return this; + } + + public Long getPageSize() { + return pageSize; + } + + public ListBudgetSpendStatusesRequest setPageToken(String pageToken) { + this.pageToken = pageToken; + return this; + } + + public String getPageToken() { + return pageToken; + } + + public ListBudgetSpendStatusesRequest setParent(String parent) { + this.parent = parent; + return this; + } + + public String getParent() { + return parent; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListBudgetSpendStatusesRequest that = (ListBudgetSpendStatusesRequest) o; + return Objects.equals(filter, that.filter) + && Objects.equals(pageSize, that.pageSize) + && Objects.equals(pageToken, that.pageToken) + && Objects.equals(parent, that.parent); + } + + @Override + public int hashCode() { + return Objects.hash(filter, pageSize, pageToken, parent); + } + + @Override + public String toString() { + return new ToStringer(ListBudgetSpendStatusesRequest.class) + .add("filter", filter) + .add("pageSize", pageSize) + .add("pageToken", pageToken) + .add("parent", parent) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesResponse.java new file mode 100644 index 000000000..997cb26e5 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/billing/ListBudgetSpendStatusesResponse.java @@ -0,0 +1,66 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.billing; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collection; +import java.util.Objects; + +/** Response for ListBudgetSpendStatuses. */ +@Generated +public class ListBudgetSpendStatusesResponse { + /** The calling user's spend status, one entry per returned budget. */ + @JsonProperty("budget_spend_statuses") + private Collection budgetSpendStatuses; + + /** + * Token to pass as `page_token` to retrieve the next page. Absent when there are no more results. + * A page can contain fewer results than `page_size`, or none, while this token is still set, so + * keep paging until it's absent. + */ + @JsonProperty("next_page_token") + private String nextPageToken; + + public ListBudgetSpendStatusesResponse setBudgetSpendStatuses( + Collection budgetSpendStatuses) { + this.budgetSpendStatuses = budgetSpendStatuses; + return this; + } + + public Collection getBudgetSpendStatuses() { + return budgetSpendStatuses; + } + + public ListBudgetSpendStatusesResponse setNextPageToken(String nextPageToken) { + this.nextPageToken = nextPageToken; + return this; + } + + public String getNextPageToken() { + return nextPageToken; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListBudgetSpendStatusesResponse that = (ListBudgetSpendStatusesResponse) o; + return Objects.equals(budgetSpendStatuses, that.budgetSpendStatuses) + && Objects.equals(nextPageToken, that.nextPageToken); + } + + @Override + public int hashCode() { + return Objects.hash(budgetSpendStatuses, nextPageToken); + } + + @Override + public String toString() { + return new ToStringer(ListBudgetSpendStatusesResponse.class) + .add("budgetSpendStatuses", budgetSpendStatuses) + .add("nextPageToken", nextPageToken) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListMcpServicesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListMcpServicesRequest.java index 7a9f26984..d4200a159 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListMcpServicesRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListMcpServicesRequest.java @@ -11,8 +11,8 @@ @Generated public class ListMcpServicesRequest { /** - * Maximum number of MCP services to return. Defaults to 200 when unset or 0; the maximum is 200. - * Use `page_token` to retrieve additional pages. + * Maximum number of MCP services to return. Defaults to 200 when unset or 0; the maximum is 1000 + * for `view = BASIC` and 200 for `view = FULL`. Use `page_token` to retrieve additional pages. */ @JsonIgnore @QueryParam("page_size") diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelProviderServicesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelProviderServicesRequest.java index c00eafe28..3fb81ee83 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelProviderServicesRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelProviderServicesRequest.java @@ -12,7 +12,8 @@ public class ListModelProviderServicesRequest { /** * Maximum number of provider services to return. Defaults to 200 when unset or 0; the maximum is - * 200. Use `page_token` to retrieve additional pages. + * 1000 for `view = BASIC` and 200 for `view = FULL`. Use `page_token` to retrieve additional + * pages. */ @JsonIgnore @QueryParam("page_size") diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelServicesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelServicesRequest.java index a9aa12073..f29403f63 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelServicesRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListModelServicesRequest.java @@ -12,7 +12,8 @@ public class ListModelServicesRequest { /** * Maximum number of model services to return. Defaults to 200 when unset or 0; the maximum is - * 200. Use `page_token` to retrieve additional pages. + * 1000 for `view = BASIC` and 200 for `view = FULL`. Use `page_token` to retrieve additional + * pages. */ @JsonIgnore @QueryParam("page_size") diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfig.java index 2d97a291d..1112075ea 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfig.java @@ -17,9 +17,10 @@ @Generated public class ModelProviderServiceConfig { /** - * When true, accepts any model exposed by the upstream provider; `targets` is not required and - * does not restrict routability. When false, only models listed in `targets` are routable. - * Defaults to false. + * When true, allows models from the provider's built-in model catalog in addition to explicit + * `targets`. When false, only models listed in `targets` are routable. Defaults to false. CUSTOM + * providers have no built-in model catalog and must leave this false and list their models in + * `targets`. */ @JsonProperty("allow_all_targets") private Boolean allowAllTargets; @@ -114,8 +115,9 @@ public class ModelProviderServiceConfig { * Models and provider-native API types exposed by this provider service. Each entry must include * at least one `native_api_types` value. When `allow_all_targets` is false, at least one entry is * required and model service destinations can reference only listed models. When - * `allow_all_targets` is true, any upstream model is routable; entries in this list provide - * API-type metadata without restricting other models. + * `allow_all_targets` is true, models from the provider's built-in model catalog are also + * routable. CUSTOM providers must explicitly list their models here and cannot enable + * `allow_all_targets`. */ @JsonProperty("targets") private Collection targets; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java index 5021b2f1d..7dd2e8c99 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java @@ -13,7 +13,14 @@ import java.util.concurrent.TimeoutException; import java.util.function.Consumer; -/** Database Instances provide access to a database via REST API or direct SQL. */ +/** + * Database Instances provide access to a database via REST API or direct SQL. + * + *

For new workloads, Databricks recommends the [Postgres API], which supports the latest + * Lakebase features. + * + *

[Postgres API]: https://docs.databricks.com/api/postgres/v1/postgres + */ @Generated public class DatabaseAPI { private static final Logger LOG = LoggerFactory.getLogger(DatabaseAPI.class); @@ -70,12 +77,24 @@ public DatabaseInstance waitGetDatabaseInstanceDatabaseAvailable( throw new TimeoutException(String.format("timed out after %s: %s", timeout, statusMessage)); } - /** Create a Database Catalog. */ + /** + * Create a Database Catalog. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a catalog]. + * + *

[Create a catalog]: https://docs.databricks.com/api/postgres/v1/create-catalog + */ public DatabaseCatalog createDatabaseCatalog(CreateDatabaseCatalogRequest request) { return impl.createDatabaseCatalog(request); } - /** Create a Database Instance. */ + /** + * Create a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a project]. + * + *

[Create a project]: https://docs.databricks.com/api/postgres/v1/create-project + */ public Wait createDatabaseInstance( CreateDatabaseInstanceRequest request) { DatabaseInstance response = impl.createDatabaseInstance(request); @@ -85,7 +104,13 @@ public Wait createDatabaseInstance( response); } - /** Create a role for a Database Instance. */ + /** + * Create a role for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a role]. + * + *

[Create a role]: https://docs.databricks.com/api/postgres/v1/create-role + */ public DatabaseInstanceRole createDatabaseInstanceRole( CreateDatabaseInstanceRoleRequest request) { return impl.createDatabaseInstanceRole(request); @@ -99,7 +124,14 @@ public DatabaseTable createDatabaseTable(CreateDatabaseTableRequest request) { return impl.createDatabaseTable(request); } - /** Create a Synced Database Table. */ + /** + * Create a Synced Database Table. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a synced + * table]. + * + *

[Create a synced table]: https://docs.databricks.com/api/postgres/v1/create-synced-table + */ public SyncedDatabaseTable createSyncedDatabaseTable(CreateSyncedDatabaseTableRequest request) { return impl.createSyncedDatabaseTable(request); } @@ -108,7 +140,13 @@ public void deleteDatabaseCatalog(String name) { deleteDatabaseCatalog(new DeleteDatabaseCatalogRequest().setName(name)); } - /** Delete a Database Catalog. */ + /** + * Delete a Database Catalog. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a catalog]. + * + *

[Delete a catalog]: https://docs.databricks.com/api/postgres/v1/delete-catalog + */ public void deleteDatabaseCatalog(DeleteDatabaseCatalogRequest request) { impl.deleteDatabaseCatalog(request); } @@ -117,7 +155,13 @@ public void deleteDatabaseInstance(String name) { deleteDatabaseInstance(new DeleteDatabaseInstanceRequest().setName(name)); } - /** Delete a Database Instance. */ + /** + * Delete a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a project]. + * + *

[Delete a project]: https://docs.databricks.com/api/postgres/v1/delete-project + */ public void deleteDatabaseInstance(DeleteDatabaseInstanceRequest request) { impl.deleteDatabaseInstance(request); } @@ -127,7 +171,13 @@ public void deleteDatabaseInstanceRole(String instanceName, String name) { new DeleteDatabaseInstanceRoleRequest().setInstanceName(instanceName).setName(name)); } - /** Deletes a role for a Database Instance. */ + /** + * Deletes a role for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a role]. + * + *

[Delete a role]: https://docs.databricks.com/api/postgres/v1/delete-role + */ public void deleteDatabaseInstanceRole(DeleteDatabaseInstanceRoleRequest request) { impl.deleteDatabaseInstanceRole(request); } @@ -145,7 +195,14 @@ public void deleteSyncedDatabaseTable(String name) { deleteSyncedDatabaseTable(new DeleteSyncedDatabaseTableRequest().setName(name)); } - /** Delete a Synced Database Table. */ + /** + * Delete a Synced Database Table. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a synced + * table]. + * + *

[Delete a synced table]: https://docs.databricks.com/api/postgres/v1/delete-synced-table + */ public void deleteSyncedDatabaseTable(DeleteSyncedDatabaseTableRequest request) { impl.deleteSyncedDatabaseTable(request); } @@ -155,7 +212,15 @@ public DatabaseInstance findDatabaseInstanceByUid(FindDatabaseInstanceByUidReque return impl.findDatabaseInstanceByUid(request); } - /** Generates a credential that can be used to access database instances. */ + /** + * Generates a credential that can be used to access database instances. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Generate a database + * credential]. + * + *

[Generate a database credential]: + * https://docs.databricks.com/api/postgres/v1/generate-database-credential + */ public DatabaseCredential generateDatabaseCredential(GenerateDatabaseCredentialRequest request) { return impl.generateDatabaseCredential(request); } @@ -164,7 +229,13 @@ public DatabaseCatalog getDatabaseCatalog(String name) { return getDatabaseCatalog(new GetDatabaseCatalogRequest().setName(name)); } - /** Get a Database Catalog. */ + /** + * Get a Database Catalog. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a catalog]. + * + *

[Get a catalog]: https://docs.databricks.com/api/postgres/v1/get-catalog + */ public DatabaseCatalog getDatabaseCatalog(GetDatabaseCatalogRequest request) { return impl.getDatabaseCatalog(request); } @@ -173,7 +244,13 @@ public DatabaseInstance getDatabaseInstance(String name) { return getDatabaseInstance(new GetDatabaseInstanceRequest().setName(name)); } - /** Get a Database Instance. */ + /** + * Get a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a project]. + * + *

[Get a project]: https://docs.databricks.com/api/postgres/v1/get-project + */ public DatabaseInstance getDatabaseInstance(GetDatabaseInstanceRequest request) { return impl.getDatabaseInstance(request); } @@ -183,7 +260,13 @@ public DatabaseInstanceRole getDatabaseInstanceRole(String instanceName, String new GetDatabaseInstanceRoleRequest().setInstanceName(instanceName).setName(name)); } - /** Gets a role for a Database Instance. */ + /** + * Gets a role for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a role]. + * + *

[Get a role]: https://docs.databricks.com/api/postgres/v1/get-role + */ public DatabaseInstanceRole getDatabaseInstanceRole(GetDatabaseInstanceRoleRequest request) { return impl.getDatabaseInstanceRole(request); } @@ -201,7 +284,13 @@ public SyncedDatabaseTable getSyncedDatabaseTable(String name) { return getSyncedDatabaseTable(new GetSyncedDatabaseTableRequest().setName(name)); } - /** Get a Synced Database Table. */ + /** + * Get a Synced Database Table. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a synced table]. + * + *

[Get a synced table]: https://docs.databricks.com/api/postgres/v1/get-synced-table + */ public SyncedDatabaseTable getSyncedDatabaseTable(GetSyncedDatabaseTableRequest request) { return impl.getSyncedDatabaseTable(request); } @@ -231,10 +320,11 @@ public Iterable listDatabaseInstanceRoles(String instanceN } /** - * START OF PG ROLE APIs Section These APIs are marked a PUBLIC with stage < PUBLIC_PREVIEW. With - * more recent Lakebase V2 plans, we don't plan to ever advance these to PUBLIC_PREVIEW. These - * APIs will remain effectively undocumented/UI-only and we'll aim for a new public roles API as - * part of V2 PuPr. + * List roles for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [List roles]. + * + *

[List roles]: https://docs.databricks.com/api/postgres/v1/list-roles */ public Iterable listDatabaseInstanceRoles( ListDatabaseInstanceRolesRequest request) { @@ -251,7 +341,13 @@ public Iterable listDatabaseInstanceRoles( }); } - /** List Database Instances. */ + /** + * List Database Instances. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [List projects]. + * + *

[List projects]: https://docs.databricks.com/api/postgres/v1/list-projects + */ public Iterable listDatabaseInstances(ListDatabaseInstancesRequest request) { return Paginator.newTokenPagination( request, @@ -292,7 +388,15 @@ public DatabaseCatalog updateDatabaseCatalog(UpdateDatabaseCatalogRequest reques return impl.updateDatabaseCatalog(request); } - /** Update a Database Instance. */ + /** + * Update a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalents: [Update a project] + * and [Update an endpoint]. + * + *

[Update a project]: https://docs.databricks.com/api/postgres/v1/update-project [Update an + * endpoint]: https://docs.databricks.com/api/postgres/v1/update-endpoint + */ public DatabaseInstance updateDatabaseInstance(UpdateDatabaseInstanceRequest request) { return impl.updateDatabaseInstance(request); } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseService.java index 78aa7cebd..1aa709e8f 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseService.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseService.java @@ -6,20 +6,43 @@ /** * Database Instances provide access to a database via REST API or direct SQL. * + *

For new workloads, Databricks recommends the [Postgres API], which supports the latest + * Lakebase features. + * + *

[Postgres API]: https://docs.databricks.com/api/postgres/v1/postgres + * *

This is the high-level interface, that contains generated methods. * *

Evolving: this interface is under development. Method signatures may change. */ @Generated public interface DatabaseService { - /** Create a Database Catalog. */ + /** + * Create a Database Catalog. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a catalog]. + * + *

[Create a catalog]: https://docs.databricks.com/api/postgres/v1/create-catalog + */ DatabaseCatalog createDatabaseCatalog(CreateDatabaseCatalogRequest createDatabaseCatalogRequest); - /** Create a Database Instance. */ + /** + * Create a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a project]. + * + *

[Create a project]: https://docs.databricks.com/api/postgres/v1/create-project + */ DatabaseInstance createDatabaseInstance( CreateDatabaseInstanceRequest createDatabaseInstanceRequest); - /** Create a role for a Database Instance. */ + /** + * Create a role for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a role]. + * + *

[Create a role]: https://docs.databricks.com/api/postgres/v1/create-role + */ DatabaseInstanceRole createDatabaseInstanceRole( CreateDatabaseInstanceRoleRequest createDatabaseInstanceRoleRequest); @@ -29,48 +52,112 @@ DatabaseInstanceRole createDatabaseInstanceRole( */ DatabaseTable createDatabaseTable(CreateDatabaseTableRequest createDatabaseTableRequest); - /** Create a Synced Database Table. */ + /** + * Create a Synced Database Table. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Create a synced + * table]. + * + *

[Create a synced table]: https://docs.databricks.com/api/postgres/v1/create-synced-table + */ SyncedDatabaseTable createSyncedDatabaseTable( CreateSyncedDatabaseTableRequest createSyncedDatabaseTableRequest); - /** Delete a Database Catalog. */ + /** + * Delete a Database Catalog. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a catalog]. + * + *

[Delete a catalog]: https://docs.databricks.com/api/postgres/v1/delete-catalog + */ void deleteDatabaseCatalog(DeleteDatabaseCatalogRequest deleteDatabaseCatalogRequest); - /** Delete a Database Instance. */ + /** + * Delete a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a project]. + * + *

[Delete a project]: https://docs.databricks.com/api/postgres/v1/delete-project + */ void deleteDatabaseInstance(DeleteDatabaseInstanceRequest deleteDatabaseInstanceRequest); - /** Deletes a role for a Database Instance. */ + /** + * Deletes a role for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a role]. + * + *

[Delete a role]: https://docs.databricks.com/api/postgres/v1/delete-role + */ void deleteDatabaseInstanceRole( DeleteDatabaseInstanceRoleRequest deleteDatabaseInstanceRoleRequest); /** Delete a Database Table. */ void deleteDatabaseTable(DeleteDatabaseTableRequest deleteDatabaseTableRequest); - /** Delete a Synced Database Table. */ + /** + * Delete a Synced Database Table. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Delete a synced + * table]. + * + *

[Delete a synced table]: https://docs.databricks.com/api/postgres/v1/delete-synced-table + */ void deleteSyncedDatabaseTable(DeleteSyncedDatabaseTableRequest deleteSyncedDatabaseTableRequest); /** Find a Database Instance by uid. */ DatabaseInstance findDatabaseInstanceByUid( FindDatabaseInstanceByUidRequest findDatabaseInstanceByUidRequest); - /** Generates a credential that can be used to access database instances. */ + /** + * Generates a credential that can be used to access database instances. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Generate a database + * credential]. + * + *

[Generate a database credential]: + * https://docs.databricks.com/api/postgres/v1/generate-database-credential + */ DatabaseCredential generateDatabaseCredential( GenerateDatabaseCredentialRequest generateDatabaseCredentialRequest); - /** Get a Database Catalog. */ + /** + * Get a Database Catalog. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a catalog]. + * + *

[Get a catalog]: https://docs.databricks.com/api/postgres/v1/get-catalog + */ DatabaseCatalog getDatabaseCatalog(GetDatabaseCatalogRequest getDatabaseCatalogRequest); - /** Get a Database Instance. */ + /** + * Get a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a project]. + * + *

[Get a project]: https://docs.databricks.com/api/postgres/v1/get-project + */ DatabaseInstance getDatabaseInstance(GetDatabaseInstanceRequest getDatabaseInstanceRequest); - /** Gets a role for a Database Instance. */ + /** + * Gets a role for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a role]. + * + *

[Get a role]: https://docs.databricks.com/api/postgres/v1/get-role + */ DatabaseInstanceRole getDatabaseInstanceRole( GetDatabaseInstanceRoleRequest getDatabaseInstanceRoleRequest); /** Get a Database Table. */ DatabaseTable getDatabaseTable(GetDatabaseTableRequest getDatabaseTableRequest); - /** Get a Synced Database Table. */ + /** + * Get a Synced Database Table. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [Get a synced table]. + * + *

[Get a synced table]: https://docs.databricks.com/api/postgres/v1/get-synced-table + */ SyncedDatabaseTable getSyncedDatabaseTable( GetSyncedDatabaseTableRequest getSyncedDatabaseTableRequest); @@ -79,15 +166,22 @@ ListDatabaseCatalogsResponse listDatabaseCatalogs( ListDatabaseCatalogsRequest listDatabaseCatalogsRequest); /** - * START OF PG ROLE APIs Section These APIs are marked a PUBLIC with stage < PUBLIC_PREVIEW. With - * more recent Lakebase V2 plans, we don't plan to ever advance these to PUBLIC_PREVIEW. These - * APIs will remain effectively undocumented/UI-only and we'll aim for a new public roles API as - * part of V2 PuPr. + * List roles for a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [List roles]. + * + *

[List roles]: https://docs.databricks.com/api/postgres/v1/list-roles */ ListDatabaseInstanceRolesResponse listDatabaseInstanceRoles( ListDatabaseInstanceRolesRequest listDatabaseInstanceRolesRequest); - /** List Database Instances. */ + /** + * List Database Instances. + * + *

For new workloads, Databricks recommends the Postgres API equivalent: [List projects]. + * + *

[List projects]: https://docs.databricks.com/api/postgres/v1/list-projects + */ ListDatabaseInstancesResponse listDatabaseInstances( ListDatabaseInstancesRequest listDatabaseInstancesRequest); @@ -98,7 +192,15 @@ ListSyncedDatabaseTablesResponse listSyncedDatabaseTables( /** This API is currently unimplemented, but exposed for Terraform support. */ DatabaseCatalog updateDatabaseCatalog(UpdateDatabaseCatalogRequest updateDatabaseCatalogRequest); - /** Update a Database Instance. */ + /** + * Update a Database Instance. + * + *

For new workloads, Databricks recommends the Postgres API equivalents: [Update a project] + * and [Update an endpoint]. + * + *

[Update a project]: https://docs.databricks.com/api/postgres/v1/update-project [Update an + * endpoint]: https://docs.databricks.com/api/postgres/v1/update-endpoint + */ DatabaseInstance updateDatabaseInstance( UpdateDatabaseInstanceRequest updateDatabaseInstanceRequest); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2API.java index fd92f8da1..515bf2409 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2API.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2API.java @@ -546,6 +546,8 @@ public Group updateGroup(UpdateGroupRequest request) { * Updates an existing service principal in the Databricks account. Only the fields named in the * update mask are modified. Returns the updated ServicePrincipal resource. * + *

For locally managed service principals, is_agent must be set to true or false when updated. + * *

When AIM is enabled and the service principal is an external identity (its external_id is * set), only external_id can be updated; its other fields are sourced from your identity * provider. diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2Service.java index d9130f85f..d66ce253c 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2Service.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/AccountIamV2Service.java @@ -281,6 +281,8 @@ ResolveServicePrincipalResponse resolveServicePrincipal( * Updates an existing service principal in the Databricks account. Only the fields named in the * update mask are modified. Returns the updated ServicePrincipal resource. * + *

For locally managed service principals, is_agent must be set to true or false when updated. + * *

When AIM is enabled and the service principal is an external identity (its external_id is * set), only external_id can be updated; its other fields are sourced from your identity * provider. diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/DirectGroupMember.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/DirectGroupMember.java index 3b615b67d..296903d52 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/DirectGroupMember.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/DirectGroupMember.java @@ -14,7 +14,7 @@ public class DirectGroupMember { @JsonProperty("display_name") private String displayName; - /** The external ID of the principal in Databricks. */ + /** The external ID of the principal in the customer's IdP. */ @JsonProperty("external_id") private String externalId; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupProxyRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupProxyRequest.java index 92a78a90c..1b94dc7a5 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupProxyRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupProxyRequest.java @@ -18,7 +18,7 @@ public class UpdateGroupProxyRequest { /** Required. Internal ID of the group in Databricks. */ @JsonIgnore private String groupId; - /** Optional. The list of fields to update. */ + /** Required. The list of fields to update. */ @JsonIgnore @QueryParam("update_mask") private String updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupRequest.java index 3a4147719..782aadc28 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateGroupRequest.java @@ -18,7 +18,7 @@ public class UpdateGroupRequest { /** Required. Internal ID of the group in Databricks. */ @JsonIgnore private String groupId; - /** Optional. The list of fields to update. */ + /** Required. The list of fields to update. */ @JsonIgnore @QueryParam("update_mask") private String updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalProxyRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalProxyRequest.java index 334d7f1bb..394b3933e 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalProxyRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalProxyRequest.java @@ -18,7 +18,7 @@ public class UpdateServicePrincipalProxyRequest { /** Required. Internal ID of the service principal in Databricks. */ @JsonIgnore private String servicePrincipalId; - /** Optional. The list of fields to update. */ + /** Required. The list of fields to update. */ @JsonIgnore @QueryParam("update_mask") private String updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalRequest.java index a7b5de289..8d38ca62b 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateServicePrincipalRequest.java @@ -18,7 +18,7 @@ public class UpdateServicePrincipalRequest { /** Required. Internal ID of the service principal in Databricks. */ @JsonIgnore private String servicePrincipalId; - /** Optional. The list of fields to update. */ + /** Required. The list of fields to update. */ @JsonIgnore @QueryParam("update_mask") private String updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserProxyRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserProxyRequest.java index 5eae94056..cefe2c876 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserProxyRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserProxyRequest.java @@ -11,7 +11,7 @@ @Generated public class UpdateUserProxyRequest { - /** Optional. The list of fields to update. */ + /** Required. The list of fields to update. */ @JsonIgnore @QueryParam("update_mask") private String updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserRequest.java index 52d0f32c2..4c836e322 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/UpdateUserRequest.java @@ -11,7 +11,7 @@ @Generated public class UpdateUserRequest { - /** Optional. The list of fields to update. */ + /** Required. The list of fields to update. */ @JsonIgnore @QueryParam("update_mask") private String updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2API.java index 52b708b2f..f94addd67 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2API.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2API.java @@ -485,6 +485,8 @@ public Group updateGroupProxy(UpdateGroupProxyRequest request) { * workspace. Only the fields named in the update mask are modified. Returns the updated * ServicePrincipal resource. * + *

For locally managed service principals, is_agent must be set to true or false when updated. + * *

When AIM is enabled and the service principal is an external identity (its external_id is * set), only external_id can be updated; its other fields are sourced from your identity * provider. diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2Service.java index d34be2028..26af04e2e 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2Service.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iamv2/WorkspaceIamV2Service.java @@ -260,6 +260,8 @@ ResolveServicePrincipalResponse resolveServicePrincipalProxy( * workspace. Only the fields named in the update mask are modified. Returns the updated * ServicePrincipal resource. * + *

For locally managed service principals, is_agent must be set to true or false when updated. + * *

When AIM is enabled and the service principal is an external identity (its external_id is * set), only external_id can be updated; its other fields are sourced from your identity * provider. diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunction.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunction.java new file mode 100644 index 000000000..155c4c6ba --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunction.java @@ -0,0 +1,130 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** + * Configuration for a task that runs the `ai_classify` function. + * + *

The label set comes from exactly one of two places: `inline_labels`, which holds up to 10 + * labels, or a Unity Catalog table named by `label_table`. Use `label_table` for a larger label + * set. + */ +@Generated +public class AiClassifyFunction { + /** When true, includes a per-label confidence score in the response. */ + @JsonProperty("enable_confidence_scores") + private Boolean enableConfidenceScores; + + /** When true, includes a rationale explaining each classification in the response. */ + @JsonProperty("enable_rationales") + private Boolean enableRationales; + + /** Labels listed inline, for a small label set. */ + @JsonProperty("inline_labels") + private AiClassifyFunctionInlineLabels inlineLabels; + + /** + * Global description of the task and domain, passed to the model to improve classification + * quality. + */ + @JsonProperty("instructions") + private String instructions; + + /** When true, more than one label can be returned for each input. */ + @JsonProperty("multilabel") + private Boolean multilabel; + + /** The ai_classify function version to invoke (for example, `2.1`). */ + @JsonProperty("version") + private String version; + + public AiClassifyFunction setEnableConfidenceScores(Boolean enableConfidenceScores) { + this.enableConfidenceScores = enableConfidenceScores; + return this; + } + + public Boolean getEnableConfidenceScores() { + return enableConfidenceScores; + } + + public AiClassifyFunction setEnableRationales(Boolean enableRationales) { + this.enableRationales = enableRationales; + return this; + } + + public Boolean getEnableRationales() { + return enableRationales; + } + + public AiClassifyFunction setInlineLabels(AiClassifyFunctionInlineLabels inlineLabels) { + this.inlineLabels = inlineLabels; + return this; + } + + public AiClassifyFunctionInlineLabels getInlineLabels() { + return inlineLabels; + } + + public AiClassifyFunction setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + public String getInstructions() { + return instructions; + } + + public AiClassifyFunction setMultilabel(Boolean multilabel) { + this.multilabel = multilabel; + return this; + } + + public Boolean getMultilabel() { + return multilabel; + } + + public AiClassifyFunction setVersion(String version) { + this.version = version; + return this; + } + + public String getVersion() { + return version; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiClassifyFunction that = (AiClassifyFunction) o; + return Objects.equals(enableConfidenceScores, that.enableConfidenceScores) + && Objects.equals(enableRationales, that.enableRationales) + && Objects.equals(inlineLabels, that.inlineLabels) + && Objects.equals(instructions, that.instructions) + && Objects.equals(multilabel, that.multilabel) + && Objects.equals(version, that.version); + } + + @Override + public int hashCode() { + return Objects.hash( + enableConfidenceScores, enableRationales, inlineLabels, instructions, multilabel, version); + } + + @Override + public String toString() { + return new ToStringer(AiClassifyFunction.class) + .add("enableConfidenceScores", enableConfidenceScores) + .add("enableRationales", enableRationales) + .add("inlineLabels", inlineLabels) + .add("instructions", instructions) + .add("multilabel", multilabel) + .add("version", version) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionInlineLabels.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionInlineLabels.java new file mode 100644 index 000000000..582a9ccd4 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionInlineLabels.java @@ -0,0 +1,47 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collection; +import java.util.Objects; + +/** A label set listed inline. */ +@Generated +public class AiClassifyFunctionInlineLabels { + /** + * The labels an input can be classified as. At least two labels are required unless `multilabel` + * is true, which also accepts a single label. + */ + @JsonProperty("labels") + private Collection labels; + + public AiClassifyFunctionInlineLabels setLabels(Collection labels) { + this.labels = labels; + return this; + } + + public Collection getLabels() { + return labels; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiClassifyFunctionInlineLabels that = (AiClassifyFunctionInlineLabels) o; + return Objects.equals(labels, that.labels); + } + + @Override + public int hashCode() { + return Objects.hash(labels); + } + + @Override + public String toString() { + return new ToStringer(AiClassifyFunctionInlineLabels.class).add("labels", labels).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionLabel.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionLabel.java new file mode 100644 index 000000000..04470d998 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiClassifyFunctionLabel.java @@ -0,0 +1,59 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** One label the input can be classified as. */ +@Generated +public class AiClassifyFunctionLabel { + /** Guidance describing what belongs under this label. */ + @JsonProperty("description") + private String description; + + /** The name returned when an input is classified as this label. */ + @JsonProperty("name") + private String name; + + public AiClassifyFunctionLabel setDescription(String description) { + this.description = description; + return this; + } + + public String getDescription() { + return description; + } + + public AiClassifyFunctionLabel setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiClassifyFunctionLabel that = (AiClassifyFunctionLabel) o; + return Objects.equals(description, that.description) && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(description, name); + } + + @Override + public String toString() { + return new ToStringer(AiClassifyFunctionLabel.class) + .add("description", description) + .add("name", name) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunction.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunction.java new file mode 100644 index 000000000..ec22aff52 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunction.java @@ -0,0 +1,134 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** + * Configuration for a task that runs the `ai_extract` function. + * + *

The fields to extract come from exactly one of two places: an existing AI Extract agent, named + * by `agent_id`, or the inline `schema` and `instructions`. Set `agent_id` or the inline fields, + * not both. + */ +@Generated +public class AiExtractFunction { + /** When true, includes citation metadata locating each extracted value in the source. */ + @JsonProperty("enable_citations") + private Boolean enableCitations; + + /** When true, includes a per-field confidence score in the response. */ + @JsonProperty("enable_confidence_scores") + private Boolean enableConfidenceScores; + + /** + * Global description of the task and domain, passed to the model to improve extraction quality. + */ + @JsonProperty("instructions") + private String instructions; + + /** The extraction mode. Defaults to standard extraction when unspecified. */ + @JsonProperty("mode") + private AiExtractFunctionMode mode; + + /** + * The extraction schema defining the fields to extract, as a JSON string. Either an array of + * field names (e.g. ["company", "valuation"]) or an object mapping each field name to a type and + * an optional description. Supported types are string, integer, number, boolean, enum, object, + * and array; all fields are optional. + */ + @JsonProperty("schema") + private String schema; + + /** The ai_extract function version to invoke (for example, `2.1`). */ + @JsonProperty("version") + private String version; + + public AiExtractFunction setEnableCitations(Boolean enableCitations) { + this.enableCitations = enableCitations; + return this; + } + + public Boolean getEnableCitations() { + return enableCitations; + } + + public AiExtractFunction setEnableConfidenceScores(Boolean enableConfidenceScores) { + this.enableConfidenceScores = enableConfidenceScores; + return this; + } + + public Boolean getEnableConfidenceScores() { + return enableConfidenceScores; + } + + public AiExtractFunction setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + public String getInstructions() { + return instructions; + } + + public AiExtractFunction setMode(AiExtractFunctionMode mode) { + this.mode = mode; + return this; + } + + public AiExtractFunctionMode getMode() { + return mode; + } + + public AiExtractFunction setSchema(String schema) { + this.schema = schema; + return this; + } + + public String getSchema() { + return schema; + } + + public AiExtractFunction setVersion(String version) { + this.version = version; + return this; + } + + public String getVersion() { + return version; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiExtractFunction that = (AiExtractFunction) o; + return Objects.equals(enableCitations, that.enableCitations) + && Objects.equals(enableConfidenceScores, that.enableConfidenceScores) + && Objects.equals(instructions, that.instructions) + && Objects.equals(mode, that.mode) + && Objects.equals(schema, that.schema) + && Objects.equals(version, that.version); + } + + @Override + public int hashCode() { + return Objects.hash( + enableCitations, enableConfidenceScores, instructions, mode, schema, version); + } + + @Override + public String toString() { + return new ToStringer(AiExtractFunction.class) + .add("enableCitations", enableCitations) + .add("enableConfidenceScores", enableConfidenceScores) + .add("instructions", instructions) + .add("mode", mode) + .add("schema", schema) + .add("version", version) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunctionMode.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunctionMode.java new file mode 100644 index 000000000..220ec0651 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiExtractFunctionMode.java @@ -0,0 +1,11 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; + +/** The extraction mode. */ +@Generated +public enum AiExtractFunctionMode { + MODE_PRECISION, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTask.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTask.java new file mode 100644 index 000000000..65a5c681d --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTask.java @@ -0,0 +1,123 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** A task that applies an AI function to a set of input documents or rows. */ +@Generated +public class AiFunctionTask { + /** Classifies each input document or row into one or more labels. */ + @JsonProperty("ai_classify") + private AiClassifyFunction aiClassify; + + /** Extracts structured fields from the input documents or rows. */ + @JsonProperty("ai_extract") + private AiExtractFunction aiExtract; + + /** Parses the input documents into structured text. */ + @JsonProperty("ai_parse_document") + private AiParseDocumentFunction aiParseDocument; + + /** A Unity Catalog Delta table. The function is applied to each row. */ + @JsonProperty("delta_table") + private DeltaTableSource deltaTable; + + /** + * Output destination table. When `table` is unset the task generates a stable name from the + * function and task identity so a downstream task can reference it. + */ + @JsonProperty("output") + private QualifiedName output; + + /** A Unity Catalog volume. The function is applied to each file. */ + @JsonProperty("volume") + private VolumeSource volume; + + public AiFunctionTask setAiClassify(AiClassifyFunction aiClassify) { + this.aiClassify = aiClassify; + return this; + } + + public AiClassifyFunction getAiClassify() { + return aiClassify; + } + + public AiFunctionTask setAiExtract(AiExtractFunction aiExtract) { + this.aiExtract = aiExtract; + return this; + } + + public AiExtractFunction getAiExtract() { + return aiExtract; + } + + public AiFunctionTask setAiParseDocument(AiParseDocumentFunction aiParseDocument) { + this.aiParseDocument = aiParseDocument; + return this; + } + + public AiParseDocumentFunction getAiParseDocument() { + return aiParseDocument; + } + + public AiFunctionTask setDeltaTable(DeltaTableSource deltaTable) { + this.deltaTable = deltaTable; + return this; + } + + public DeltaTableSource getDeltaTable() { + return deltaTable; + } + + public AiFunctionTask setOutput(QualifiedName output) { + this.output = output; + return this; + } + + public QualifiedName getOutput() { + return output; + } + + public AiFunctionTask setVolume(VolumeSource volume) { + this.volume = volume; + return this; + } + + public VolumeSource getVolume() { + return volume; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiFunctionTask that = (AiFunctionTask) o; + return Objects.equals(aiClassify, that.aiClassify) + && Objects.equals(aiExtract, that.aiExtract) + && Objects.equals(aiParseDocument, that.aiParseDocument) + && Objects.equals(deltaTable, that.deltaTable) + && Objects.equals(output, that.output) + && Objects.equals(volume, that.volume); + } + + @Override + public int hashCode() { + return Objects.hash(aiClassify, aiExtract, aiParseDocument, deltaTable, output, volume); + } + + @Override + public String toString() { + return new ToStringer(AiFunctionTask.class) + .add("aiClassify", aiClassify) + .add("aiExtract", aiExtract) + .add("aiParseDocument", aiParseDocument) + .add("deltaTable", deltaTable) + .add("output", output) + .add("volume", volume) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTaskOutput.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTaskOutput.java new file mode 100644 index 000000000..6ed8e88af --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiFunctionTaskOutput.java @@ -0,0 +1,119 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.protobuf.Duration; +import java.util.Objects; + +/** The result of an AI function task run. Also reported mid-run, so the counts can be partial. */ +@Generated +public class AiFunctionTaskOutput { + /** + * Coarse estimate of the time left to run the function over the inputs, from the throughput so + * far. Covers that work only, not the merge into the output table that follows it. + */ + @JsonProperty("estimated_time_remaining") + private Duration estimatedTimeRemaining; + + /** + * Inputs permanently failed so far. Each lands in the output table as an error row, and does not + * on its own fail the run. + */ + @JsonProperty("failed_row_count") + private Long failedRowCount; + + /** + * The table the run writes its results to. Reported even when `output.table` is unset and the + * name is generated, so a client can read the table. + */ + @JsonProperty("output_table") + private QualifiedName outputTable; + + /** Inputs with a result so far. Reported per batch, so it can lag mid-run. */ + @JsonProperty("succeeded_row_count") + private Long succeededRowCount; + + /** + * Inputs to process: rows for a Delta table source, files for a volume source. Stays well inside + * 2^53, so a JavaScript client can hold it exactly. + */ + @JsonProperty("total_row_count") + private Long totalRowCount; + + public AiFunctionTaskOutput setEstimatedTimeRemaining(Duration estimatedTimeRemaining) { + this.estimatedTimeRemaining = estimatedTimeRemaining; + return this; + } + + public Duration getEstimatedTimeRemaining() { + return estimatedTimeRemaining; + } + + public AiFunctionTaskOutput setFailedRowCount(Long failedRowCount) { + this.failedRowCount = failedRowCount; + return this; + } + + public Long getFailedRowCount() { + return failedRowCount; + } + + public AiFunctionTaskOutput setOutputTable(QualifiedName outputTable) { + this.outputTable = outputTable; + return this; + } + + public QualifiedName getOutputTable() { + return outputTable; + } + + public AiFunctionTaskOutput setSucceededRowCount(Long succeededRowCount) { + this.succeededRowCount = succeededRowCount; + return this; + } + + public Long getSucceededRowCount() { + return succeededRowCount; + } + + public AiFunctionTaskOutput setTotalRowCount(Long totalRowCount) { + this.totalRowCount = totalRowCount; + return this; + } + + public Long getTotalRowCount() { + return totalRowCount; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiFunctionTaskOutput that = (AiFunctionTaskOutput) o; + return Objects.equals(estimatedTimeRemaining, that.estimatedTimeRemaining) + && Objects.equals(failedRowCount, that.failedRowCount) + && Objects.equals(outputTable, that.outputTable) + && Objects.equals(succeededRowCount, that.succeededRowCount) + && Objects.equals(totalRowCount, that.totalRowCount); + } + + @Override + public int hashCode() { + return Objects.hash( + estimatedTimeRemaining, failedRowCount, outputTable, succeededRowCount, totalRowCount); + } + + @Override + public String toString() { + return new ToStringer(AiFunctionTaskOutput.class) + .add("estimatedTimeRemaining", estimatedTimeRemaining) + .add("failedRowCount", failedRowCount) + .add("outputTable", outputTable) + .add("succeededRowCount", succeededRowCount) + .add("totalRowCount", totalRowCount) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunction.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunction.java new file mode 100644 index 000000000..d350b6b9b --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunction.java @@ -0,0 +1,98 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collection; +import java.util.Objects; + +/** Configuration for a task that runs the `ai_parse_document` function. */ +@Generated +public class AiParseDocumentFunction { + /** + * Element types to generate AI descriptions for. Leave empty to generate no descriptions; use ALL + * for every supported type, or list specific types to restrict generation to only those. + */ + @JsonProperty("description_element_types") + private Collection descriptionElementTypes; + + /** Unity Catalog volume path where rendered page and element images are written. */ + @JsonProperty("image_output_path") + private String imageOutputPath; + + /** + * Pages to parse (1-indexed), as a comma-separated list of page numbers or ranges (e.g. + * "1,3,5-10"). + */ + @JsonProperty("page_range") + private String pageRange; + + /** The ai_parse_document output schema version to invoke (for example, `2.0`). */ + @JsonProperty("version") + private String version; + + public AiParseDocumentFunction setDescriptionElementTypes( + Collection descriptionElementTypes) { + this.descriptionElementTypes = descriptionElementTypes; + return this; + } + + public Collection getDescriptionElementTypes() { + return descriptionElementTypes; + } + + public AiParseDocumentFunction setImageOutputPath(String imageOutputPath) { + this.imageOutputPath = imageOutputPath; + return this; + } + + public String getImageOutputPath() { + return imageOutputPath; + } + + public AiParseDocumentFunction setPageRange(String pageRange) { + this.pageRange = pageRange; + return this; + } + + public String getPageRange() { + return pageRange; + } + + public AiParseDocumentFunction setVersion(String version) { + this.version = version; + return this; + } + + public String getVersion() { + return version; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AiParseDocumentFunction that = (AiParseDocumentFunction) o; + return Objects.equals(descriptionElementTypes, that.descriptionElementTypes) + && Objects.equals(imageOutputPath, that.imageOutputPath) + && Objects.equals(pageRange, that.pageRange) + && Objects.equals(version, that.version); + } + + @Override + public int hashCode() { + return Objects.hash(descriptionElementTypes, imageOutputPath, pageRange, version); + } + + @Override + public String toString() { + return new ToStringer(AiParseDocumentFunction.class) + .add("descriptionElementTypes", descriptionElementTypes) + .add("imageOutputPath", imageOutputPath) + .add("pageRange", pageRange) + .add("version", version) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunctionDescriptionElementType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunctionDescriptionElementType.java new file mode 100644 index 000000000..f2122d3d5 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/AiParseDocumentFunctionDescriptionElementType.java @@ -0,0 +1,12 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; + +/** An element type that AI descriptions can be generated for. */ +@Generated +public enum AiParseDocumentFunctionDescriptionElementType { + DESCRIPTION_ELEMENT_TYPE_ALL, + DESCRIPTION_ELEMENT_TYPE_FIGURE, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeltaTableSource.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeltaTableSource.java new file mode 100644 index 000000000..7f37822fb --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeltaTableSource.java @@ -0,0 +1,82 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collection; +import java.util.Objects; + +/** A Unity Catalog Delta table input source. The function is applied to each row. */ +@Generated +public class DeltaTableSource { + /** Name of the column holding the content the function is applied to. */ + @JsonProperty("input_column") + private String inputColumn; + + /** + * Columns that together identify a row across incremental runs, so results can be matched back to + * their source rows. When unset, the task derives an implicit key from Delta row tracking. If row + * tracking is also disabled there is no stable key, so each run reprocesses the entire source (a + * full refresh) rather than only the changed rows; set a key column or enable row tracking to + * keep runs incremental. + */ + @JsonProperty("merge_key_columns") + private Collection mergeKeyColumns; + + /** Fully qualified three-part name of the source table (catalog.schema.table). */ + @JsonProperty("table_name") + private String tableName; + + public DeltaTableSource setInputColumn(String inputColumn) { + this.inputColumn = inputColumn; + return this; + } + + public String getInputColumn() { + return inputColumn; + } + + public DeltaTableSource setMergeKeyColumns(Collection mergeKeyColumns) { + this.mergeKeyColumns = mergeKeyColumns; + return this; + } + + public Collection getMergeKeyColumns() { + return mergeKeyColumns; + } + + public DeltaTableSource setTableName(String tableName) { + this.tableName = tableName; + return this; + } + + public String getTableName() { + return tableName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeltaTableSource that = (DeltaTableSource) o; + return Objects.equals(inputColumn, that.inputColumn) + && Objects.equals(mergeKeyColumns, that.mergeKeyColumns) + && Objects.equals(tableName, that.tableName); + } + + @Override + public int hashCode() { + return Objects.hash(inputColumn, mergeKeyColumns, tableName); + } + + @Override + public String toString() { + return new ToStringer(DeltaTableSource.class) + .add("inputColumn", inputColumn) + .add("mergeKeyColumns", mergeKeyColumns) + .add("tableName", tableName) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/QualifiedName.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/QualifiedName.java new file mode 100644 index 000000000..d6600b312 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/QualifiedName.java @@ -0,0 +1,75 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** A three-level Unity Catalog name (catalog.schema.table); any level may be unset. */ +@Generated +public class QualifiedName { + /** Unity Catalog catalog. */ + @JsonProperty("catalog") + private String catalog; + + /** Unity Catalog schema, within the catalog. */ + @JsonProperty("schema") + private String schema; + + /** Table, within the catalog and schema. */ + @JsonProperty("table") + private String table; + + public QualifiedName setCatalog(String catalog) { + this.catalog = catalog; + return this; + } + + public String getCatalog() { + return catalog; + } + + public QualifiedName setSchema(String schema) { + this.schema = schema; + return this; + } + + public String getSchema() { + return schema; + } + + public QualifiedName setTable(String table) { + this.table = table; + return this; + } + + public String getTable() { + return table; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + QualifiedName that = (QualifiedName) o; + return Objects.equals(catalog, that.catalog) + && Objects.equals(schema, that.schema) + && Objects.equals(table, that.table); + } + + @Override + public int hashCode() { + return Objects.hash(catalog, schema, table); + } + + @Override + public String toString() { + return new ToStringer(QualifiedName.class) + .add("catalog", catalog) + .add("schema", schema) + .add("table", table) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValues.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValues.java index a9b800513..ecb7708e7 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValues.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValues.java @@ -9,6 +9,13 @@ @Generated public class ResolvedValues { + /** + * Resolved values for an AI Function task: the Delta table input with upstream-task references + * replaced by concrete values before the run. + */ + @JsonProperty("ai_function_task") + private ResolvedValuesAiFunctionTaskResolvedValues aiFunctionTask; + /** * Resolved values for an AI Runtime task — env_vars with `{{tasks..values.}}` * references substituted to concrete values before submission to the training service. @@ -60,6 +67,16 @@ public class ResolvedValues { @JsonProperty("sql_task") private ResolvedParamPairValues sqlTask; + public ResolvedValues setAiFunctionTask( + ResolvedValuesAiFunctionTaskResolvedValues aiFunctionTask) { + this.aiFunctionTask = aiFunctionTask; + return this; + } + + public ResolvedValuesAiFunctionTaskResolvedValues getAiFunctionTask() { + return aiFunctionTask; + } + public ResolvedValues setAiRuntimeTask(ResolvedValuesAiRuntimeTaskResolvedValues aiRuntimeTask) { this.aiRuntimeTask = aiRuntimeTask; return this; @@ -173,7 +190,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ResolvedValues that = (ResolvedValues) o; - return Objects.equals(aiRuntimeTask, that.aiRuntimeTask) + return Objects.equals(aiFunctionTask, that.aiFunctionTask) + && Objects.equals(aiRuntimeTask, that.aiRuntimeTask) && Objects.equals(conditionTask, that.conditionTask) && Objects.equals(dbtTask, that.dbtTask) && Objects.equals(notebookTask, that.notebookTask) @@ -190,6 +208,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + aiFunctionTask, aiRuntimeTask, conditionTask, dbtTask, @@ -207,6 +226,7 @@ public int hashCode() { @Override public String toString() { return new ToStringer(ResolvedValues.class) + .add("aiFunctionTask", aiFunctionTask) .add("aiRuntimeTask", aiRuntimeTask) .add("conditionTask", conditionTask) .add("dbtTask", dbtTask) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValuesAiFunctionTaskResolvedValues.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValuesAiFunctionTaskResolvedValues.java new file mode 100644 index 000000000..af7d62cf0 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ResolvedValuesAiFunctionTaskResolvedValues.java @@ -0,0 +1,29 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import java.util.Objects; + +/** Resolved values for an AI Function task's Delta table input. */ +@Generated +public class ResolvedValuesAiFunctionTaskResolvedValues { + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + return true; + } + + @Override + public int hashCode() { + return Objects.hash(); + } + + @Override + public String toString() { + return new ToStringer(ResolvedValuesAiFunctionTaskResolvedValues.class).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunOutput.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunOutput.java index 9b74bbcf2..8685f28dd 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunOutput.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunOutput.java @@ -10,6 +10,10 @@ /** Run output was retrieved successfully. */ @Generated public class RunOutput { + /** The output of an AI function task, if available */ + @JsonProperty("ai_function_task_output") + private AiFunctionTaskOutput aiFunctionTaskOutput; + /** * The output of an AiRuntimeTask, if available — MLflow identifiers, artifact paths, and * per-replica allocated compute. Run lifecycle / termination status lives on the surrounding @@ -98,6 +102,15 @@ public class RunOutput { @JsonProperty("sql_output") private SqlOutput sqlOutput; + public RunOutput setAiFunctionTaskOutput(AiFunctionTaskOutput aiFunctionTaskOutput) { + this.aiFunctionTaskOutput = aiFunctionTaskOutput; + return this; + } + + public AiFunctionTaskOutput getAiFunctionTaskOutput() { + return aiFunctionTaskOutput; + } + public RunOutput setAiRuntimeTaskOutput(AiRuntimeTaskOutput aiRuntimeTaskOutput) { this.aiRuntimeTaskOutput = aiRuntimeTaskOutput; return this; @@ -248,7 +261,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; RunOutput that = (RunOutput) o; - return Objects.equals(aiRuntimeTaskOutput, that.aiRuntimeTaskOutput) + return Objects.equals(aiFunctionTaskOutput, that.aiFunctionTaskOutput) + && Objects.equals(aiRuntimeTaskOutput, that.aiRuntimeTaskOutput) && Objects.equals(alertOutput, that.alertOutput) && Objects.equals(cleanRoomsNotebookOutput, that.cleanRoomsNotebookOutput) && Objects.equals(dashboardOutput, that.dashboardOutput) @@ -269,6 +283,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + aiFunctionTaskOutput, aiRuntimeTaskOutput, alertOutput, cleanRoomsNotebookOutput, @@ -290,6 +305,7 @@ public int hashCode() { @Override public String toString() { return new ToStringer(RunOutput.class) + .add("aiFunctionTaskOutput", aiFunctionTaskOutput) .add("aiRuntimeTaskOutput", aiRuntimeTaskOutput) .add("alertOutput", alertOutput) .add("cleanRoomsNotebookOutput", cleanRoomsNotebookOutput) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java index 842696a0f..b93b74d51 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java @@ -11,6 +11,10 @@ /** Used when outputting a child run, in GetRun or ListRuns. */ @Generated public class RunTask { + /** Applies an AI function to a set of input documents or rows. */ + @JsonProperty("ai_function_task") + private AiFunctionTask aiFunctionTask; + /** * The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify the accelerator * type and count, the command to run, and where the workload's code and MLflow output are stored. @@ -371,6 +375,15 @@ public class RunTask { @JsonProperty("webhook_notifications") private WebhookNotifications webhookNotifications; + public RunTask setAiFunctionTask(AiFunctionTask aiFunctionTask) { + this.aiFunctionTask = aiFunctionTask; + return this; + } + + public AiFunctionTask getAiFunctionTask() { + return aiFunctionTask; + } + public RunTask setAiRuntimeTask(AiRuntimeTask aiRuntimeTask) { this.aiRuntimeTask = aiRuntimeTask; return this; @@ -880,7 +893,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; RunTask that = (RunTask) o; - return Objects.equals(aiRuntimeTask, that.aiRuntimeTask) + return Objects.equals(aiFunctionTask, that.aiFunctionTask) + && Objects.equals(aiRuntimeTask, that.aiRuntimeTask) && Objects.equals(alertTask, that.alertTask) && Objects.equals(attemptNumber, that.attemptNumber) && Objects.equals(cleanRoomsNotebookTask, that.cleanRoomsNotebookTask) @@ -941,6 +955,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + aiFunctionTask, aiRuntimeTask, alertTask, attemptNumber, @@ -1002,6 +1017,7 @@ public int hashCode() { @Override public String toString() { return new ToStringer(RunTask.class) + .add("aiFunctionTask", aiFunctionTask) .add("aiRuntimeTask", aiRuntimeTask) .add("alertTask", alertTask) .add("attemptNumber", attemptNumber) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java index ff60cd2be..af4219d76 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java @@ -10,6 +10,10 @@ @Generated public class SubmitTask { + /** Applies an AI function to a set of input documents or rows. */ + @JsonProperty("ai_function_task") + private AiFunctionTask aiFunctionTask; + /** * The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify the accelerator * type and count, the command to run, and where the workload's code and MLflow output are stored. @@ -254,6 +258,15 @@ public class SubmitTask { @JsonProperty("webhook_notifications") private WebhookNotifications webhookNotifications; + public SubmitTask setAiFunctionTask(AiFunctionTask aiFunctionTask) { + this.aiFunctionTask = aiFunctionTask; + return this; + } + + public AiFunctionTask getAiFunctionTask() { + return aiFunctionTask; + } + public SubmitTask setAiRuntimeTask(AiRuntimeTask aiRuntimeTask) { this.aiRuntimeTask = aiRuntimeTask; return this; @@ -619,7 +632,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SubmitTask that = (SubmitTask) o; - return Objects.equals(aiRuntimeTask, that.aiRuntimeTask) + return Objects.equals(aiFunctionTask, that.aiFunctionTask) + && Objects.equals(aiRuntimeTask, that.aiRuntimeTask) && Objects.equals(alertTask, that.alertTask) && Objects.equals(cleanRoomsNotebookTask, that.cleanRoomsNotebookTask) && Objects.equals(compute, that.compute) @@ -664,6 +678,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + aiFunctionTask, aiRuntimeTask, alertTask, cleanRoomsNotebookTask, @@ -709,6 +724,7 @@ public int hashCode() { @Override public String toString() { return new ToStringer(SubmitTask.class) + .add("aiFunctionTask", aiFunctionTask) .add("aiRuntimeTask", aiRuntimeTask) .add("alertTask", alertTask) .add("cleanRoomsNotebookTask", cleanRoomsNotebookTask) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java index 5cc163a05..697d9a0be 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java @@ -10,6 +10,10 @@ @Generated public class Task { + /** Applies an AI function to a set of input documents or rows. */ + @JsonProperty("ai_function_task") + private AiFunctionTask aiFunctionTask; + /** * The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify the accelerator * type and count, the command to run, and where the workload's code and MLflow output are stored. @@ -265,6 +269,15 @@ public class Task { @JsonProperty("webhook_notifications") private WebhookNotifications webhookNotifications; + public Task setAiFunctionTask(AiFunctionTask aiFunctionTask) { + this.aiFunctionTask = aiFunctionTask; + return this; + } + + public AiFunctionTask getAiFunctionTask() { + return aiFunctionTask; + } + public Task setAiRuntimeTask(AiRuntimeTask aiRuntimeTask) { this.aiRuntimeTask = aiRuntimeTask; return this; @@ -639,7 +652,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Task that = (Task) o; - return Objects.equals(aiRuntimeTask, that.aiRuntimeTask) + return Objects.equals(aiFunctionTask, that.aiFunctionTask) + && Objects.equals(aiRuntimeTask, that.aiRuntimeTask) && Objects.equals(alertTask, that.alertTask) && Objects.equals(cleanRoomsNotebookTask, that.cleanRoomsNotebookTask) && Objects.equals(compute, that.compute) @@ -685,6 +699,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + aiFunctionTask, aiRuntimeTask, alertTask, cleanRoomsNotebookTask, @@ -731,6 +746,7 @@ public int hashCode() { @Override public String toString() { return new ToStringer(Task.class) + .add("aiFunctionTask", aiFunctionTask) .add("aiRuntimeTask", aiRuntimeTask) .add("alertTask", alertTask) .add("cleanRoomsNotebookTask", cleanRoomsNotebookTask) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/VolumeSource.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/VolumeSource.java new file mode 100644 index 000000000..e2b5cf3f3 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/VolumeSource.java @@ -0,0 +1,45 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.jobs; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** A Unity Catalog volume input source. The function is applied to each file. */ +@Generated +public class VolumeSource { + /** + * Unity Catalog volume path to the input files (e.g. `/Volumes////...`). + */ + @JsonProperty("volume_path") + private String volumePath; + + public VolumeSource setVolumePath(String volumePath) { + this.volumePath = volumePath; + return this; + } + + public String getVolumePath() { + return volumePath; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + VolumeSource that = (VolumeSource) o; + return Objects.equals(volumePath, that.volumePath); + } + + @Override + public int hashCode() { + return Objects.hash(volumePath); + } + + @Override + public String toString() { + return new ToStringer(VolumeSource.class).add("volumePath", volumePath).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java index b94cb077a..197ed86bb 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java @@ -33,8 +33,8 @@ public class TimeWindow { * 365 days of data; a lifetime window produces no output before start_time. If unset, tumbling * and fixed-duration sliding windows first emit at an offset-aligned boundary after a full window * can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as eligible - * source data exists. Not currently supported for sawtooth windows or for Features with a stream - * source. + * source data exists. For sawtooth windows, start_time must not be later than the time the + * Feature is created. Not supported for rolling windows on Features with a stream source. */ @JsonProperty("start_time") private Timestamp startTime; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/UpdateMaterializationSetRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/UpdateMaterializationSetRequest.java index d293f96e6..3ffc73929 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/UpdateMaterializationSetRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/UpdateMaterializationSetRequest.java @@ -31,7 +31,7 @@ public class UpdateMaterializationSetRequest { @QueryParam("request_id") private String requestId; - /** The fields to update. Only 'materialized_features' is supported. */ + /** The fields to update. Only 'materialized_features' or '*' is supported. */ @JsonIgnore @QueryParam("update_mask") private FieldMask updateMask; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/PtServedModel.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/PtServedModel.java index e39ac0172..58ed9e76c 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/PtServedModel.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/PtServedModel.java @@ -39,7 +39,10 @@ public class PtServedModel { @JsonProperty("name") private String name; - /** The number of model units to be provisioned. */ + /** + * The number of model units to be provisioned. Dedicated inference requires positive fixed + * capacity and does not support scale-to-zero. + */ @JsonProperty("provisioned_model_units") private Long provisionedModelUnits; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/AlertV2.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/AlertV2.java index 6aa712e8e..cc977548a 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/AlertV2.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/AlertV2.java @@ -14,11 +14,11 @@ public class AlertV2 { @JsonProperty("create_time") private String createTime; - /** Custom description for the alert. support mustache template. */ + /** Custom description for the alert. Interpreted according to `custom_template_format`. */ @JsonProperty("custom_description") private String customDescription; - /** Custom summary for the alert. support mustache template. */ + /** Custom summary for the alert. Interpreted according to `custom_template_format`. */ @JsonProperty("custom_summary") private String customSummary; diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/utils/OSUtilsTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/utils/OSUtilsTest.java index 12526bdf3..9c7d82ff7 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/utils/OSUtilsTest.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/utils/OSUtilsTest.java @@ -1,22 +1,38 @@ package com.databricks.sdk.utils; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + import com.databricks.sdk.core.utils.Environment; import com.databricks.sdk.core.utils.OSUtils; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.stream.Collectors; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; public class OSUtilsTest { + // Written by pip for the legacy Python CLI's entry point. + private static final String LEGACY_CLI_ENTRY_POINT = + "#!/opt/databricks-cli/bin/python\n" + + "# -*- coding: utf-8 -*-\n" + + "import re\n" + + "import sys\n" + + "from databricks_cli.cli import cli\n" + + "if __name__ == '__main__':\n" + + " sys.argv[0] = re.sub(r'(-script\\.pyw|\\.exe)?$', '', sys.argv[0])\n" + + " sys.exit(cli())\n"; + /** * Helper class to create a temporary directory with a databricks executable in it. * - *

We generate these files dynamically as the test is run because our check for the - * `databricks` executable is based on the size of the file, but we don't need to check a large - * file into our repository. + *

We generate these files dynamically as the test is run because small files are skipped if + * they are the legacy CLI, but we don't need to check a large file into our repository. */ static class PathHelper implements AutoCloseable { private List paths; @@ -31,7 +47,9 @@ public PathHelper(String osName, String executableName) { Path noDatabricksDir = Files.createTempDirectory(base); paths.add(noDatabricksDir); Path smallDatabricksDir = Files.createTempDirectory(base); - Files.write(smallDatabricksDir.resolve(executableName), new byte[0]); + Files.write( + smallDatabricksDir.resolve(executableName), + LEGACY_CLI_ENTRY_POINT.getBytes(StandardCharsets.UTF_8)); paths.add(smallDatabricksDir); Path bigDatabricksDir = Files.createTempDirectory(base); Files.write(bigDatabricksDir.resolve(executableName), new byte[2000000]); @@ -70,4 +88,55 @@ public void testGetDatabricksCliPath(String osName, String executableName, Boole assert (executable != null) == expectFound; } } + + private static String writeCli(Path dir, byte[] content) throws IOException { + Path cli = dir.resolve("databricks"); + Files.write(cli, content); + return cli.toAbsolutePath().normalize().toString(); + } + + private static String writeCli(Path dir, String content) throws IOException { + return writeCli(dir, content.getBytes(StandardCharsets.UTF_8)); + } + + @Test + public void findExecutable_skipsLegacyCliEntryPointImportingMain(@TempDir Path dir) + throws IOException { + writeCli(dir, LEGACY_CLI_ENTRY_POINT.replace("import cli", "import main")); + assertNull(OSUtils.findExecutable(Collections.singletonList(dir.toString()), "databricks")); + } + + @Test + public void findExecutable_acceptsSmallWrapperMentioningPackageName(@TempDir Path dir) + throws IOException { + String expected = + writeCli( + dir, + "#!/bin/sh\n# Replaces databricks_cli (databricks-cli on PyPI).\n" + + "exec /opt/databricks/bin/databricks \"$@\"\n"); + assertEquals( + expected, OSUtils.findExecutable(Collections.singletonList(dir.toString()), "databricks")); + } + + // A legacy CLI is skipped, but otherwise the first CLI in PATH wins. + @ParameterizedTest + @CsvSource({"legacy:shim:regular, shim", "shim:regular, shim", "regular:shim, regular"}) + public void findExecutable_pathOrder(String order, String want, @TempDir Path root) + throws IOException { + Map contents = new HashMap<>(); + contents.put("legacy", LEGACY_CLI_ENTRY_POINT.getBytes(StandardCharsets.UTF_8)); + contents.put( + "shim", + "#!/bin/sh\nexec /opt/databricks/bin/databricks \"$@\"\n".getBytes(StandardCharsets.UTF_8)); + contents.put("regular", new byte[2000000]); + Map clis = new HashMap<>(); + for (Map.Entry e : contents.entrySet()) { + clis.put(e.getKey(), writeCli(Files.createDirectory(root.resolve(e.getKey())), e.getValue())); + } + List paths = new ArrayList<>(); + for (String name : order.split(":")) { + paths.add(root.resolve(name).toString()); + } + assertEquals(clis.get(want), OSUtils.findExecutable(paths, "databricks")); + } } diff --git a/examples/docs/pom.xml b/examples/docs/pom.xml index fed6fdb4f..22fc161aa 100644 --- a/examples/docs/pom.xml +++ b/examples/docs/pom.xml @@ -24,7 +24,7 @@ com.databricks databricks-sdk-java - 0.171.0 + 0.172.0 diff --git a/examples/spring-boot-oauth-u2m-demo/pom.xml b/examples/spring-boot-oauth-u2m-demo/pom.xml index e05f0662d..528e73291 100644 --- a/examples/spring-boot-oauth-u2m-demo/pom.xml +++ b/examples/spring-boot-oauth-u2m-demo/pom.xml @@ -40,7 +40,7 @@ com.databricks databricks-sdk-java - 0.171.0 + 0.172.0 diff --git a/lockfile.json b/lockfile.json index 3fa5db068..4900bf229 100644 --- a/lockfile.json +++ b/lockfile.json @@ -1,7 +1,7 @@ { "artifactId": "databricks-sdk-parent", "groupId": "com.databricks", - "version": "0.171.0", + "version": "0.172.0", "lockFileVersion": 1, "dependencies": [], "mavenPlugins": [], diff --git a/pom.xml b/pom.xml index b46b8ed23..a1e37b04a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.databricks databricks-sdk-parent - 0.171.0 + 0.172.0 pom Databricks SDK for Java The Databricks SDK for Java includes functionality to accelerate development with Java for diff --git a/shaded/pom.xml b/shaded/pom.xml index 15c21067f..f7ee5d059 100644 --- a/shaded/pom.xml +++ b/shaded/pom.xml @@ -4,7 +4,7 @@ 4.0.0 - 0.171.0 + 0.172.0 com.databricks