Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codegen/_last_sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c765e364f87ce050e4077db80b8ec800c9ec1ed9
7216eeb8c5e517080d626f64b36209fea64788b3
33 changes: 33 additions & 0 deletions .github/workflows/sync-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# This repository is a read-only mirror; the only PRs that should
# merge are the release sync PRs from the internal source of truth.
# This check fails unless the PR carries the `sync` label, which only
# maintainers can apply — making every merge a deliberate act.
# Temporary guard until release automation takes over merging.
name: Sync label

on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]
# The label gate runs at PR level — a PR can't enter the merge queue
# until this check passes there. Merge-group events carry no label
# context, so on them the job passes trivially; without this trigger
# a required sync-label check would stall every queue entry.
merge_group:
types: [checks_requested]

jobs:
sync-label:
name: sync-label
runs-on: ubuntu-latest
steps:
- name: Merge queue — gate already applied at PR level
if: ${{ github.event_name == 'merge_group' }}
run: echo "merge group — sync label was enforced when the PR entered the queue."
- name: Require the `sync` label
if: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'sync') }}
run: |
echo "::error::This PR does not carry the 'sync' label. This repository is a read-only mirror — only release sync PRs merge here. If this IS a release sync PR, a maintainer must apply the 'sync' label; community contributions are re-applied in the internal repository instead (see CONTRIBUTING.md)."
exit 1
- name: Label present
if: ${{ github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'sync') }}
run: echo "sync label present — this is a release sync PR."
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
# Version changelog

## Release v0.157.0 (2026-09-30)
## Release v0.158.0 (2026-10-01)

### API Changes
* Add `aiDecide()` method for `workspaceClient.aiFunctions()` service.
* Add `listCommands()` method for `workspaceClient.sandbox()` service.
* Add `environmentVariables` field for `com.databricks.sdk.service.jobs.BaseRun`.
* Add `environmentVariables` field for `com.databricks.sdk.service.jobs.CreateJob`.
* Add `environmentVariables` field for `com.databricks.sdk.service.jobs.JobSettings`.
* Add `environmentVariables` field for `com.databricks.sdk.service.jobs.Run`.
* Add `environmentVariablesKey` field for `com.databricks.sdk.service.jobs.RunTask`.
* Add `environmentVariables` field for `com.databricks.sdk.service.jobs.SubmitRun`.
* Add `environmentVariablesKey` field for `com.databricks.sdk.service.jobs.SubmitTask`.
* Add `environmentVariablesKey` field for `com.databricks.sdk.service.jobs.Task`.
* Add `jobId` and `pipelineId` fields for `com.databricks.sdk.service.ml.MaterializedFeature`.
* Change `commandPath` field for `com.databricks.sdk.service.jobs.DeploymentSpec` to no longer be required.
* [Breaking] Change `commandPath` field for `com.databricks.sdk.service.jobs.DeploymentSpec` to no longer be required.
* Change `apiSecretRef` field for `com.databricks.sdk.service.ml.SchemaRegistryConfig` to no longer be required.
* [Breaking] Change `apiSecretRef` field for `com.databricks.sdk.service.ml.SchemaRegistryConfig` to no longer be required.

## Release v0.157.0 (2026-09-25)

