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