### API Changes
* Add `com.databricks.sdk.service.mason` package.
Expand Down
2 changes: 1 addition & 1 deletion databricks-sdk-java/lockfile.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"artifactId": "databricks-sdk-java",
"groupId": "com.databricks",
"version": "0.157.0",
"version": "0.158.0",
"lockFileVersion": 1,
"dependencies": [
{
Expand Down
2 changes: 1 addition & 1 deletion databricks-sdk-java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.databricks</groupId>
<artifactId>databricks-sdk-parent</artifactId>
<version>0.157.0</version>
<version>0.158.0</version>
</parent>
<artifactId>databricks-sdk-java</artifactId>
<name>Databricks SDK for Java</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.157.0";
private static final String version = "0.158.0";

public static void withProduct(String product, String productVersion) {
UserAgent.product = product;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.

package com.databricks.sdk.service.aifunctions;

import com.databricks.sdk.support.Generated;
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Objects;

/** ai_decide */
@Generated
public class AiDecideOptions {
/** The function API version to invoke. Defaults to "1.0". Supported versions: ["1.0"]. */
@JsonProperty("version")
private String version;

public AiDecideOptions 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;
AiDecideOptions that = (AiDecideOptions) o;
return Objects.equals(version, that.version);
}

@Override
public int hashCode() {
return Objects.hash(version);
}

@Override
public String toString() {
return new ToStringer(AiDecideOptions.class).add("version", version).toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.

package com.databricks.sdk.service.aifunctions;

import com.databricks.sdk.support.Generated;
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.Objects;

@Generated
public class AiDecideRequest {
/** Function options. Omitted fields fall back to their documented defaults. */
@JsonProperty("options")
private AiDecideOptions options;

/**
* A JSON object mapping question IDs to their definitions. Choose a nonempty string for each ID;
* its answer is returned with the same ID in `response.answers`.
*
* <p>Each definition is an object with the required fields `type` and `instructions`. The
* `criteria` field is optional for the type `noul` but is required for the types `choice` and
* `score`.
*
* <p>The `instructions` field describes the judgment to make and can be a string, object, or
* array. Use an object or array to include supporting context alongside the instructions.
*
* <p>The `type` can be one of:
*
* <p>- `choice`: Selects one option from a defined set. Requires `criteria` to be an object
* mapping 1 to 255 nonempty option names to descriptions. The criteria description can be a
* string, object, array, or null when the name needs no additional detail. For example:
*
* <p>```json { "team": { "type": "choice", "instructions": "Which team should handle this
* ticket?", "criteria": { "billing": "Payments, charges, and refunds", "technical_support": null
* } } } ```
*
* <p>- `noul`: Estimates the probability that the answer to a true-or-false question is true.
* `criteria` can take the fields `true` or `false`, or both, with descriptions that are strings,
* objects, or arrays. Omit `criteria` to use the question alone. For example, both of the
* following are valid:
*
* <p>```json { "escalate": { "type": "noul", "instructions": "Does this ticket need escalation?",
* "criteria": { "true": "Suspected fraud or an exception to standard policy", "false": "A routine
* issue frontline support can resolve" } } } ```
*
* <p>or
*
* <p>```json { "escalate": { "type": "noul", "instructions": "Does this ticket need escalation?"
* } } ```
*
* <p>- `score`: Rates the state on an ordered scale. Requires `criteria` to be an array of 2 to
* 10 level descriptions, ordered from low to high. Descriptions can be strings, objects, or
* arrays. Array positions define levels starting at 0. For example:
*
* <p>```json { "urgency": { "type": "score", "instructions": "How urgent is this ticket?",
* "criteria": [ "Routine: can wait a few days", "Time-sensitive: needs attention today",
* "Critical: needs immediate action" ] } } ```
*/
@JsonProperty("questions")
private JsonNode questions;

/**
* A string, JSON object, or array containing the content, related context, and examples needed to
* answer the provided questions. For example, provide a support message, a conversation, or
* records describing the current state of an application. All questions receive this same state.
*/
@JsonProperty("state")
private JsonNode state;

public AiDecideRequest setOptions(AiDecideOptions options) {
this.options = options;
return this;
}

public AiDecideOptions getOptions() {
return options;
}

public AiDecideRequest setQuestions(JsonNode questions) {
this.questions = questions;
return this;
}

public JsonNode getQuestions() {
return questions;
}

public AiDecideRequest setState(JsonNode state) {
this.state = state;
return this;
}

public JsonNode getState() {
return state;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AiDecideRequest that = (AiDecideRequest) o;
return Objects.equals(options, that.options)
&& Objects.equals(questions, that.questions)
&& Objects.equals(state, that.state);
}

@Override
public int hashCode() {
return Objects.hash(options, questions, state);
}

@Override
public String toString() {
return new ToStringer(AiDecideRequest.class)
.add("options", options)
.add("questions", questions)
.add("state", state)
.toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.

package com.databricks.sdk.service.aifunctions;

import com.databricks.sdk.support.Generated;
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.Objects;

@Generated
public class AiDecideResponse {
/** Metadata identifying the function API version used for this request. */
@JsonProperty("metadata")
private AiDecideResponseMetadata metadata;

/**
* A JSON object containing an `answers` map with one answer for each question, keyed by the same
* IDs as `questions`.
*
* <p>Each answer has a `type` matching its question and the following fields:
*
* <p>- `choice`: choice is the highest-probability option from `criteria`. `probabilities` maps
* every option name to its probability. `confidence` is a number from 0 to 1 indicating how well
* the state supports the assessment. The `probabilities` values sum to 1. For example:
*
* <p>```json { "answers": { "team": { "type": "choice", "choice": "billing", "probabilities": {
* "billing": 0.85, "technical_support": 0.15 }, "confidence": 0.9 } } } ```
*
* <p>- `noul`: `probability` is a number from 0 to 1 estimating the probability that the answer
* is true. For example:
*
* <p>```json { "answers": { "escalate": { "type": "noul", "probability": 0.8 } } } ```
*
* <p>- `score`: score is the probability-weighted mean of the zero-based level indices. It can
* fall between levels, from 0 to the number of levels minus 1. `probabilities` maps each level
* index to its probability, and `legend` maps each index to its original description. Both maps
* use string keys such as "0", "1", and "2". `confidence` is a number from 0 to 1 indicating how
* well the state supports the assessment. The `probabilities` values sum to 1. For example:
*
* <p>```json { "answers": { "urgency": { "type": "score", "score": 1.6, "probabilities": { "0":
* 0.1, "1": 0.2, "2": 0.7 }, "legend": { "0": "Routine: can wait a few days", "1":
* "Time-sensitive: needs attention today", "2": "Critical: needs immediate action" },
* "confidence": 0.85 } } } ```
*/
@JsonProperty("response")
private JsonNode response;

public AiDecideResponse setMetadata(AiDecideResponseMetadata metadata) {
this.metadata = metadata;
return this;
}

public AiDecideResponseMetadata getMetadata() {
return metadata;
}

public AiDecideResponse setResponse(JsonNode response) {
this.response = response;
return this;
}

public JsonNode getResponse() {
return response;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AiDecideResponse that = (AiDecideResponse) o;
return Objects.equals(metadata, that.metadata) && Objects.equals(response, that.response);
}

@Override
public int hashCode() {
return Objects.hash(metadata, response);
}

@Override
public String toString() {
return new ToStringer(AiDecideResponse.class)
.add("metadata", metadata)
.add("response", response)
.toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.

package com.databricks.sdk.service.aifunctions;

import com.databricks.sdk.support.Generated;
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Objects;

@Generated
public class AiDecideResponseMetadata {
/** The function API version used to evaluate the request. */
@JsonProperty("version")
private String version;

public AiDecideResponseMetadata 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;
AiDecideResponseMetadata that = (AiDecideResponseMetadata) o;
return Objects.equals(version, that.version);
}

@Override
public int hashCode() {
return Objects.hash(version);
}

@Override
public String toString() {
return new ToStringer(AiDecideResponseMetadata.class).add("version", version).toString();
}
}
Loading
Loading